Продовжуємо покращувати наш чат-бот, реалізований на платформі Dialogflow. Раніше ми створили кілька правил, познайомилися з режимом тренування і чат-бот навчився давати більш-менш адекватну реакцію на фрази користувача.

Наступний досить важливий блок функціоналу Dialogflow - це сутності (entities). По суті, сутності — це різні форми написання однієї й тієї фрази чи слова. Синоніми. У моєму прикладі чат-бота, я в сутності можу описати синоніми екскурсії. Наприклад, “тур”, “поїздка”, “дивитися місця” і так далі.

1

Як агент використовує сутності?

Припустимо, у запиті користувача є слово чи фраза з множини, визначеної в сутності. Агент позначає такий підрядок, як параметр.

У процесі формування правил ви напевно звертали увагу, деякі слова автоматично позначаються іншим кольором. Це параметри. Як параметр Dialogflow виділяє міста та інші локації, дати, числа, а також все, що описано в сутності.

2

Далі, ці параметри можна використовувати в розділі “Action and parameters” при створенні правил. Намагаюся пояснити.

Наприклад, ми запитуємо користувача: “У якому місті або готелі ви проживаєте?”

Користувач відповідає: “Я у готелі Hilton”.

Слово “Hilton” виділяється в окремий параметр і ми зможемо звертатися до значення цього параметра у будь-якому місці діалогу. У моєму прикладі, після того, як користувач замовить екскурсію, чат-бот може написати щось на кшталт: “Автобус вас забере з Hilton завтра, о 07:00”.

Сподіваюся, із цим більш-менш зрозуміло.

Давайте відкриємо будь-яке правило з розділу “Intents” і зупинимо увагу на першому блоці, під назвою “Contexts”.

Контексти — це якась сесія, де зберігається інформація з попередньої розмови користувача та бота. Спробую пояснити. Ви маєте кілька правил (intent). Правила реагують на певні фрази. Якщо вам важлива послідовність запуску правил, то в цьому випадку потрібно використовувати контексти. Уявіть, що ваш чат-бот продає квитки на екскурсію. Ви ж не можете спочатку запропонувати користувачеві купити квиток, а потім розповісти про екскурсію і взяти у нього контактні дані. Потрібна послідовність. Для дотримання цієї послідовності можна використати контексти.

Контекст — це більше, ніж текстова мітка. Це певний масив даних, що зберігає у собі змінні та іх значення з попереднього кроку.

Складно? Добре, давайте ще раз…

Подивіться мій приклад. У мене є два правила. Перше правило розповідає про пам’ятки та формат екскурсій. Друге – надсилає користувачеві розклад та пропонує здійснити замовлення. Я не хочу, щоб друге правило реагувало, якщо користувач запровадить ключове слово. Значить, мені потрібно додати контекст (я назвав його “test”) і в цьому випадку агент перевіряє як ключові слова (training phrases), так і наявність вхідного контексту.

3

А перше правило я також додам контекст “test”, але тільки у вигляді вихідного контексту.

4

Наступний блок у правилах, які ми раніше не торкалися - “Events”. За допомогою цього блоку можна зробити так, щоб правило виконувалося тільки при потрібній нам події.

Наприклад, якщо вибрати “Telegram Welcome”, правило виконається при першому спілкуванні користувача з ботом, коли користувач вводить команду /start. Якщо не знайшли необхідну стандартну подію, то можна створити її самостійно. Але то вже більш складний процес, який ми розглянумо в наступних матеріалах.

5

А як бути, якщо хочеться надіслати користувачеві не просто текст, а картинку або навіть кнопки? У ManyChat ми звикли робити це досить просто, у кілька кліків. У Dialogflow все трохи складніше і заплутаніше, але він усе це теж вміє.

Подивимося уважніше на блок Responses, де можна налаштувати реакцію (відповіді) бота на повідомлення користувача. Майте на увазі, якщо ви налаштовуєте Dialogflow на інтеграцію з декількома месенджерами, то можливості цих месенджерів можуть відрізнятися один від одного. Наприклад, у Telegram або Facebook Messenger ви можете оформити відповідь бота у вигляді “каруселі”… тоді як Slack чи Viber нічого подібного не вміють.

6

Ось тут вам знадобляться специфічні відповіді для кожного месенджера. Натисніть на “+” поряд з “Default”, оберіть месенджер та налаштуйте відповідь у потрібному вам форматі.

І ще один блок, який ми пропустили у попередніх статтях – “Fulfillment”.

7

Цей блок використовується для підключення Dialogflow до інших сервісів та обміну даними з ними. Наприклад, агент може прийняти запит від користувача, надіслати запит на сторонній сервер (наприклад, до бази даних) та отримати вибірку звідти.

Звісно, без програмування не обійтися. Не хвилюйтеся, до “Fulfillment” ми повернемося в наступних уроках і розберемося докладніше.

Сподіваюся, я вас не надто завантажив Dialogflow. Далі буде ще цікавіше 😏