Dialogflow: ответ на основе значений и других условных ответов

У меня есть $dinetype переменная, полученная от пользователя.

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

Но я хотел бы дать ответ на основании того, какое значение было установлено в переменной $dinetype. Помимо ответов, мне также нужно установить соответствующий контекст. Как мне это сделать в DialogFlow?

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

if($Dinetype=='dineout') 
      ask ('which restaurant would you like to go to?')
      set_context ('awaiting-restaurant')
if($Dinetype=='takeaway') 
      ask ('When would you like to take away?')
      set_context ('awaiting-takeaway-time')

Это вообще программируется? Или возможно добиться чего-то эквивалентного вышеупомянутому в пользовательском интерфейсе?


person Saravanabalagi Ramachandran    schedule 22.07.2018    source источник


Ответы (2)


Вы не можете сделать это напрямую в разделе «Ответ». Раздел «Ответ» предназначен для довольно простых ответов, которые не требуют значительной логики для обработки. Хотя вы можете использовать параметры в ответе, вы не можете дать другой ответ в зависимости от значения параметра. Таким образом, вы можете настроить ответ на что-то вроде

I think $Dinetype is great food.

но нет

{{#if $Dinetype == "Thai"}}I think Thai food is too hot{{/if}}

или что-то в этом роде

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

person Prisoner    schedule 22.07.2018
comment
как насчет того, чтобы просто дать ответ на основе значений, мы не можем использовать поле «Текстовый ответ»? - person Saravanabalagi Ramachandran; 30.07.2018

Поздний ответ, но, возможно, кому-то это пригодится.

Если условный ответ должен ссылаться только на одно значение параметра, то я понял, что вы можете сделать, так это использовать «Справочное значение» объекта в качестве ответа, который вы хотите дать для определенного набора синонимов.

Итак, у вас была бы сущность, которая выглядела бы так:

Затем настройте свое намерение следующим образом с ответом $Dinetype:

< / а>

Тогда конечный результат будет выглядеть так:

< / а>

И оттуда вы можете сделать любое последующее намерение, которое вам нужно.

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

person corylulu    schedule 30.04.2019
comment
Это одновременно гениально и ужасно. {: - person Prisoner; 06.07.2019
comment
Абсолютно молодец. Хорошее решение! - person filip; 11.07.2019