Поток контекста и объект, не работающие в dialogflow

#node.js #actions-on-google #dialogflow-es-fulfillment

#node.js #действия в Google #dialogflow-es-выполнение

Вопрос:

Я использую действия в Google и dialogflow для создания открытого приложения для общения. Я создал объект с именем «Рейтинг», и он используется для хранения чисел от 1 до 5, ниже приведен скриншот объекта:

введите описание изображения здесь

Я использую этот объект в намерении с именем ‘First’. Ниже приведен скриншот:

введите описание изображения здесь

Самое первое намерение, которое я использую, — это «Идентификатор опроса». Ниже приведен код для намерения идентификатора опроса:

 app.intent('Survey ID', (conv, {number}) => {
    const id = number;
    if(id == 2020){
        conv.ask(qstion[0]);
    }
    else{
        conv.close('This is not a valid survey ID');
    }
});
  

Ниже приведен код для «первого» намерения:

 app.intent('First', (conv) => {
    const rating = conv.parameters.Rating;
    if(type[0] === 'RATING'){
        if(rating >= 1 amp;amp; rating <= 5){
            senddata[0] =  qstion[0]   rating;
            conv.ask(qstion[1]);
        }
        else{
            conv.ask('Please enter a number between 1 and 5');
        }
    }

});
  

Я также использую резервный вариант для «первого» намерения. Ниже приведен код для резервного намерения:

 app.intent('First - fallback', (conv) => {
    const userSaid = conv.query;
    conv.close(userSaid);
});
  

Проблема, с которой я сталкиваюсь, заключается в том, что, хотя я ввожу число от 1 до 5, оно входит в блок else в коде «первого» намерения и говорит: «Пожалуйста, введите число от 1 до 5». И когда я использую любое число, отличное от 1 до 5, оно должно перейти к резервному намерению, но оно переходит к намерению «Идентификатор опроса» и говорит: «Это недопустимый идентификатор опроса».

Предполагаемое поведение заключается в том, что если я ввожу число от 1 до 5, оно должно сохранить его и задать следующий вопрос, и если я скажу что-нибудь еще, оно должно перейти к резервному намерению и отобразить ответ пользователя.

Для справки я также привожу контексты всех трех намерений:

Контекст «Идентификатор опроса»:

введите описание изображения здесь

«Первый» контекст:

введите описание изображения здесь

Контекст ‘First-fallback’:

введите описание изображения здесь

Кто-нибудь может мне помочь с этим, пожалуйста?

Комментарии:

1. Если бы вы посмотрели на запрос JSON, я предполагаю, что значение rating равно не a number , а a string . Возможно, вам потребуется сначала преобразовать значение с помощью parseInt(conv.parameters.Rating)

2. @NickFelker Я пробовал это, но это не работает

3. Каково значение «Рейтинг»?

4. Если я ввожу 5, значение рейтинга равно «пять»

5. Я изменил объект оценки, вместо «один» я использовал 1, поэтому он работает нормально, если я ввожу любое число от 1 до 5, но если я ввожу 9, он не входит в резервный вариант и по-прежнему говорит: «Это недопустимый идентификатор опроса»