簡體   English   中英

Webhook呼叫失敗。 錯誤:請求超時

[英]Webhook call failed. Error: Request timeout

無法從節點服務器獲得對話框流程的完整填充響應,我們將不勝感激任何幫助。實現狀態如下

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);
});

    }

在index.js中

我是通過require('./routes/fulfillmentRoutes');導入上面的服務器代碼(fullfillment.js require('./routes/fulfillmentRoutes');

require('./routes/fulfillmentRoutes')更改為require('./routes/fulfillmentRoutes')(app)解決了問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM