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

时间:2019-05-15 10:58:50

标签: java kotlin dialogflow

我有以下(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)

})

但是对于我一生来说,我无法在本节中找出如何创建一个简单条目:enter image description here

基本卡片显示在Google助手部分(很明显)。

要创建默认的简单默认响应,我缺少什么?如果您正在考虑“哦,这很容易-是....”,那么您是正确的-很简单,我只是找不到它。

FWIW。我的一些尝试(无效)如下:

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

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

2 个答案:

答案 0 :(得分:1)

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

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

这应该更新控制台。看起来它们出现在 Google助手中,因为“消息”类型具有类型为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
})

我尚未测试代码段的行为,但这应该添加通用的文本响应。

答案 1 :(得分:0)

 addMessagesBuilder().setPlatform(Intent.Message.Platform.PLATFORM_UNSPECIFIED).setText(Intent.Message.Text.newBuilder().addText("ffs")).build()