使用api

时间:2019-02-18 14:46:37

标签: dialogflow chatbot

我想针对对话框流代理的特定意图更新(添加)响应。
假设有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

如何将其添加为第四响应?

更新:
我尝试将文本字段添加到intent.messages的Text对象,但是找不到添加文本字段的任何方法。

intent.messages[0].text  
  

文本:“第一响应”
  文字:“第二响应”
  文字:“第三响应”

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 :(得分:1)

这看起来像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)