gpt4 book ai didi

python - 如何从 dialogflow API 访问 protobuf 响应中的信息

转载 作者:行者123 更新时间:2023-12-05 09:28:36 26 4
gpt4 key购买 nike

我在访问 google dialogflow api 后收到的 protobuf 对象的值时遇到严重问题

(... create google cloud session object ...)

text_input = dialogflow.types.TextInput(text=text, language_code=language_code)
query_input = dialogflow.types.QueryInput(text=text_input)
response = session_client.detect_intent(request={"session": session, "query_input": query_input})

from google.protobuf import json_format
response_json = json_format.MessageToDict(response)

错误是:

AttributeError: 'MapComposite' 对象没有属性 'DESCRIPTOR'

基本上我有两个问题:

a) 我无法将 protobuf 转换为 json(在这里我可以很容易地看到如何访问我正在寻找的信息)

b) 我无法理解 protobof 数据结构。有字典吗?

感谢 a) 或 b) 中的任何帮助者。

顺便说一句:我正在寻找一种在 API 响应中访问 response.parameters 的方法。


为斯科特编辑:

response.parameters 是一个对象:

这里描述了参数对象: https://cloud.google.com/dialogflow/es/docs/reference/rest/v2/DetectIntentResponse#QueryResult

这对你有意义吗?因为我不明白如何访问这个对象中的值。

最佳答案

您可以使用 MessageToDict 方法,如下所示,将 protobuf 序列化为字典,并使用 response._pb 而不是 response

from google.protobuf.json_format import MessageToDict
response_json = MessageToDict(response._pb)

现在,您现在可以浏览要访问的 parameters 的字典,如下所示,因为 parameters 位于 queryResult 内部/下方>(基于结构)。

print(response_json["queryResult"]["parameters"])

关于python - 如何从 dialogflow API 访问 protobuf 响应中的信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71256960/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com