Можно ли отклониться от потока разговоров и вернуться к исходному потоку в DF? - PullRequest
0 голосов
/ 29 января 2019

Я пытаюсь создать чат-бота в Google Dialog Flow, где пользователь отклоняется от исходного потока разговоров (CF), но в итоге возвращается к оригиналу где-то посередине.

ответы бота выделены жирным шрифтомНапример: оригинальный CF: привет -> как я могу вам помочь -> я хотел бы отправиться в путешествие -> Хорошо, я бы предложил Европу.Вас это заинтересует? -> да -> хорошо, вот цена

отклонение CF: привет -> как я могу вам помочь -> я былюблю путешествовать -> ОК, я бы предложил Европу.Вас это заинтересует? -> может быть -> В Европе много красивых мест, куда вы можете отправиться.Вас это заинтересует -> да -> хорошо, вот цена

Единственный способ, который я нашел, чтобы реализовать это, - это создать новое намерение и разработать его последующие действия, которыеделает это очень излишним.Мне пришлось полностью развить два отдельных намерения.Есть ли способ, которым я могу сделать намерение только для отклоненного CF и присоединить его к первоначальному намерению?

Ответы [ 2 ]

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

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

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

См. Также Мышление для голоса: конструктивные разговоры, а не код на основании этого ответа на StackOverflow.

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

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

  • Составьте список важных намерений, которыеВы хотите обработать в случае отклонения
  • Когда цель достигнута, сохраните это в некоторой БД (или кеше), скажем unfinished_intent
  • В каждом запросе или каждые 2-3 запросапроверьте значение unfinished_intent, если оно содержит какое-либо имя намерения, запросите его
  • После того, как ваше намерение выполнено, удалите unfinished_intent

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

Надеюсь, это поможет.

...