Google dialogflow как использовать строки динамического ответа?

#dialogflow-es

#dialogflow-es

Вопрос:

Я пытаюсь создать простой диалоговый диалог. Я провел простой разговор, чтобы спросить человека, которому они пытаются позвонить, а затем сказал, доступен ли человек / недоступен, что является просто текстовым ответом. Когда человек недоступен, у меня есть потенциально 3 действия, которые пользователь может выполнить: оставить голосовое сообщение, перенаправить коллеге или подождать, пока человек не станет доступен.

Сообщение, которое я бы вернул, это

«Извините, имя пользователя недоступно, вы хотели бы оставить сообщение голосовой почты, перенаправить коллеге или подождать, пока имя пользователя будет доступно?»

Что работает, но как я могу сделать так, чтобы, допустим, не было голосовой почты, а был только ответ с намерением: «Извините, nameOfPerson недоступен, вы хотели бы перенаправить коллеге или подождать, пока nameOfPerson будет доступен?»

В настоящее время я вижу единственный способ исправить это — создать 7 намерений со всеми различными контекстами, такими как:

 Intent1: voicemailContext
Intent2: redirectContext
Intent3: voicemailContext, redirectContext
Intent4: waitingContext
Intent5: WaitingContext, redirectContext
Intent6: waitingContext, voicemailContext
intent7: waitingContext,redirectContext, voicemailContext
  

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

Ответ №1:

Dialogflow очень плохо справляется с логикой. Вы можете сделать это, как вы видели, но это приводит к чрезмерно сложным моделям. Следует помнить одну вещь, которая может помочь в этом, это то, что Intents хороши в моделировании того, что говорит пользователь, но вы по-прежнему несете ответственность за то, что вы с этим делаете.

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

  • Вы можете отправить контекст обратно в ответе. Это ограничило бы, какие намерения могут запускаться при ответе пользователя.
  • Другой подход заключается в том, чтобы иметь только одно намерение для ответа, но использовать объекты для представления того, какие вещи они могут делать. Затем выполните ваше выполнение, опять же, определите, дали ли они вам действительный или недействительный ответ, и ответьте соответствующим образом.

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

1. да, я подумал, что для выполнения подобных действий следует использовать выполнение, в настоящее время у меня есть версия, которая работает, хорошо, мне все еще интересно, как отправить контекст обратно в ответе? Я использую библиотеки python dialogflow и нигде не нахожу, если или как это сделать.

2. Если у вас есть другой вопрос, лучше всего задать его как новый вопрос StackOverflow, указав как можно больше информации, такой как ваш источник.