Під час створення чат-бота на платформі Dialogflow ви рано чи пізно зіткнетеся з таким поняттям, як контекст. Так, саме за допомогою контекстів бот розуміє, в якій точці знаходиться діалог з користувачем. За допомогою контексту можна передавати дані між інтентами, створювати теги та багато чого ще.
Докладніше про контексти дивіться окреме відео у мене на YouTube-каналі.
Мінус контексту в тому, що він живе не більше 20 хвилин. На практиці все відбувається так:
- Користувач розпочав діалог із ботом.
- Бот попросив ввести перший параметр.
- Користувач ввів параметр, перейшов до введення другого параметра та відійшов від комп’ютера (закрив ноут, згорнув Telegram разом із ботом…).
- Через 30 хвилин користувач згадав, що у нього залишився незавершений діалог із ботом. Ввів другий параметр, а бот його вже не розуміє. Замість того, щоб прийняти значення другого параметра та перейти до наступного кроку, бот повертається до привітання.
Як ви думаєте, чи захоче користувач повторювати всю процедуру? Скоріше за все ні.
Відбувається такий “фокус” через те, що відкрита сесія бота з користувачем триває лише 20 хвилин. Якщо користувач довго думає і відволікається від діалогу, то діалог переривається, а бот “вдає”, що вперше бачить користувача.
Вплинути на час сеансу ми не можемо – це технічне обмеження. Було б непогано ще й фіксувати такі діалоги, що “відвалилися”, щоб можна було вручну зв’язатися з користувачами, тобто. передати керування від чат-бота до людини.
Що ми, як розробники чат-бота, можемо зробити? Варіантів кілька. Почнемо з найпростішого, що No-code (без програмування).
Простий варіант
На жаль, розриву сесії запобігти ми ніяк не можемо. Тому спробуйте спроектувати діалоги так, щоб користувач міг максимально швидко “перестрибнути” до того чи іншого ключового кроку, без необхідності проходити весь ланцюжок діалогу з самого початку.
Відкрийте fallback-інтент та до стандартної відповіді додайте Custom Payload з кнопками (швидкими відповідями), які відкриють потрібний крок.
Також можна трохи “заморочитися” зі сторонніми сервісами автоматизації (Integromat). З їхньою допомогою ви зможете створити таймер (“розумну затримку”), а після закінчення часу сервіс поверне в dialogflow повідомлення виду: “Ви ще тут? Давайте продовжимо?”. По-перше, це шанс, що користувач помітить повідомлення в месенджері і повернеться до діалогу, а по-друге, у такому повідомленні можна надіслати навіть кнопки з ключовими інтентемами, якими користувач зможе скористатися після сесії.
Складний варіант:
Підійде лише технічним фахівцям, знайомим із серверним програмуванням та базами даних.
Суть у тому, що вам доведеться створити серверну частину (можна навіть у вбудованому редакторі Dialogflow), де буде обробник інтентів dialogflow.
Тобто, після кожної дії користувача надсилатиметься запит по webhook на сервер, а сервер в особі вашої програми, зможе витягти із запиту ID користувача.
Далі, вам потрібно зберігати ID в базі даних, щоб розуміти, хто розмовляв з ботом, а хто ні.
Додатково, ви можете отримати з POST-запиту назву інтенту, параметри та безліч іншої інформації, яку можна також зберегти в базі даних. Тепер, навіть якщо 20-хвилинна сесія обірвалася і користувач почав спілкування з ботом наново, ви надсилаєте запит (на самому початковому інтенті welcome), перевіряєте, чи спілкувався цей користувач з ботом раніше (порівнюєте ID) і відновлюєте сесію.
До речі, якщо взяти якийсь Kommunicate, то можна майже все це покласти на нього. Але доведеться платити від $30/міс (за кожного бота) і вище. У цьому вся “принадність” сторонніх сервісів. Досить дорого плюс ви все одно витратите багато часу на правильне налаштування.
Сподіваюся, я наштовхнув вас на деякі думки і поставив правильний напрямок 😄
Якщо з’являться питання — пишіть або приходьте на індивідуальну консультацію. Контакти можна знайти на сайті.