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

На мій погляд, існуює 4 моменти, які потрібно зрозуміти, щоб отримати правильне уявлення про архітектуру Dialogflow.

1. Запит-відповідь

В основі Dialogflow лежить запит користувача та його обробка.

  1. Користувач надсилає запит агенту Dialogflow.
  2. Увімкнено модуль обробки природної мови.
  3. Dialogflow надсилає відповідь користувачеві.

df_user

Чому це важливо?

Дуже часто чат-ботів прирівнюють до сервісів розсилки, і вся суть автоматизації зводиться до “бомбардування” користувача повідомленнями за розкладом. Парадигма “спочатку запит, потім відповідь” дає зрозуміти, що розсилка не підтримується в Dialogflow і єдиний спосіб надіслати користувачеві повідомлення поза діалогом - використовувати API.

Для цього вам знадобиться:

  • знання API того месенджера, з яким інтегровано Dialogflow
  • сервер, на якому розміщуватиметься програмний код для роботи з API

Важко? Якщо вам потрібні розсилки, то краще пройти повз Dialogflow. В ManyChat або Smart Sender реалізувати розсилку і підтримувати її (редагувати контент, керувати розкладом і ланцюжками) дуже зручно.

2. Зіставлення намірів (mapping)

Друга концепція, яку потрібно зрозуміти — це робота намірів.

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

Щоб зрозуміти, як насправді працює зіставлення намірів, вам необхідно вивчити такі ключові функції, як сутності, контексти, параметри тощо. Рекомендую подивитися відео на моєму [YouTube-каналі](https:// www.youtube.com/channel/UCZXFVVLbaaBNc4ipNgjOOXw).

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

3. Fulfillment

Як тільки Dialogflow зіставить запит користувача з одним із наперед визначених намірів, йому, можливо, доведеться виконати деяку бізнес-логіку перед відправкою відповіді.

Для цього і знадобиться концепція під назвою Fulfillment (виконання).

Ось як вона працює:

  1. Dialogflow розпізнає запит користувача та отримує структуровану інформацію.
  2. Структурована інформація надсилається до деякого програмного коду, що працює на окремому хостингу, який підтримується розробником бота. Цей код називається вебхук (webhook).
  3. Вебхук виконує потрібну бізнес-логіку.
  4. Повертає відповідь вашому агенту Dialogflow у певному форматі.
  5. Dialogflow аналізує дані, витягує відповідну інформацію та формує відповідь, яка надсилається користувачеві.

4. Інтеграція

Крім перерахованих вище концепцій, Dialogflow надає власний API.

Цей API дозволяє програмно надсилати запити до ваших агентів Dialogflow. Запит буде зіставлений з наміром, і відповідна відповідь буде надіслана стороні, яка зверталася до Dialogflow API.

Це означає, що ви можете “вбудувати” агент Dialogflow у свої існуючі програми та служби. Це може бути будь що. Від веб-сайту до мобільного додатка або комп’ютерної гри.

Висновок

Важливо пам’ятати, що завдання Dialogflow - замінити живу людину при спілкуванні. Якщо ви вибрали Dialogflow для створення бота, намагайтеся відмовитись від складних розгалужених ланцюжків діалогу. Будуйте роботу бота так, щоб користувач міг отримати потрібний результат одним-двома дотиками.

Але якщо не обійтися без бізнес-логіки, то хочу дати кілька порад.

  1. У Dialogflow є таке поняття, як “подія” (Event). З їі допомогою ви можете переадресовувати користувача на той чи інший інтент залежно від його (користувача) дій. Це дуже полегшить завдання.
  2. Якщо ваша бізнес-логіка досить проста, код обробника запитів можна розмістити всередині агента Dialogflow, використовуючи Inline editor. В цьому випадку вам не портібен окремий хостинг та технічні знання для налаштування. Все це робиться автоматично в хмарному сервісі Google Cloud.

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

Якщо будуть питання - пишіть у коментарях під статтею або мені в Telegram і не забувайте підписатися на YouTube-канал, щоб у мене був стимул записувати нові навчальні відео.