如何使用 dialogflow.v2beta1 创建默认响应

Posted

技术标签:

【中文标题】如何使用 dialogflow.v2beta1 创建默认响应【英文标题】:How to create a default response using dialogflow.v2beta1 【发布时间】:2019-10-02 12:03:00 【问题描述】:

我有以下 (kotlin) 代码:

import com.google.cloud.dialogflow.v2beta1.*

val project = "my-super-agent"

val trainingPhraseBuilder = Intent.TrainingPhrase.Part.newBuilder()
trainingPhraseBuilder.text = "Tell me about the product."
val trainingPhrasePart = trainingPhraseBuilder.build()
println(trainingPhrasePart)

var i = with(Intent.newBuilder()) 
    displayName = "My First Built Intent"
    addTrainingPhrases(Intent.TrainingPhrase.newBuilder().addAllParts(listOf(trainingPhrasePart)))
    val message =
        with(addMessagesBuilder()) 
            basicCardBuilder.setFormattedText("It is amazing. Truly it is.")
            build()
        
    build()

当然还有

IntentsClient.create().use( intentsClient ->

    val intrequest = CreateIntentRequest.newBuilder()
        .setParent("projects/$project/agent")
        .setIntent(i)
        .build()

    val response1 = intentsClient.createIntent(intrequest)

)

但是对于我的生活,我无法弄清楚如何在本节中创建一个琐碎的条目:

基本卡片出现在 Google 助理部分(很明显)。

为了创建默认的简单默认响应,我缺少什么?如果您在想“哦,这很容易 - 它是......”那么是的,你是对的 - 这很简单,我只是找不到它。

FWIW。我的一些(不工作)尝试看起来像:

var sr = Intent.Message.SimpleResponse.newBuilder()
sr.setDisplayText("Pleeeeaaaassssseeee")
val simpleReponseMessage = sr.build()

addMessagesBuilder()
.simpleResponsesBuilder
.addSimpleResponses(simpleReponseMessage)
.build()

【问题讨论】:

【参考方案1】:

虽然我自己没有做过,但我指的是 REST API,发现 Intent 有一个 Message 类型,它可以是一个集合响应。

消息应该有一个名为SimpleResponses 的字段,它是一个SimpleResponse 对象的数组。

这应该会更新控制台。看起来它们出现在 Google 助理 中,因为 Message 类型有一个 Platform 类型的可选字段。我不确定默认值是什么,但PLATFORM_UNSPECIFIED 会将其放在正确的部分吗?

实现看起来类似于(使用dialogflow 包):

const intentsClient = new dialogflow.IntentsClient();
const parent = intentsClient.projectAgentPath(projectId);
const dfIntent = 
  // Put other values in here
  // ...
  messages: [
    platform: 'PLATFORM_UNSPECIFIED',
    text: [ 'Default message' ]
  ]

// Or execute updateIntent if it already exists
const creationResponse = await intentsClient.createIntent(
  parent,
  languageCode: 'en',
  intent: dfIntent
)

我还没有测试 sn-p 的行为,但这应该会添加一个通用的文本响应。

【讨论】:

当然 - 但我不知道如何使用 API 来实现这一点。你有代码行吗? 我已经用 Node.js sn-p 更新了您通常需要实现的代码的答案。我认为,根据阅读文档,许多响应类型仅用于 Google 助理部分,例如 simpleResponses。文本字段应该是通用的。 谢谢尼克 - 但我需要一个 java / kotlin 解决方案,因为它需要与平台的其余部分集成,这需要 builderSimpleResponse.newBuilder() 的东西...... 如果你理解了上面的sn-p,你应该可以调整逻辑来适应你选择的语言 好像可以addMessagesBuilder().setPlatform(...).addText(...).build()【参考方案2】:
 addMessagesBuilder().setPlatform(Intent.Message.Platform.PLATFORM_UNSPECIFIED).setText(Intent.Message.Text.newBuilder().addText("ffs")).build()

【讨论】:

以上是关于如何使用 dialogflow.v2beta1 创建默认响应的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Azure 存储位置创建子容器

如何在 testflight 上创建一组测试人员

如何使用条件 Api 创建子查询

如何从 MATLAB 中的矩阵创建子矩阵(全部 5*5)?

如何使用 Laravel Eloquent 创建子查询?

如何使用 Plotly Express 创建子图