Обновите текстовые ответы в диалоге, используя API - PullRequest
0 голосов
/ 18 февраля 2019

Я хочу обновить (добавить) ответы для конкретного намерения агента диалогового потока.
Предположим, есть 3 ответа, как на рисунке ниже, и я хочу добавить 4-й ответ.response1

Я использовал update_intent метод, но не смог сделать это.

client = dialogflow.IntentsClient()
intent_name = client.intent_path(project_id, intent_id)
intent = client.get_intent(intent_name)
response_list = ['text response']
text = dialogflow.types.Intent.Message.Text(text=response_list)
message = dialogflow.types.Intent.Message(text=text)
intent.messages.extend([message])
response  = client.update_intent(intent, language_code='en')

Используя приведенный выше код, мой ответ добавляется, но в виде отдельного текстового ответа.
response2

Как добавить это как 4-йответ?

ОБНОВЛЕНИЕ:
Я попытался добавить текстовое поле в объект Text объекта intent.messages, но не смог найти какой-либо метод для добавления текстового поля.

intent.messages[0].text  

текст: «1-й ответ»
текст: «2-й ответ»
текст: «3-й ответ»

intent.messages[0].text.add()
*** AttributeError: 'Text' object has no attribute 'add'
intent.messages[0].text.append()
*** AttributeError: 'Text' object has no attribute 'append'
intent.messages[0].text = text
*** TypeError: Can't set composite field
intent.messages[0].Text = ''
*** AttributeError: Assignment not allowed (no field "Text" in protocol message object).

1 Ответ

0 голосов
/ 19 февраля 2019

Это похоже на Python-клиент, верно?

Поле intent.messages содержит коллекцию объектов расширенного сообщения, включая Text объектов.Объект Text содержит поле text, представляющее собой набор текстовых ответов.

Вы добавляете новый объект Text к intent.messages вместо добавления текстового ответа на первый Text объект в существующей коллекции intent.messages.

Звучит так, как будто вы должны пройти через intent.messages, чтобы найти первый Text объект, затемдобавьте другое текстовое значение в поле text этого объекта.Затем позвоните client.update_intent со значениями обновлений.

Как вы заметили в комментариях, вы можете сделать это с

intent.messages[0].text.text.append(response)
...