dialogflow python SDK:如何解析 DetectIntentResponse

cal*_*iph 3 python dialogflow-es

我正在从 dialogflow V1 移动到 V2。使用 dialogflow python SDK,我收到一个 DetectIntentResponse 结构对象,其中应该包含我需要的信息。

在尝试查找文档并尝试检查此对象一段时间后,我需要您的帮助。这个对象远远超出我的范围......

对于文档,这就是我获取响应对象的方式:

import dialogflow_v2 as dialogflow
session_client = dialogflow.SessionsClient()
session = session_client.session_path(project_id, session_id)
text_input = dialogflow.types.TextInput(text=text, language_code=language_code)
query_input = dialogflow.types.QueryInput(text=text_input)
response = session_client.detect_intent(session=session, query_input=query_input)
Run Code Online (Sandbox Code Playgroud)

如何解析响应?

例如,我通过使用获得了一些参数结构response.query_result.parameters但是我如何获得这个列表?

也许我可以将响应转换为 json(这会让事情变得很容易)?

我需要字典、列表、字符串... :)

小智 5

您可以MessageToJsongoogle.protobuf项目中使用。(谷歌的协议缓冲区)

#import the function
from google.protobuf.json_format import MessageToJson

#...after getting the response = session_client.detect_intent(...)
json_response = MessageToJson(response)
Run Code Online (Sandbox Code Playgroud)

您可以转换包含在DetectIntentResponse诸如QueryResultbyMessageToJson(response.query_result)等中的各种类型以获得特定响应。

我的回答是特定于DialogFlow但是我心领神会从这个答案在SO,回答有关蟒蛇一个更普遍的问题。

请注意,我google.protobuf.json_format.MessageToJson专门使用了因为 DialogFlow API V2 返回由 Google 定义的类对象。我不能保证这将适用于其他 Chatbot API(可能我也需要探索它)。