Dialogflow + external API + Google Cloud Functions *without* Firebase: how to return fulfillment response?(Dialogflow+外部API+Google Cloud Functions*没有*Firebase:如何返回履行响应?)
问题描述
我正在尝试构建一个Dialogflow聊天机器人,它通过Google Cloud函数从外部API获取数据,但是没有使用Firebase。尽管进行了广泛的搜索,但我没有找到任何好的示例或模板;似乎所有可用的示例都使用Firebase函数。
我是一个新手程序员,不熟悉Node.js、Promises和所有这些花哨的东西,但我知道即使没有Firebase(我使用的是Google Cloud的付费版本),也可以通过Dialogflow访问外部API。 我尝试使用以下Dialogflow天气API示例创建我的Google Cloud函数,这是我所能找到的最接近我需要的东西,尽管这也使用了Firebase: https://github.com/dialogflow/fulfillment-weather-nodejs/blob/master/functions/index.js#L72 问题是我的代码在"res.on(‘end’."莱恩和我都不知道为什么。Google Cloud Stackdriver日志只给出了一条相当不具信息性的消息"忽略已完成函数的异常",但没有告诉我异常是什么。
以下是我的index.js代码的编辑版本:
所以我的问题是:如何使此代码工作以将实现响应返回到Dialogflow?默认的欢迎和回退响应确实来自Google Cloud函数,但我的自定义意图WebHook响应不是这样(即使在用于my.search的Dialogflow中设置了"enable webhookcall")。
javascript
我确实遇到了同样的问题,正如您所说的,我认为这与推荐答案的承诺和异步行为有关。因为当您调用云函数时,此函数会执行然后响应,但此函数不会等待外部API调用。
我尝试了request客户端,但是当我看到日志视图时,云函数响应之后的外部API响应。
所以我选择使用axios(node.js的基于Promise的HTTP客户端),然后云函数就可以工作了。
这是Dialogflow+外部API+Google云函数的一个简单示例:
index.js
记住还要将axios
包添加到package.json
:
最后,这是我执行的POST Http查询,也许您会觉得有用。
来自Dialogflow的一些图像:
这篇关于Dialogflow+外部API+Google Cloud Functions*没有*Firebase:如何返回履行响应?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!