Продовжуємо покращувати наш чат-бот, реалізований на платформі Dialogflow. Раніше ми створили кілька правил, познайомилися з режимом тренування і чат-бот навчився давати більш-менш адекватну реакцію на фрази користувача.
Наступний досить важливий блок функціоналу Dialogflow - це сутності (entities). По суті, сутності — це різні форми написання однієї й тієї фрази чи слова. Синоніми. У моєму прикладі чат-бота, я в сутності можу описати синоніми екскурсії. Наприклад, “тур”, “поїздка”, “дивитися місця” і так далі.
Як агент використовує сутності?
Припустимо, у запиті користувача є слово чи фраза з множини, визначеної в сутності. Агент позначає такий підрядок, як параметр.
У процесі формування правил ви напевно звертали увагу, деякі слова автоматично позначаються іншим кольором. Це параметри. Як параметр Dialogflow виділяє міста та інші локації, дати, числа, а також все, що описано в сутності.
Далі, ці параметри можна використовувати в розділі “Action and parameters” при створенні правил. Намагаюся пояснити.
Наприклад, ми запитуємо користувача: “У якому місті або готелі ви проживаєте?”
Користувач відповідає: “Я у готелі Hilton”.
Слово “Hilton” виділяється в окремий параметр і ми зможемо звертатися до значення цього параметра у будь-якому місці діалогу. У моєму прикладі, після того, як користувач замовить екскурсію, чат-бот може написати щось на кшталт: “Автобус вас забере з Hilton завтра, о 07:00”.
Сподіваюся, із цим більш-менш зрозуміло.
Давайте відкриємо будь-яке правило з розділу “Intents” і зупинимо увагу на першому блоці, під назвою “Contexts”.
Контексти — це якась сесія, де зберігається інформація з попередньої розмови користувача та бота. Спробую пояснити. Ви маєте кілька правил (intent). Правила реагують на певні фрази. Якщо вам важлива послідовність запуску правил, то в цьому випадку потрібно використовувати контексти. Уявіть, що ваш чат-бот продає квитки на екскурсію. Ви ж не можете спочатку запропонувати користувачеві купити квиток, а потім розповісти про екскурсію і взяти у нього контактні дані. Потрібна послідовність. Для дотримання цієї послідовності можна використати контексти.
Контекст — це більше, ніж текстова мітка. Це певний масив даних, що зберігає у собі змінні та іх значення з попереднього кроку.
Складно? Добре, давайте ще раз…
Подивіться мій приклад. У мене є два правила. Перше правило розповідає про пам’ятки та формат екскурсій. Друге – надсилає користувачеві розклад та пропонує здійснити замовлення. Я не хочу, щоб друге правило реагувало, якщо користувач запровадить ключове слово. Значить, мені потрібно додати контекст (я назвав його “test”) і в цьому випадку агент перевіряє як ключові слова (training phrases), так і наявність вхідного контексту.
А перше правило я також додам контекст “test”, але тільки у вигляді вихідного контексту.
Наступний блок у правилах, які ми раніше не торкалися - “Events”. За допомогою цього блоку можна зробити так, щоб правило виконувалося тільки при потрібній нам події.
Наприклад, якщо вибрати “Telegram Welcome”, правило виконається при першому спілкуванні користувача з ботом, коли користувач вводить команду /start. Якщо не знайшли необхідну стандартну подію, то можна створити її самостійно. Але то вже більш складний процес, який ми розглянумо в наступних матеріалах.
А як бути, якщо хочеться надіслати користувачеві не просто текст, а картинку або навіть кнопки? У ManyChat ми звикли робити це досить просто, у кілька кліків. У Dialogflow все трохи складніше і заплутаніше, але він усе це теж вміє.
Подивимося уважніше на блок Responses, де можна налаштувати реакцію (відповіді) бота на повідомлення користувача. Майте на увазі, якщо ви налаштовуєте Dialogflow на інтеграцію з декількома месенджерами, то можливості цих месенджерів можуть відрізнятися один від одного. Наприклад, у Telegram або Facebook Messenger ви можете оформити відповідь бота у вигляді “каруселі”… тоді як Slack чи Viber нічого подібного не вміють.
Ось тут вам знадобляться специфічні відповіді для кожного месенджера. Натисніть на “+” поряд з “Default”, оберіть месенджер та налаштуйте відповідь у потрібному вам форматі.
І ще один блок, який ми пропустили у попередніх статтях – “Fulfillment”.
Цей блок використовується для підключення Dialogflow до інших сервісів та обміну даними з ними. Наприклад, агент може прийняти запит від користувача, надіслати запит на сторонній сервер (наприклад, до бази даних) та отримати вибірку звідти.
Звісно, без програмування не обійтися. Не хвилюйтеся, до “Fulfillment” ми повернемося в наступних уроках і розберемося докладніше.
Сподіваюся, я вас не надто завантажив Dialogflow. Далі буде ще цікавіше 😏