Выполнение диалогового потока: сбой вызова Webhook. Ошибка: 500 Внутренняя ошибка сервера - PullRequest
0 голосов
/ 17 января 2019

Итак, я пытаюсь создать разговор о витаминах от Dialogflow. Но я продолжаю получать ту же ошибку и из-за этого, тот же ответ от ИИ. Итак, мы хотим, чтобы (Пользователь) - Дайте мне больше информации о витаминах (AI) - Конечно. какой витамин (Пользователь) - * здесь мы указываем, какой Витамин, например - * Витамин А. (AI) - Затем AI дает нам указанный ответ на витамин A

Пожалуйста, помогите

Вот наш код в исполнении

const functions = require('firebase-functions');
const {dialogflow} = require('actions-on-google')

const VITAMIN_INTENT = 'Vitamin'
const VITAMINS_ENTITY = 'Vitamins'

const app = dialogflow()

app.intent(VITAMIN_INTENT, (conv) => {
    const vitamin_type = conv.parameters[VITAMINS_ENTITY].toLowerCase();
    if (vitamin_type == 'Vitamin A') {
    conv.ask("Sources: carrots, sweet potato, green leafy vegetable, squash")
    } else if (vitamin_type == 'Vitamin B') {
        conv.ask("Sources: Animal products (such as fish, poultry, meat, eggs, or dairy); Also found in fortified breakfast cereals and enriched soy or rice milk.")
    } else if (vitamin_type == 'Vitamin B1') {
        conv.ask("Sources: Sunflower seeds, asparagus, lettuce, mushrooms, black beans, navy beans, lentils, spinach, peas, pinto beans, lima beans, eggplant, Brussels sprouts, tomatoes, tuna, whole wheat, soybeans.")
    } else if (vitamin_type == 'Vitamin B2') {
        conv.ask("Sources:B2 ")
    } 
})
exports.dialogflowFirebaseFulfillment = functions.https.onRequest(app)

1 Ответ

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

Ошибка 500 обычно указывает на то, что ваша программа по какой-то причине потерпела крах, хотя, не просматривая журналы, трудно точно сказать, почему.

Я предполагаю, что в части

const vitamin_type = conv.parameters[VITAMINS_ENTITY].toLowerCase();

у вас нет параметра с именем "Витамины".Имена параметров чувствительны к регистру, и все они обычно строчные.Таким образом, conv.parameters[VITAMINS_ENTITY] оценивается как undefined, а undefined не имеет функции .toLowerCase().

Кроме того, у вас есть по крайней мере одна логическая проблема в вашем коде.Строка

const vitamin_type = conv.parameters[VITAMINS_ENTITY].toLowerCase();

, которая гарантирует, что строка vitamin_type в нижнем регистре.Значения, такие как «витамин А».

Но когда вы проверяете значения, вы используете сравнения, такие как

if (vitamin_type == 'Vitamin A') {

, где вы сравниваете его со значениями, такими как «Витамин А».Таким образом, значения никогда не будут совпадать.

Поскольку ни одно из значений не будет совпадать, вы выйдете из функции без вызова conv.ask(), что приведет к ошибке.(Хотя не ошибка 500.)

...