Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何直接在Dialogflow上获取文本响应?_Python_Dialogflow Es_Chatbot - Fatal编程技术网

Python 如何直接在Dialogflow上获取文本响应?

Python 如何直接在Dialogflow上获取文本响应?,python,dialogflow-es,chatbot,Python,Dialogflow Es,Chatbot,我正试图从dialogflow获得直接的文本响应。我确实从github上的示例代码中得到了答案,但这一点都不友好。我怎样才能得到“仅限演讲”的回答 import os.path import sys try: import apiai except ImportError: sys.path.append( os.path.join(os.path.dirname(os.path.realpath(__file__)), os.pardir) )

我正试图从dialogflow获得直接的文本响应。我确实从github上的示例代码中得到了答案,但这一点都不友好。我怎样才能得到“仅限演讲”的回答

import os.path
import sys

try:
    import apiai
except ImportError:
    sys.path.append(
        os.path.join(os.path.dirname(os.path.realpath(__file__)), os.pardir)
    )
    import apiai

CLIENT_ACCESS_TOKEN = 'YOUR_ACCESS_TOKEN'


def main():
    ai = apiai.ApiAI(CLIENT_ACCESS_TOKEN)

    request = ai.text_request()

    request.lang = 'de'  # optional, default value equal 'en'

    request.session_id = "<SESSION ID, UNIQUE FOR EACH USER>"

    request.query = "Hello"

    response = request.getresponse()

    print (response.read())


if __name__ == '__main__':
    main()
导入操作系统路径
导入系统
尝试:
进口apiai
除恐怖外:
sys.path.append(
join(os.path.dirname(os.path.realpath(_文件__)),os.pardir)
)
进口apiai
客户端\u访问\u令牌='您的\u访问\u令牌'
def main():
ai=apiai.apiai(客户端访问令牌)
request=ai.text\u request()
request.lang='de'#可选,默认值等于'en'
request.session_id=“”
request.query=“你好”
response=request.getresponse()
打印(response.read())
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
main()
我只是期待一个简单的结果。简单的问候语


取而代之的是:“
b'{\n“id”:“306fd06a-d9e6-4c2e-8c05-98ff7fc0ecd5”、\n“时间戳”:“2017-12-05T22:18:15.563Z”、\n“lang”:“en”、\n“结果”:{\n“源”:“代理”、\n“解析查询”:“hi“intentId”:“8406ea3a-a0c9-4470-829f-ABA0CE2EDA2E5”、\n“webhookUsed”:“false”、\n“WebHookForSlotFillingued”:“false”、\n“intentName”:“默认欢迎意图”\n}、\n“履行”:{\n“讲话”:“您好!”、\n“消息”:[\n{\n{\n\n类型:0、\n“讲话”:“您好!”\n}\n\n},\n“score”:1.0\n}、\n“alternateResult”:{\n“源”:“域”、\n“解析查询”:“嗨”、\n“操作”:“smalltalk.Greeties.hello”、\n“ActionComplete”:false、\n“参数”:{}、\n“上下文”:[]、\n“元数据”:{}、\n“实现”:{\n“语音”:“嘿!”,\n“源”:“代理”\n}、\n“分数”:1.0\n},\n“status”:{\n“code”:200、\n“errorType”:“success”、\n“webhookTimedOut”:false\n}、\n“sessionId”:“mr.9000”\n}

只需按此方式获取消息:

response = json.loads(request.getresponse().read().decode('utf-8'))
message = response['result']['fulfillment']['speech']
print (message)
别忘了加上

import json
首先,如果您还没有安装它,请安装它。如果您想在python中处理json,就必须安装它。 告诉我它是否有效

看起来您正在使用。响应的格式有文档记录。您必须解析JSON。最常见的方法是

  • 使用需要导入的
    json
    模块(即文件顶部的
    import json
  • 接下来,您需要加载通过加载方法收到的JSON字符串(即,在定义
    response
    后添加一行):
    response\u dict=JSON.loads(response.read())
  • 最后,您需要从
    response\u dict
    对象中检索正确的字符串:
    print(response\u dict。['result']['resolvedQuery'])

  • TypeError:“HTTPResponse”对象不可订阅。我希望它能工作。名称“json”没有定义。我觉得我们在某种程度上很接近。哦,这很简单。只需导入json。如果它没有安装,请pip安装它。一切如何?我的输入如何?一切如何?响应就是我写的。过程结束,退出代码为0感谢您接受答案!我已经更新了答案以显示相同的答案,以便其他人可以参考。:D