Упс! Не вдала спроба:(
Будь ласка, спробуйте ще раз.

Як створити чатбот за допомогою Azure AI Bot Service

IT-команда NIX
IT-команда NIX
13 жовтня 2023 10 хвилин читання

Чатботи є всюди: у месенджерах, застосунках, на сайтах. Вони спрощують життя користувачів, проте інколи потребують чималих зусиль від розробників саме під час їх створення та налаштування. На щастя, вже винайшли чимало інструментів, які допомагають швидко писати якісні чатботи. Одним із найбільш вдалих сервісів, на мій погляд, є Azure AI Bot Service від Microsoft.

Вітаю! Мене звати Данило Міхов, я .NET Developer в NIX і сьогодні розповім вам, як створювати чатботи за допомогою Azure AI Bot Service.

Чому Azure AI Bot Service

Azure AI Bot Service є дуже потужним інструментом з багатьма унікальними фічами. Наприклад, Microsoft дозволяє формувати власні JSON-файли для взаємодії з API різних месенджерів, завдяки чому у вас більше можливостей під час створення ботів. Але у конкурентів теж є цікаві особливості. Тому дійсно серйозний плюс використання Azure AI Bot Service полягає насамперед в активній підтримці продукту з боку Microsoft. Команда розробників цього сервісу уважно прислухається до відгуків та швидко усуває знайдені проблеми.

Варто згадати й інші важливі функціональні переваги:

  • Підтримка опенсорсних SDK. В Azure AI Bot Service можна використовувати open-source засоби для розроблення, тестів та деплою чатботів.
  • Наявність Cognitive Services. Ці сервіси використовують машинне навчання для вирішення повторюваних завдань. Це гарантує більш природний рівень взаємодії чатбота з юзером.
  • Доповнення функціональності. Ви можете розвивати бот та доповнювати новими функціями. Наприклад, можна впроваджувати додаткові канали та на кожному з них тестувати вашу програму.
  • Мультиплатформенність. Це дозволяє інтегрувати бота з різноманітними каналами без змін у вихідному коді.
  • Доступність best practices. На GitHub зібрано безліч прикладів коду, що спрощує процес створення та запуску власного сервісу.

Окрім цього, можна використовувати Cosmos DB для збереження діалогів та інтегрувати LUIS для навчання чатбота. Останній сервіс застосовує методи ML для більш ефективного спілкування з користувачами, проте є платним рішенням. Тому це підходить не для кожного проєкту.

Структура чатбота в Azure AI Bot Services

Принцип роботи бота на Azure детально описаний на наступній ілюстрації. У правій частині відображається список каналів для інтеграції сервісу. Цей список регулярно оновлюється, у ньому з’являються нові платформи. У нижній частині розміщені згадані Cognitive Services, які дозволяють взаємодіяти з ботом у різний спосіб, наприклад, не тільки текстом, але й голосом.

Структура чатбота в Azure AI Bot Services Структура чатбота в Azure AI Bot Services

Для створення чатботів на Azure застосовується Bot Builder SDK. Цей продукт відкритий для користувачів та постійно отримує підтримку від розробників. На GitHub можна знайти останні оновлення та звернутися з питаннями безпосередньо до творців цього інструменту.

Що слід врахувати при створенні чатбота на Azure

  • Оновлення впливають на функціональність. Часто нові версії Bot Builder SDK можуть порушувати роботу раніше написаного коду. Тож слід уважно відстежувати всі виправлення. Цілком можливо, що посібники, якими ви користуєтеся, вже застарілими.
  • Нестандартні підходи добре працюють. При роботі з Bot Builder SDK варто бути готовим до інновацій та не боятися відхилятися від звичного курсу. Тож завжди експериментуйте та випробуйте нові рішення.
  • Універсальність коду не є панацеєю. Чатбот можна без змін у вихідному коді запустити на різних платформах. Однак кожен месенджер має свої особливості, і при створенні сервісу подібні нюанси можуть потребувати особливої уваги.

Як відбувається спілкування з ботом

Комунікація з чатботом відбувається через UI. Він є мостом між вами та машинним кодом. В Azure AI Bot Services для цього використовується система ієрархічних діалогів, де є 3 базові моделі побудови діалогу:

  • Prompt. Це метод взаємодії, де бот надає користувачеві набір підказок і чекає на відповідь. Якщо вона коректна, діалог продовжується. В іншому випадку користувачеві пропонується вказати правильні дані.
  • Waterfall. Це послідовний збір даних від користувача. Метод складається з серії запитань, кожне із яких реалізується як асинхронна функція. Відповідь на одне запитання передається як аргумент для наступного.
  • Component. Цей метод розбиває складний діалог на більш прості сегменти. Це дозволяє повторно використовувати частини діалогу у різних сценаріях, які мало або взагалі не пов’язані один з одним.
Як відбувається спілкування з ботом Як відбувається спілкування з ботом

Запити можуть бути одним із шести типів:

  • текст;
  • число;
  • дата і час;
  • підтвердження;
  • вибір;
  • прикріплення файлу.

Підписуйтеся на наші соцмережі

Ці запити служать для покрокової комунікації. Спочатку бот запитує інформацію, потім надає допустимі значення чи просить повторити введення, якщо отримана некоректна інформація. Все інтуїтивно зрозуміло для користувачів.

Як працювати з контролерами і темплейтами

Для прикладу розберемо створений мною чатбот під назвою Remind me later. Його головна функція — нагадувати про завдання, які слід виконати найближчим часом. Для розробки цього сервісу я використовував шаблон Empty Template від Visual Studio, в якому міститься BotController. Цей контролер відповідає за прийом повідомлень від користувача та їх перенаправлення до бот-фреймворку. Крім того, в арсеналі бота присутні Deployment Templates — шаблони, що полегшують деплой на Azure.

Як працювати з контролерами і темплейтами Як працювати з контролерами і темплейтами

Також є NotifyController. Він відповідає за встановлення часу, коли слід надіслати нагадування. Але про цей інструмент буде трохи нижче.

Що таке Startup та як наповнювати ToDoDialog

Насамперед треба звернутися до розділу Startup.cs. Тут є зареєстрований обробник помилок під назвою AdapterWithErrorHandler. Його завдання — відловлювати і обробляти помилки у програмі. Важливо відзначити й наявність компонента ConversationState. Він потрібен для відстеження ботом, в якому контексті відбувається спілкування з користувачем.

Що таке Startup та як наповнювати ToDoDialog Що таке Startup та як наповнювати ToDoDialog

Тепер звернемо увагу на вкладку ToDoDialog.cs. Тут я створив набір дій під назвою waterfallSteps — це послідовність діалогу, який згадано вище. У цьому розділі описано, які асинхронні функції будуть задіяні на кожному етапі спілкування.

Що таке Startup та як наповнювати ToDoDialog Що таке Startup та як наповнювати ToDoDialog

Далі розглянемо, які команди система прийматиме від користувача. Чатбот буде задавати стандартний набір питань про захід та пропонувати встановити нагадування.

Що таке Startup та як наповнювати ToDoDialog Що таке Startup та як наповнювати ToDoDialog

А для перевірки працездатності чат-боту я використовував Bot Framework Emulator. Це утиліта, призначена для тестування та дебагу чатботів як на комп’ютері, так і в мережі. За допомогою цього інструмента можна взаємодіяти з ботом та контролювати вхідні і вихідні повідомлення. Емулятор показує все так само, як відображається у чаті.

Bot Framework Emulator

За активації програми отримаємо посилання, за яким бот приймає повідомлення.

Bot Framework Emulator Bot Framework Emulator

До початку тестів треба вказати це посилання у Bot Framework Emulator.

Bot Framework Emulator Bot Framework Emulator

Спочатку бот просить задати назву заходу для нагадування. Для цього викликається наступний код.

Bot Framework Emulator Bot Framework Emulator

Щойно ви вперше звернетесь до бота, він відповість: «Please enter event description». Після введення інформації про захід (наприклад, Buy milk) бот перейде до наступного етапу та запропонує вибрати час для нагадування. Важливим елементом коду є stepContext, який зберігає деталі діалогу та інтерактивних значень.

Bot Framework Emulator Bot Framework Emulator

Для надання юзеру варіантів нагадувань я застосував ChoicePrompt. Він представляє 3 можливі інтервали: за 2 хвилини, за 5 хвилин і наступного дня. Хоча може бути більше варіантів — це можна налаштовувати. Вибрані інтервали задаються через Choice.

Bot Framework Emulator Bot Framework Emulator

Візуалізація цього вибору у Bot Framework Emulator:

Bot Framework Emulator Bot Framework Emulator

Отримані результати можна розібрати за допомогою Parse, механізму збирання та структурування даних. А після вибору користувача бот підтвердить час, застосовуючи для цього ConfirmPrompt.

Bot Framework Emulator Bot Framework Emulator

В емуляторі це виглядає так:

Bot Framework Emulator Bot Framework Emulator

На останньому етапі ми беремо вже наявну інформацію зі stepContext і створюємо SavedNotificationModel. Важливо включити до останнього conversationReference. Це дозволяє боту ідентифікувати конкретного користувача в діалозі.

Bot Framework Emulator Bot Framework Emulator

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

Bot Framework Emulator Bot Framework Emulator

Закінчувати спілкування краще певним повідомленням, яке підтвердить успішність задачі. У цьому прикладі це було: Thanks. Notification has been successfully saved.

Bot Framework Emulator Bot Framework Emulator

Як бот визначає час

Я розробив метод NotifyTimeCheck() у NotifiedController, щоб допомогти боту стежити за часом. Цей метод перевіряє події і при наближенні заданого часу витягує івент із dictionary та надсилає повідомлення користувачеві.

Як бот визначає час Як бот визначає час

Щоб надіслати нагадування, я використовав метод ContinueConversationAsync() в BotAdapter та передав ConversationReference. Треба завжди вказувати першим параметром функції аppId бота, інакше він не працюватиме. Крім того, щоб нагадати боту про подію, можна використовувати BotTimerFunction із часовим тригером TimerTrigger.

Як бот визначає час Як бот визначає час

У результаті функція перевіряє створені події щохвилини. І якщо наближається заданий час, бот повідомляє користувачеві про потрібний йому івент. Все легко та зручно!

Звісно, це простий приклад. Але він гарно демонструє принципи роботи з Azure AI Bot Service. З цим інструментом ви можете швидко створювати різних чатботів для оптимізації повсякденних завдань, надання актуальної інформації про товари або для оброблення унікальних запитів клієнтів. Тож раджу кожному розробнику зануритися у тему створення ботів. Це дійсно корисні навички, які стануть у пригоді на багатьох проєктах.

Підписуйтеся на наші соцмережі

Якщо ви хочете поділитися з читачами SPEKA власним досвідом, розповісти свою історію чи опублікувати колонку на важливу для вас тему, долучайтеся. Відтепер ви можете зареєструватися на сайті SPEKA і самостійно опублікувати свій пост.
50 UAH 150 UAH 500 UAH 1000 UAH 3000 UAH 5000 UAH
0
Прокоментувати
Інші матеріали

Українські МСП можуть отримати до €67 500 на інноваційні робототехнічні рішення від ЄС

Світлана Бовшовська 2 години тому

27 січня стартує інтенсив для викладачів Teachers’ Smart Up: Winter Edition 2025 — як взяти участь

Вікторія Рудзінська 23 січня 2025 17:12

IT SmartFlex: від внутрішніх рішень для Vodafone до виходу на зовнішній ринок

Олександр Тартачний 23 січня 2025 15:35

Топ-5 напрямів для старту ІТ-кар’єри у 2025 році

IT-команда NIX 23 січня 2025 15:00

Microsoft відмовився від хмарної монополії для OpenAI

Кіра Іванова 22 січня 2025 14:55