gpt4 book ai didi

javascript - 如何为 dialogflow 聊天机器人创建本地服务器?

转载 作者:行者123 更新时间:2023-11-29 22:56:04 25 4
gpt4 key购买 nike

我正在尝试使用 node.js 框架为 dialogflow bot 构建一个本地服务器,但是无法建立一个。

我正在使用 serveo.net 作为隧道,因为 ngrok 无法工作,因为它被我的研究所阻止了。

我能够启动一个服务器,但无法从它那里获得返回给 dialogflow 代理的响应。

'use strict';

const {WebhookClient} = require('dialogflow-fulfillment');

const express = require("express"); //express

const bodyParser = require("body-parser"); //body-parser

const app = express(); //app

app.use(bodyParser.json);

app.use(bodyParser.urlencoded({
extended: true
})
);

const WEBHOOK = 'webhook';

app.get('/', (req, res) => res.send('online'));

app.post('/webhook', express.json(), (request, respond) => {
const agent = new WebhookClient({
request,
response
});

function webhookprocessing(request, response) {
const agent = new WebhookClient(request, response);
const action = agent.intent;
if (action == WEBHOOK) {
agent.add("My name is karthik");
} else {
agent.add("karthik");
}
}

function welcome() {
agent.add('Welcome to my agent!')
}

let intentMap = new Map();
intentMap.set('Default Welcome Intent', welcome);
intentMap.set("webhook", webhookprocessing);

agent.handleRequest(intentMap)
//const agentPath = agent.entitiesClient.projectAgentPath("master-bot-53dee");
//console.log('Dialogflow Request headers: ' + JSON.stringify(request.headers));
//console.log('Dialogflow Request body: ' + JSON.stringify(request.body));
//console.log("Server Hit");
});

app.listen(process.env.PORT || 5000);

edit1:我收到来自 google dialogflow 的请求,但我的本地服务器没有发送响应。

edit2:dialogflow 从我的 Node 接收到的响应负载是

{
"responseId":"efaf7898-74de-4727-bf2a-8eeb32ba570a-baaf0c1f",

"queryResult":{

"queryText":"1",

"parameters":{

"number":1

},

"allRequiredParamsPresent":true,

"fulfillmentMessages":[
{

"text":{

"text":[

""

]
}

}

],

"intent":{

"name":"projects/master-bot-53dee/agent/intents/15b96d92-4adb-4657-8b15-ebdf7df180b4",

"displayName":"webhook"
},
"intentDetectionConfidence":1,

"diagnosticInfo":{

"webhook_latency_ms":4991
},

"languageCode":"en"

},

"webhookStatus":{
"code":4,
"message":"Webhook call failed. Error: Request timeout."
}
}

dialogflow发送的请求有效载荷是

{
"responseId":"efaf7898-74de-4727-bf2a-8eeb32ba570a-baaf0c1f",
"queryResult":{
"queryText":"1",
"parameters":{
"number":1
},
"allRequiredParamsPresent":true,
"fulfillmentMessages":[
{
"text":{
"text":[
""
]
}
}
],
"intent":{
"name":"projects/master-bot-53dee/agent/intents/15b96d92-4adb-4657-8b15-ebdf7df180b4",
"displayName":"webhook"
},
"intentDetectionConfidence":1,
"languageCode":"en"
},
"originalDetectIntentRequest":{
"payload":{

}
},
"session":"projects/master-bot-53dee/agent/sessions/d1205a66-9eda-d79c-7677-75eeb402e7e5"
}

dialogflow 发送的请求到达我的隧道软件创建的公共(public) url,但本地主机没有任何响应。

enter image description here

这张图片是我的控制台的屏幕截图,我似乎收到了一个发布请求,但 dialogflow 上没有出现响应。

我已经使用这个 url 来引用 webhook url https://excedo.serveo.net/ .

enter image description here

最佳答案

app.post('/webhook', express.json(), (request, respond) => { // error name of the param doesn't match its usage

此行您正在使用响应作为参数并传递和使用响应。请将行更改为 -

app.post('/webhook', express.json(), (request, response) => {

关于javascript - 如何为 dialogflow 聊天机器人创建本地服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56625601/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com