python - 如何从 ValuesView 获取值(value)?尝试理解我的机器人的 Dialogflow 响应

标签 python json python-3.x dictionary dialogflow-es

我正在尝试使用 DialogFlow、Twilio 和 Flask 创建一个机器人,但目前我遇到了一些看起来很简单但找不到很多答案的问题。

基本上,我使用以下函数从 Dialogflow 获取 json 答案:

def fetch_reply(query, session_id):
    #gets response from DialogFlow
    response = detect_intent_from_text(query, session_id)
    resp = {}
    #Understading response and seeting it to a dictionary
    print(response)
    resp['text']=response.fulfillment_text
    resp['intent']=response.intent.display_name
    resp['parameters'] = response.parameters.fields.values()
    return resp

我打印了完整的回复,它给出了以下内容:

query_text: "Tim\303\243o"
parameters {
  fields {
    key: "soccerteams"
    value {
      string_value: "Corinthians"
    }
  }
}
all_required_params_present: true
fulfillment_messages {
  text {
    text: ""
  }
}
intent {
  name: "projects/whatsappbotsports-ylml/agent/intents/e7bcf0f5-d37f-4c8b-81ad-09579fded36a"
  display_name: "Default Team Request"
}
intent_detection_confidence: 1.0
language_code: "pt-br"

但是当我打印 resp['parameter'] 时,我的结果是:

ValuesView({'soccerteams': string_value: "Corinthians"
})

我需要访问的是“Corinthians”,或者 string_value 的值,但我找不到方法来做到这一点。如果我尝试使用 resp['parameter'].value 或 resp['parameter'].string_value ,它会告诉我 ValuesView 没有此属性。

知道如何做吗?

最佳答案

这是一些非常奇怪的输出。它不是 JSON,因为键周围没有引号。

你能尝试这样的事情吗?

import json
from google.protobuf.json_format import MessageToJson

def fetch_reply(query, session_id):
    #gets response from DialogFlow
    response = detect_intent_from_text(query, session_id)
    # trying to parse json
    soccerteams = response.parameters.fields["soccerteams"]
    soccerteams_json = json.loads(MessageToJson(soccerteams))
    return soccerteams_json

然后尝试从json中获取值。

这只是我尝试修改此代码:Get Dialogflow context parameters from a follow up intent in Python

让我知道它是否有效。如果没有,请发送一些输出。

关于python - 如何从 ValuesView 获取值(value)?尝试理解我的机器人的 Dialogflow 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63653254/

相关文章:

python - 找到最大 k 个整数的时间复杂度是多少?

python - Python 中的现代、高性能布隆过滤器?

python - 如何从 SQL 查询创建 JSON 文件?

json - 使用 jq 从 JSON 文件中提取某些信息

mysql - 使用 JDBC 对数据进行分组

python - 在远程服务器上运行本地 python 脚本

python - 优化用于在 Python 中创建一起评分的项目列表的算法

javascript - 使用 AJAX/JSON 自动更新动态

python - 如何评估列表中的列表,列表中具有不同的属性(int,str,list):

python - 为什么 tf.Print() 不起作用?