Dialhoflow Webhook (Ошибка вызова Webhook. Ошибка: 500 Internal Server Error) - PullRequest
0 голосов
/ 06 июня 2018

Я следовал коду этого урока (https://dialogflow.com/docs/getting-started/basic-fulfillment-conversation), чтобы вернуть результаты API в диалоговый поток. Однако мой webhook продолжает давать сбой. Может кто-нибудь помочь мне выяснить, почему?

Вот один изнеудавшиеся разговоры: enter image description here

Вот мой код:

'use strict';

const http = require('http');

exports.Hadoop = (req, res) => {
    // Get name node server from the request
    let nameNodeServer = req.body.queryResult.parameters['nameNodeServer']; // nameNodeServer is a required param

    // Call the Hadoop API
    getNameNodeInfo(nameNodeServer).then(function(output) {
        res.json({ 'fulfillmentText': output }); // Return the results to Dialogflow
    }).catch(() => {
        res.json({ 'fulfillmentText': 'getNameNodeInfo() Error'- });
    });
};

function getNameNodeInfo (nameNodeServer) {
    return new Promise((resolve, reject) => {
        // Create url for the HTTP request to get the name node info
        let url = 'http://' + nameNodeServer + '[rest of url]';

        // Make the HTTP request to get the name node info
        http.get(url, (res) => {
            let body = ''; // var to store the response chunks
            res.on('data', (chunk) => {body += chunk; });
            res.on('end', () => {
                // After all the data has been received, parse the JSON for desired data
                let response = JSON.parse(body);
                let beans = response['beans'][0];

                // Create response
                let output = `Percent Used: ${beans['PercentUsed']}`;

                // Resolve the promise with the output text
                console.log(output);
                resolve(output);
            });
            res.on('error', (error) => {
                console.log(`Error calling the Hadoop API: ${error}`);
                reject();
            });
        });
    });
}

Я считаю, что функция getNameNodeInfo и поиск сервера узла имен верны, так как онизаписал правильный вывод при отладке.

Диагностическая информация: enter image description here

enter image description here

enter image description here

enter image description here

Ответы [ 2 ]

0 голосов
/ 10 января 2019

У нас возникла несколько иная, но связанная проблема:

Internal Server Error при запуске агента.

“status”: {
   “code”: 500,
   “errorType”: “internal_server_error”,
   “errorDetails”: “Internal Server Error”
},

Эта ошибка не была вызвана внесенными нами изменениями.Мы используем этот агент в dev-версии приложения, и однажды утром оно перестало работать.

Мы протестировали, создав .zip и восстановив его в новом агенте.Новый агент будет работать правильно, но мы будем продолжать получать ошибку 500 на агенте, подключенную к нашему приложению dev.Мы отправили запрос на помощь, и в течение ночи ошибка была устранена.Мы подозреваем, что команде DialogFlow пришлось вручную перезагрузить сервер или что-то подобное.

enter image description here

0 голосов
/ 07 июня 2018

Я связался с кем-то в Dialogflow, и это был их ответ.

Спасибо за предоставление всей информации.В вашем коде я заметил, что вы использовали http-запросы вместо https.Служба должна использовать HTTPS, а URL-адрес должен быть общедоступным для выполнения функции.Dialogflow не поддерживает самоподписанные сертификаты SSL.Для получения информации о настройке SSL, пожалуйста, обратитесь к: https://developers.google.com/web/fundamentals/security/encrypt-in-transit/enable-https

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...