Dialogflow实现Webhook连接失败

时间:2019-12-09 03:12:50

标签: python google-cloud-platform dialogflow chatbot

我正在尝试使用DialogFlow实现Webhook进入我的应用程序,但是每当我发出请求时,它都会返回:

  

POST / webhook 500内部服务器错误

来自ngrok。 我检查了dialogflow和ngrok连接上的几乎所有内容,却一无所获

WebHook URL

https://3aa04ed7.ngrok.io/webhook

main.py

 @app.route('/webhook', methods=['POST'])
def webhook():
    req = request.get_json(silent=True, force=True)

    print("Request:")
    print(json.dumps(req, indent=4))

    res = processRequest(req)
    res = json.dumps(res, indent=4)

    print("Response:")
    print(res)

    response = make_response(res)
    response.headers['Content-Type'] = 'application/json'
    return response


def processRequest(req):
    print("Processing request")
    result = req.get("result")
    # contexts = result.get("contexts")
    action = result.get("action")

    if action == "givesymptoms":
        return giveSymptoms(req)
    elif action == "followup":
        return followUp(req)
    return result

终端错误

Processing request
127.0.0.1 - - [09/Dec/2019 04:56:40] "POST /webhook HTTP/1.1" 500 -
Traceback (most recent call last):
  File "C:\Python27\lib\site-packages\flask\app.py", line 2328, in __call__
    return self.wsgi_app(environ, start_response)
  File "C:\Python27\lib\site-packages\flask\app.py", line 2314, in wsgi_app
    response = self.handle_exception(e)
  File "C:\Python27\lib\site-packages\flask\app.py", line 1760, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "C:\Python27\lib\site-packages\flask\app.py", line 2311, in wsgi_app
    response = self.full_dispatch_request()
  File "C:\Python27\lib\site-packages\flask\app.py", line 1834, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "C:\Python27\lib\site-packages\flask\app.py", line 1737, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "C:\Python27\lib\site-packages\flask\app.py", line 1832, in full_dispatch_request
    rv = self.dispatch_request()
  File "C:\Python27\lib\site-packages\flask\app.py", line 1818, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "C:\Users\User\Desktop\HomeDoctor-master\HomeDoctor-master\main.py", line 41, in webhook
    res = processRequest(req)
  File "C:\Users\User\Desktop\HomeDoctor-master\HomeDoctor-master\main.py", line 56, in processRequest
    action = result.get("action")
AttributeError: 'NoneType' object has no attribute 'get'

1 个答案:

答案 0 :(得分:1)

在您的processRequest函数中

result = req.get("result")

不返回任何值,因此,当您尝试在None类型的对象中调用get('action')时,它会引发 'NoneType'对象没有属性'get' < / p>

所以您可以使用类似的东西

result = req.get("result", {})
# if there is no key with 'result' in that dict req.get("result", {}) returns {}
action = result.get("action") 
# if there is no key with "action" in result object action carries None type
相关问题