Бот не хочет ждать более 20 минут. Что делать?

Бот не хочет ждать более 20 минут. Что делать?
15.01.2021 Алексей Малыгин

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

Подробнее о контекстах смотрите отдельное видео у меня на YouTube-канале.

Недостаток контекста в том, что он “живет” не более 20 минут. На практике все обстоит так:

  1. Пользователь начал диалог с ботом.
  2. Бот попросил ввести первый параметр.
  3. Пользователь ввел параметр, перешел к вводу второго параметра и отошел от компьютера (закрыл ноут, свернул Telegram вместе с ботом… ).
  4. Через 30 минут пользователь вспомнил, что у него остался незавершенный диалог с ботом. Ввел второй параметр, а бот его уже не понимает. Вместо того, чтобы принять значение второго параметра и перейти к следующему шагу, бот возвращается к приветствию.

Как вы думаете, захочет пользователь повторять всю процедуру? Скорее всего нет.

Происходит такой “фокус” из-за того, что открытая сессия бота с пользователем длится всего 20 минут. Если пользователь долго думает и отвлекается от диалога, то диалог прерывается, а бот “делает вид”, что впервые видит пользователя.

Повлиять на время сеанса мы не можем, это техническое ограничение. Было бы неплохо еще и фиксировать такие “отвалившиеся” диалоги, чтобы можно было вручную связаться с пользователями, т.е. передать управление от чат-бота к человеку.

Что мы, как разработчики чат-бота, можем предпринять? Вариантов несколько. Начнем с самого простого, который No-code (без программирования).

Простой вариант:

К сожалению, обрыв сессии предотвратить мы никак не можем. По этому, попробуйте спроектировать диалоги так, чтобы пользователь мог максимально быстро “перепрыгнуть” к тому или иному ключевому шагу, без необходимости проходить всю цепочку диалога с самого начала.

Откройте fallback-интент и к стандартному ответу добавьте Custom Payload с кнопками (быстрыми ответами), которые откроют нужный шаг.

Также можно немного “заморочиться” со сторонними сервисами автоматизации (Integromat или Zapier). С их помощью вы сможете создать таймер (“умную задержку”), а по истечении времени сервис вернет в dialogflow сообщение вида: “Вы еще здесь? Давайте продолжим?”. Во-первых, это шанс, что пользователь заметит уведомление в мессенджере и вернется к диалогу, а во-вторых, в таком уведомлении можно прислать в том числе и кнопки с ключевыми интентеми, которыми пользователь сможет воспользоваться по истечении сессии. 

Сложный вариант:

Подойдет только техническим специалистам, знакомых с серверным программированием и базами данных. 

Суть в том, что вам придется создать серверную часть (можно даже во встроенном редакторе Dialogflow), где будет обработчик интентов dialogflow.

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

Далее, вам нужно хранить ID в базе данных, чтобы понимать, кто вел беседу, а кто нет.

Дополнительно, вы можете извлечь из POST-запроса название интента, параметры и множество другой информации, которую можно также сохранить в базе данных. Теперь, даже если 20-минутная сессия оборвалась и пользователь начал общение с ботом заново, вы отправляете запрос (на самом начальном интенте welcome), проверяете, общался ли этот пользователь с ботом ранее (сравниваете ID) и восстанавливаете сессию.

Кстати, если взять какой-нибудь Kommunicate, то можно почти все это возложить на него. Но придется платить от $30/мес (за бота) и выше. В этом вся “прелесть” сторонних сервисов. Довольно дорого плюс вы все равно потратите много времени на правильнную работу связки. 

Надеюсь, я натолкнул вас на некоторые мыли и задал правильное направление :)

Если появятся вопросы – пишите или приходите на индивидуальную консультацию. Контакты можно найти здесь же на сайте.

Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x
()
x