Как создать ответ по умолчанию, используя dialogflow.v2beta1 - PullRequest
8 голосов
/ 15 мая 2019

У меня есть следующий (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 Assistant (очевидно).

Чего мне не хватает для создания простых ответов по умолчанию? Если вы думаете «о, это просто - это ...», тогда да, вы правы - это просто, я просто не могу найти это.

FWIW. Некоторые из моих (не работающих) попыток выглядят так:

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

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

Ответы [ 2 ]

1 голос
/ 17 мая 2019

Хотя я сам этого не сделал, я имею в виду API REST и обнаружил, что Intent имеет тип Message , который может быть ответом на коллекцию.

Сообщение должно иметь поле с именем SimpleResponses , которое является массивом SimpleResponse объектов.

Это должно обновить консоль.Похоже, они появляются в Google Assistant , поскольку тип сообщения имеет необязательное поле типа Платформа .Я не уверен, каково значение по умолчанию, но будет ли 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
})

Я не проверял поведение фрагмента, но это должно добавить общий текстовый ответ.

0 голосов
/ 21 мая 2019
 addMessagesBuilder().setPlatform(Intent.Message.Platform.PLATFORM_UNSPECIFIED).setText(Intent.Message.Text.newBuilder().addText("ffs")).build()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...