无法从节点服务器获取dialogflow完全填充响应,我们将不胜感激。实现状态如下
Webhook呼叫失败。错误:请求超时。
在控制台上出现以下错误
(node:3600) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'result' of undefined
[0] at new WebhookClient (D:\practice\reactbot\node_modules\dialogflow-fulfillment\src\dialogflow-fulfillment.js:85:28)
[0] at app.post (D:\practice\reactbot\routes\fulfillmentRoutes.js:6:23)
[0] at Layer.handle [as handle_request] (D:\practice\reactbot\node_modules\express\lib\router\layer.js:95:5)
[0] at next (D:\practice\reactbot\node_modules\express\lib\router\route.js:137:13)
[0] at Route.dispatch (D:\practice\reactbot\node_modules\express\lib\router\route.js:112:3)
[0] at Layer.handle [as handle_request] (D:\practice\reactbot\node_modules\express\lib\router\layer.js:95:5)
[0] at D:\practice\reactbot\node_modules\express\lib\router\index.js:281:22
[0] at Function.process_params (D:\practice\reactbot\node_modules\express\lib\router\index.js:335:12)
[0] at next (D:\practice\reactbot\node_modules\express\lib\router\index.js:275:10)
[0] at expressInit (D:\practice\reactbot\node_modules\express\lib\middleware\init.js:40:5)
[0] at Layer.handle [as handle_request] (D:\practice\reactbot\node_modules\express\lib\router\layer.js:95:5)
[0] at trim_prefix (D:\practice\reactbot\node_modules\express\lib\router\index.js:317:13)
[0] at D:\practice\reactbot\node_modules\express\lib\router\index.js:284:7
[0] at Function.process_params (D:\practice\reactbot\node_modules\express\lib\router\index.js:335:12)
[0] at next (D:\practice\reactbot\node_modules\express\lib\router\index.js:275:10)
[0] at query (D:\practice\reactbot\node_modules\express\lib\middleware\query.js:45:5)
[0]
我正在使用V2 API。
在dialogflow-fulfillment.js的调试行85上,未定义引起错误的主体(this.request_.body.result)
正在满足订单
{
"responseId": "9257c21f-bdc5-4994-ab1b-5902518c80bc-2dd8e723",
"queryResult": {
"queryText": "Where is snoopy?",
"parameters": {},
"allRequiredParamsPresent": true,
"fulfillmentText": "Can you help me find him?",
"fulfillmentMessages": [
{
"text": {
"text": [
"I dont know where Snoopy is."
]
}
},
{
"text": {
"text": [
"Can you help me find him?"
]
}
}
],
"intent": {
"name": "projects/reactpageagent-uonbfa/agent/intents/65dc9557-7ba3-4a79-97f9-3215daf7733f",
"displayName": "snoopy"
},
"intentDetectionConfidence": 1,
"diagnosticInfo": {
"webhook_latency_ms": 4982
},
"languageCode": "en"
},
"webhookStatus": {
"code": 4,
"message": "Webhook call failed. Error: Request timeout."
}
}
服务器端代码是
const {WebhookClient} = require('dialogflow-fulfillment');
module.exports = app => {
app.post('/', async (req, res) => {
const agent = new WebhookClient({ request: req, response: res
});
function snoopy(agent) {
agent.add(`Welcome to my Snoopy fulfillment!`);
}
function fallback(agent) {
agent.add(`I didn't understand`);
agent.add(`I'm sorry, can you try again?`);
}
let intentMap = new Map();
intentMap.set('snoopy', snoopy);
intentMap.set('Default Fallback Intent', fallback);
agent.handleRequest(intentMap);
});
}
答案 0 :(得分:0)
在index.js中
我通过以下方式导入了上面的服务器代码(fullfillment.js)
require('./routes/fulfillmentRoutes');
变化中
require('./routes/fulfillmentRoutes')
至
require('./routes/fulfillmentRoutes')(app)
解决了问题