如何从ValuesView中获取价值?试图理解我的机器人的Dialogflow响应

2024-10-02 02:32:06 发布

您现在位置:Python中文网/ 问答频道 /正文

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

基本上,我使用以下函数从Dialogflow获取de-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”,或者字符串的值,但是我找不到一种方法来实现它。如果我尝试使用resp['parameter'].value或resp['parameter'].string_值,它会告诉我ValuesView没有这个属性

知道怎么做吗


Tags: 答案textnameidstringparametervalueresponse
1条回答
网友
1楼 · 发布于 2024-10-02 02:32:06

这是一些非常奇怪的输出。它不是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

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

相关问题 更多 >

    热门问题