如何在对话流中使用内联编辑器触发 POST 请求?
How to fire POST request using inline editor in dialogflow?
代码:
var rp = require('request-promise');
var options = {
method: 'POST',
uri: 'http://c663fe13.ngrok.io/ap/lighton',
body: {"color": 'white'},
json: true // Automatically stringifies the body to JSON
};
rp(options)
.then(function (parsedBody) {
// POST succeeded...+
console.log("parsedBody", parsedBody);
})
.catch(function (err) {
// POST failed...
console.log("err", err);
});
但这给了我以下错误:
{ RequestError: Error: getaddrinfo EAI_AGAIN c663fe13.ngrok.io:80
at new RequestError (/srv/node_modules/request-promise-core/lib/errors.js:14:15)
at Request.plumbing.callback (/srv/node_modules/request-promise-core/lib/plumbing.js:87:29)
at Request.RP$callback [as _callback] (/srv/node_modules/request-promise-core/lib/plumbing.js:46:31)
. . .
name: 'RequestError', message: 'Error: getaddrinfo EAI_AGAIN
c663fe13.ngrok.io:80',
cause: { Error: getaddrinfo EAI_AGAIN
c663fe13.ngrok.io:80
at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:67:26)
errno: 'EAI_AGAIN',
code: 'EAI_AGAIN',
syscall: 'getaddrinfo',
hostname: 'c663fe13.ngrok.io',
host: 'c663fe13.ngrok.io',
port: 80 },
我试着用邮递员给它打电话 API,它工作正常。
如果您使用的是免费帐户,您将无法通过 Firebase 云功能访问任何第 3 方服务。如果您要使用免费帐户,最好写下自己的 webhook 代码并使用 fulfillment 将该 webhook 与您的 Dialogflow 代理集成。
更新
查看我分享的代码片段 here。您可以使用它来集成 ExpressJS,然后添加您的 POST 代码并在本地托管它。使用 ngrok 公开本地服务器,然后将 URL 放入 fulfillment.
代码:
var rp = require('request-promise');
var options = {
method: 'POST',
uri: 'http://c663fe13.ngrok.io/ap/lighton',
body: {"color": 'white'},
json: true // Automatically stringifies the body to JSON
};
rp(options)
.then(function (parsedBody) {
// POST succeeded...+
console.log("parsedBody", parsedBody);
})
.catch(function (err) {
// POST failed...
console.log("err", err);
});
但这给了我以下错误:
{ RequestError: Error: getaddrinfo EAI_AGAIN c663fe13.ngrok.io:80 at new RequestError (/srv/node_modules/request-promise-core/lib/errors.js:14:15) at Request.plumbing.callback (/srv/node_modules/request-promise-core/lib/plumbing.js:87:29) at Request.RP$callback [as _callback] (/srv/node_modules/request-promise-core/lib/plumbing.js:46:31)
. . .
name: 'RequestError', message: 'Error: getaddrinfo EAI_AGAIN c663fe13.ngrok.io:80',
cause: { Error: getaddrinfo EAI_AGAIN c663fe13.ngrok.io:80 at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:67:26) errno: 'EAI_AGAIN', code: 'EAI_AGAIN', syscall: 'getaddrinfo', hostname: 'c663fe13.ngrok.io', host: 'c663fe13.ngrok.io', port: 80 },
我试着用邮递员给它打电话 API,它工作正常。
如果您使用的是免费帐户,您将无法通过 Firebase 云功能访问任何第 3 方服务。如果您要使用免费帐户,最好写下自己的 webhook 代码并使用 fulfillment 将该 webhook 与您的 Dialogflow 代理集成。
更新 查看我分享的代码片段 here。您可以使用它来集成 ExpressJS,然后添加您的 POST 代码并在本地托管它。使用 ngrok 公开本地服务器,然后将 URL 放入 fulfillment.