如何使用Flask Socket-io聊天应用程序从Google的Dialogflow获得响应



更新3:来自Miguel Grinberg:;与大多数谷歌API一样,Dialogflow与eventlet和gevent不兼容,谷歌也没有表现出增加支持的兴趣">

如果有人知道我如何让DialogFlow使用烧瓶插座,请告诉我。或者更普遍地说,构建一个包含机器人的python websocket聊天应用程序的好方法是什么?

更新2:

我找到了罪魁祸首。在我的代码顶部,在导入eventlet之后,我有这样一行:

eventlet.monkey_patch()

此行阻止对dialogFlow的访问。当我评论出来的时候,一切都很好。不幸的是,我认为这个补丁需要实现才能让socketio正常工作。

更多信息:https://github.com/miguelgrinberg/Flask-SocketIO/issues/696

更新1:

我按照本教程创建了另一个应用程序:https://medium.com/zenofai/creating-chatbot-using-python-flask-d6947d8ef805

这个应用程序要简单得多,只关注dialogFlow。我使用了与我的原始应用程序相同的谷歌项目和对话流凭据。这个新应用程序可以很好地与dialogFlow配合使用。为什么dialogFlow不能在我的原始应用程序中使用相同的谷歌项目、凭据和向dialogFlow发出请求的相同代码块?我的flask socketio聊天应用程序的其他部分有什么冲突吗?

原始帖子:

我正在尝试在我的flask socket io聊天应用程序中使用谷歌的Dialogflow实现。

它挂了几分钟,然后我得到了这个错误消息:

Deadline of 220.0s exceeded while calling functools.partial(<function _wrap_unary_errors.<locals>.error_remapped_callable at 0x00000189C3C77C80>, session: "projects/webhook-agent-tmpe/agent/sessions/riverscuomo"
query_input {
text {
text: "howdy"
language_code: "en"
}
}
, metadata=[('x-goog-request-params', 'session=projects/webhook-agent-tmpe/agent/sessions/riverscuomo'), ('x-goog-api-client', 'gl-python/3.6.3 grpc/1.32.0 gax/1.21.0 gapic/1.1.0')]), last exception: 503 Deadline Exceeded

我最终使用了Chatterbot:https://chatterbot.readthedocs.io/en/stable/

它与Heroku部署的flask socketio聊天应用程序配合使用。

最新更新