【问题标题】:No response from my webhook on Dialogflow我的 Dialogflow 上的 webhook 没有响应
【发布时间】:2020-11-08 10:22:23
【问题描述】:

这是我的服务器中的代码:

const express = require('express');
const bodyParser = require('body-parser');

const appExpress = express().use(bodyParser.json());

const {
  dialogflow,
  Image,
} = require('actions-on-google')

const app = dialogflow()

appExpress.post('/hook', express.json() ,(req, res) => {

  app.intent('MyIntent', conv => {
    conv.ask('Hi, how is it going?')
  });

});

appExpress.listen(3333, ()=>console.log("Server is live at port 3333"));

当我运行它时,它不会返回任何错误(我看到消息“服务器处于活动状态..”),而且当我向我的机器人发送带有意图“MyIntent”的消息时,我没有收到任何错误,但也没有响应..

如果我查看诊断信息,在履行状态下会出现以下错误:

Webhook 调用失败。错误:DEADLINE_EXCEEDED。

我做错了什么?

【问题讨论】:

  • 您是否检查了实现的 webhook 服务以实现记录的requirements
  • 是的@Nick_Kh,当我使用“dialogflow-fulfillment”库返回响应时,它实际上工作正常。但现在我需要使用“actions-on-google”库,但我没有得到我需要更改的内容以使其工作..
  • 这能回答你的问题吗?它是一个 actionsSdk 示例,但 Dialogflow 集成应该以相同的方式工作。您应该设置 Dialogflow 对象来处理 req、res 参数。 Create actions-on-google object from Express request
  • 嗨@Jordi,我试过了,但现在我收到错误“找不到句柄名称的处理程序”但我使用的名称实际上是我的意图之一的名称..
  • @onaizit,你能分享一下你用来检索 req,res 参数的代码吗?

标签: node.js dialogflow-es webhooks actions-on-google dialogflow-es-fulfillment


【解决方案1】:

我不知道那个 google 库应该如何工作,但通常在使用 express 时,您最常通过发送响应来关闭 HTTP 请求,这里有几个示例

https://expressjs.com/en/guide/routing.html

你可以尝试在convo.ask之后添加这个

res.sendStatus(200);

【讨论】:

  • 谢谢CommonCoreTawan,但我认为这不是问题所在。当我为意图添加响应消息时,应该由谷歌库发送响应。问题是它甚至没有进入 app.intent 块(如果我把控制台日志放在那里它不会打印它)
  • 尝试从 post 路由中删除 express.json。也许它卡在那个中间件中
  • 您是如何发送请求的?通过浏览器,一些代码等?请编辑您的问题并显示出来。
  • 我展示的代码是我的名为“index.js”的文件的完整代码。然后在 Dialogflow 上我指定了我的 webhook 服务器的 URL,所以每次我向我的聊天机器人发送消息时,Dialogflow 都会向我的服务器发送一个请求
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多