如何使用 Dialogflow 与 Heroku 通信
How to use Dialogflow communicating with Heroku
我目前已经使用 Google Cloud Functions、Firebase 构建了一个 DialogFlow 聊天机器人。一切正常,但我根本不想使用 firebase,我想使用 Heroku,我怎样才能让 DialogFlow 向 Heroku 服务发出请求。
我已经知道我应该添加 heroku 的 URL 并且必须是 HTTPS 和正确的响应格式。
我不知道的是,如何在使用 node.js 的 DailogFlow 和 Heroku 之间建立连接,以便我可以发送诸如
之类的响应
sendResponse('Hello, this is responsing from Heroku')
使用 firebase 我必须有这样的功能:
exports.dialogflowFirebaseFulfillment = functions.https.onRequest((request, response) => {
console.log('Dialogflow Request headers: ' + JSON.stringify(request.headers));
console.log('Dialogflow Request body: ' + JSON.stringify(request.body));
if (request.body.result) {
processV1Request(request, response);
} else if (request.body.queryResult) {
// processV2Request(request, response);
} else {
console.log('Invalid Request');
return response.status(400).end('Invalid Webhook Request (expecting v1 or v2 webhook request)');
}
});
我不知道在 Firebase 外部使用时是否需要这个,在这种情况下是 Heroku!另外,因为我没有使用 firebase,这段代码会发生什么:
functions.https.onRequest((request, response) => {
如果我不使用 firebase,我没有 "functions" 变量。
大部分代码可以原样使用 - Firebase Cloud Functions 在幕后使用 node.js/express.js,Dialogflow 库假定请求和响应对象来自 express.js使用 JSON 正文解析器中间件。
有问题的行是让 Firebase Cloud Functions 处理器发现并处理它的语法糖。所以你会替换那行
exports.dialogflowFirebaseFulfillment = functions.https.onRequest((request, response) => {
还有更像这样的东西
const express = require('express');
const app = express();
app.use( express.json() );
app.get('/', (req, res) => processWebhook( req, res ));
app.listen(3000, () => console.log('App listening on port 3000!'));
var processWebhook = function( request, response ){
// ... the console logging and all the processing goes here
我目前已经使用 Google Cloud Functions、Firebase 构建了一个 DialogFlow 聊天机器人。一切正常,但我根本不想使用 firebase,我想使用 Heroku,我怎样才能让 DialogFlow 向 Heroku 服务发出请求。
我已经知道我应该添加 heroku 的 URL 并且必须是 HTTPS 和正确的响应格式。
我不知道的是,如何在使用 node.js 的 DailogFlow 和 Heroku 之间建立连接,以便我可以发送诸如
之类的响应sendResponse('Hello, this is responsing from Heroku')
使用 firebase 我必须有这样的功能:
exports.dialogflowFirebaseFulfillment = functions.https.onRequest((request, response) => {
console.log('Dialogflow Request headers: ' + JSON.stringify(request.headers));
console.log('Dialogflow Request body: ' + JSON.stringify(request.body));
if (request.body.result) {
processV1Request(request, response);
} else if (request.body.queryResult) {
// processV2Request(request, response);
} else {
console.log('Invalid Request');
return response.status(400).end('Invalid Webhook Request (expecting v1 or v2 webhook request)');
}
});
我不知道在 Firebase 外部使用时是否需要这个,在这种情况下是 Heroku!另外,因为我没有使用 firebase,这段代码会发生什么:
functions.https.onRequest((request, response) => {
如果我不使用 firebase,我没有 "functions" 变量。
大部分代码可以原样使用 - Firebase Cloud Functions 在幕后使用 node.js/express.js,Dialogflow 库假定请求和响应对象来自 express.js使用 JSON 正文解析器中间件。
有问题的行是让 Firebase Cloud Functions 处理器发现并处理它的语法糖。所以你会替换那行
exports.dialogflowFirebaseFulfillment = functions.https.onRequest((request, response) => {
还有更像这样的东西
const express = require('express');
const app = express();
app.use( express.json() );
app.get('/', (req, res) => processWebhook( req, res ));
app.listen(3000, () => console.log('App listening on port 3000!'));
var processWebhook = function( request, response ){
// ... the console logging and all the processing goes here