【发布时间】:2020-11-18 16:25:30
【问题描述】:
根据this 文档,我已经完成了所有工作并获得了如下所述的最终 URL:
https://dialogflow-twilio-4syckuoz4a-uc.a.run.app
在消息传递 webhook 中将此 URL 设置为 HTTP POST 方法。当我在浏览器中检查此 URL 且未收到任何输出时,它显示为“Cannot GET /”。
在 Twilio 设置中禁用 SSL 验证。使用 http 和 https 进行检查,但两者都不起作用。在 twilio 调试器中收到错误 11200。我错过了什么。请帮帮我。
这是根据文档的 server.js 脚本
const express = require('express');
const request = require('request');
const app = express();
const dialogflowSessionClient =
require('../botlib/dialogflow_session_client.js');
const bodyParser = require('body-parser');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
const projectId = 'xxxxxxxxxx';
const phoneNumber = "xxxxxxxxxx";
const accountSid = 'xxxxxxxxxx';
const authToken = 'xxxxxxxxxxxxxxx';
const client = require('twilio')(accountSid, authToken);
const MessagingResponse = require('twilio').twiml.MessagingResponse;
const sessionClient = new dialogflowSessionClient(projectId);
const listener = app.listen(process.env.PORT, function() {
console.log('Your Twilio integration server is listening on port '
+ listener.address().port);
});
app.post('/', async function(req, res) {
const body = req.body;
const text = body.Body;
const id = body.From;
const dialogflowResponse = (await sessionClient.detectIntent(
text, id, body)).fulfillmentText;
const twiml = new MessagingResponse();
const message = twiml.message(dialogflowResponse);
res.send(twiml.toString());
});
process.on('SIGTERM', () => {
listener.close(() => {
console.log('Closing http server.');
process.exit(0);
});
});
【问题讨论】:
-
嗨@Shenbagavalli,因为它是一种 POST 方法,我认为您不能对该 URL 发出 GET 请求。您是否尝试过使用Twilio Sandbox for WhatsApp?。为了证实您没有跳过步骤,this 视频可能会有所帮助。
-
@MarianaAngeles 是的,我已经为 whatsapp 设置了 Twilio 沙箱。根据视频,我已经完成了所有操作,但收到了同样的错误。
-
基于Twilio Docs 似乎这可能是 Dialogflow 和 Twilio 连接之间的问题,或者代理返回时间过长。基于此,您能否收集以下信息: 1. 完整错误消息的屏幕截图 2. 您是否修改了 Dockerfile 将集成变量设置为“twilio”? 3. 您是否将您的服务帐户 JSON 密钥文件复制到所需的平台子目录?
-
4.执行deployment to live 时,您是否将“YOUR_KEY_FILE”替换为您的服务帐户 JSON 密钥文件的名称(而不是路径)?请不要忘记添加 JSON 扩展名(例如:test_key.json) 5. 您是否测试过来自Dialogflow simulator 的代理,以便丢弃代理内部的一些问题。
-
@MarianaAngeles 感谢您的回复。我已编辑问题,请查看
标签: node.js twilio dialogflow-es dialogflow-es-fulfillment twilio-programmable-chat