Дайте переменный ответ в Dialogflow без жесткого кодирования при выполнении

Я работаю над чат-ботом Dialogflow, и в настоящее время я даю ответ, жестко запрограммированный для выполнения с помощью agent.add (). Однако владелец продукта хочет иметь возможность изменять формулировки без изменения и повторного развертывания кода. Какие для этого есть варианты, кроме хранения ответов в файле или в базе данных? Есть ли способ иметь переменные в ответе, когда вы добавляете его в раздел ответа в консоли Dialogflow, где эта переменная установлена ​​в выполнение, но в противном случае ответ дается в соответствии с ответом в консоли? Есть ли способ выбрать, какой ответ выдается из ответов, установленных в консоли Dialogflow, от выполнения? Я использую библиотеку выполнения nodejs без действий в Google.


person ErraticEggplant    schedule 14.11.2019    source источник
comment
Мало объяснений и слишком много вопросов! Было бы лучше, если бы вы могли более конкретно привести несколько примеров того, чего вы пытаетесь достичь. Почему бы не использовать Response в разделе "Намерения" в Dialogflow?   -  person Gray_Rhino    schedule 14.11.2019
comment
Я хотел бы использовать Response в разделе "Намерения" в качестве консоли Dialogflow, как вы предлагаете. Я хочу знать, можно ли использовать там переменные внутри строки ответа, которыми можно управлять из выполнения, или выбрать ответ, который нужно выдать из перечисленных там, из выполнения. Обычно один из этих ответов выбирается случайным образом.   -  person ErraticEggplant    schedule 14.11.2019
comment
Да, это возможно. Вы можете создавать настраиваемые параметры и сущности и получать к ним доступ из кода. Просто имейте в виду, что когда вы включаете вызов веб-перехватчика для этого намерения, и если вы хотите добавить ответ как в намерении, так и в исполнении, тот, который находится в намерении, будет действовать как резервная копия. Он сработает только в случае неудачного ответа.   -  person Gray_Rhino    schedule 14.11.2019


Ответы (1)


Думаю, у вас есть два варианта:

  1. Используйте только одно намерение с различными параметрами

    У вас может быть несколько вариантов ответов для одного намерения. Они будут иметь приоритет по максимальному количеству параметров, которые они могут заполнить. Например, если вы отправляете параметр «a» одному намерению с помощью detectIntent API, второй ответ здесь будет активирован и показан пользователю.

    This is a response1 without parameters
    This is a response1 with parameter $a ‹- Это сработает
    This is a response1 with parameter $a and $b

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

  2. Используйте события, инициируемые серверной частью

    В этом случае ваш веб-перехватчик / бэкэнд выберет правильный event для вызова. Следовательно, у вас будет несколько намерений, каждое с уникальным ответом. Вы также можете комбинировать этот подход с первым пунктом выше. Подробнее о событиях можно узнать здесь.

person flaesh    schedule 18.11.2019