Як навчити Алісу своїми функціями - Асистент Дуся

  1. Яндекс Діалоги (бета)
  2. Як створити навик для Аліси
  3. Створюємо навик на Zenbot
  4. Код для Zenbot
  5. Як завантажити бота на Zenbot
  6. Тестуємо бота в Zenbot
  7. Підключаємо бота до Аліси
  8. Робимо бота розумнішими
  9. А що-небудь цікавіше є?
  10. кілька корисних речей
  11. перший запит
  12. Як закінчити сесію
  13. Як синтезувати мова
  14. Як сформувати JSON відповідь
  15. Куди далі?

Зовсім недавно   Яндекс оголосив   про те, що тепер будь-який бажаючий може створити для голосового асистента Аліса свої власні функції

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

У цій статті ми розповімо і покажемо, як вже зараз можна створити голосову функцію для Аліси, яка буде розуміти команди на природній мові без знань в лінгвістиці, вивчення API Аліси і оренди серверів.

У цій статті ми розповімо і покажемо, як вже зараз можна створити голосову функцію для Аліси, яка буде розуміти команди на природній мові без знань в лінгвістиці, вивчення API Аліси і оренди серверів

Як ви напевно пам'ятаєте, ми пару років назад запустили свою платформу для створення чат-ботів під назвою Zenbot . Вона дозволяє легко створювати своїх чат-ботів для будь-яких месенджерів і каналів типу Telegram, Facebook, або навіть створити чат-бота або функцію для Дусі. І при цьому вам не знадобиться орендувати сервера і шукати рішення для процесингу природної мови або діалогового движка. Все це вже є в Zenbot.

З тих пір пройшло досить багато часу. І хоча тепер у нас уже майже готова набагато більш просунута платформа з крутим інтерфейсом, яку ми представимо зовсім скоро (в кінці травня), але zenbot.org як і раніше добре справляється зі своїми функціями і його цілком можна використовувати вже сьогодні для створення функцій Аліси .

Яндекс Діалоги (бета)

Отже, Яндекс вирішив надати всім ентузіастам можливість першими спробувати свої сили в створенні додаткових навичок для Аліси. Так-так, в Алісі це називається «Навички». Власне це аналог скриптів в асистенті Дуся, але з деякими відмінностями.

Різниця перше - додаткові навички Аліси запускаються тільки спеціальними командами «включи», «відкрий» або «запусти». Наприклад якщо ваш навик називається «Мій новий навик», то користувач спершу повинен сказати Алісі «Запусти мій новий навик». Тільки після цього Аліса запустить ваш навик і передасть управління йому.

Різниця друге - всі навички Аліси працюють тільки на сервері, а не на пристрої. Тому не вийде виконати будь-яку операцію прямо на пристрої (наприклад, відкрити іншу програму, відправити СМС контакту або зробити дзвінок). Також навик Аліси не зможе відправити будь-якої запит на локальний IP адреса в вашому будинку або офісі (а це буває потрібно для функцій типу розумний будинок).

Ну і нарешті ще одна відмінність в тому, що навіть якщо навик потрібен тільки вам, і ви не хочете, щоб ним користувалися інші люди, вам все одно доведеться його опублікувати, пройшовши процедуру модерації в Яндексі. І його все одно побачать всі користувачі Аліси.

До речі каталог користувальницьких навичок для Аліси зараз доступний тільки в бета-версії додатка Яндекс . Натискаємо меню в правому верхньому куті і далі - Що вміє Аліса.

Як створити навик для Аліси

Зараз щоб створити навик для Аліси вам буде потрібно зареєструвати навик на   https://beta Зараз щоб створити навик для Аліси вам буде потрібно зареєструвати навик на https://beta.dialogs.yandex.ru / І надати webhook сервера, де власне і працює вся логіка вашого досвіду. Тобто Яндекс пропонує нам самим орендувати сервер, написати програму навички на якомусь мові програмування, яка реалізує API Аліси і потім розгорнути її на цьому сервері. Додатково до цього, потрібно ще й навчитися обробляти мова на природній мові, адже користувачі Аліси використовують мікрофон або клавіатуру, щоб взаємодіяти з асистентом ...

Коротше кажучи, потрібно виконати чимало роботи, перш ніж наш навик запрацює. А Zenbot якраз звільняє нас від цієї рутини, вирішуючи всі питання з серверами, протоколами та природною мовою!

Створюємо навик на Zenbot

Отже, з чого почати створення навички для Аліси на Zenbot Отже, з чого почати створення навички для Аліси на Zenbot? Звичайно ж з логіна на zenbot.org . Відкриваємо сторінку і натискаємо кнопку Sign in with Github.

Вам знадобиться створити обліковий запис на github.com де заодно і можна зберігати вихідний код навички для Аліси

Відкриється вікно, де можна додати нового бота (бот - це і є наша голосова функція для Аліси). Після додавання відкриється сторінка налаштувань бота. Тут же можна буде бота потестировать.

Якщо хочете скоріше потестировать зенбот з Алісою, то використовуйте наш тестовий проект як написано тут https://github.com/uzyovoys/zenbot/tree/master/alice

Код для Zenbot

Бот на Zenbot - це теж код. Код для Zenbot - це XML і JS файли, в яких описується, як розвивається діалог з користувачем. Власне навколо понять «діалог», «контекст», «сутності» і крутиться вся платформа Zenbot. Детально про це можна прочитати в документації до Zenbot . Тут же ми опишемо основні моменти і наведемо простий приклад.

Отже, створимо на своєму ПК звичайний текстовий файл наприклад skill.xml і напишемо там

<Context> <input pattern = "* привіт * *"> <output value = "Ну првіет" /> </ input> </ context>

Все просто. У нас є головний діалоговий контекст (тег context), в ньому користувач говорить щось типу «Ну привіт Аліса», а Аліса відповідає «Ну привіт». Тег input описує, які фрази очікуються від користувача, а output - що потрібно відповісти, коли користувач говорить щось схоже.

Звичайно ж це найпростіший приклад. Можна обробляти набагато складніші фрази, Zenbot вміє на льоту витягувати їх фраз дані, перетворювати в потрібний формат. Відповіді теж можуть бути складними (далі подивимося як це зробити). Можна також перемикати користувача на інший контекст діалогу і так далі. Все це описано в документації з прикладами .

Як завантажити бота на Zenbot

Файл ми створили (до речі в реально великих проектах можна створити багато файлів xml і js). Тепер нам потрібно створити Git репозиторій наприклад на github.com і завантажити код туди. Це потрібно зробити один раз для проекту, потім можна просто заливати новий код на github і Zenbot буде автоматично або вручну оновлювати вашого бота.

Після цього зайдемо в налаштування нашого бота на Zenbot і натиснемо Configure Git repository. Заповнюємо поля для нашого сховища. Якщо ви використовуєте github, то поля ім'я користувача та пароль можна не вказувати. Ще в кожному сховищі можна тримати код для декількох пошукових роботів. Тому в налаштуваннях є поле Directory. Тут можна вказати папку в ваших исходниках, де лежать XML і JS файли для саме цього бота.

Натискаємо Save settings. Після цього Zenbot спробує зібрати вашого бота і розповість про свій успіх або провал на сторінці Build reports. До речі тут же можна натиснути кнопку Rebuild now щоб скоріше пересобрать бота, коли ви змінили його код в репозиторії.

Якщо все пройшло добре і ваш бот написаний правильно, то побачимо ось таке повідомлення

Якщо все пройшло добре і ваш бот написаний правильно, то побачимо ось таке повідомлення

Тестуємо бота в Zenbot

Натиснемо на кнопку Test this bot - і відкриється сторінка для тестів. Тут можна написати «привіти» і побачити відповідь від сервера Zenbot. Це простий висновок в форматі JSON, в якому можна побачити все що вийшло в результаті. Нам це знадобиться тільки для налагодження. І нарешті тепер можна підключити бота до Аліси.

Підключаємо бота до Аліси

Зайдіть в налаштування навички Аліси в інтерфейсі https://beta.dialogs.yandex.ru/developer/ і вкажіть в якості Webhook URL адреса виду https://zenbot.org/api/alice/ключ

Як ключ впишіть ідентифікатор вашого бота в Zenbot. Його можна побачити в адресному рядку на zenbot.org. Це послідовність латинських букв і цифр в кінці адреси.

Це послідовність латинських букв і цифр в кінці адреси

І тепер можна натиснути на вкладку Тестування в Діалогах для Аліси і спробувати написати «привіт». Ми побачимо відповіді від нашого бота!

Робимо бота розумнішими

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

<Context> <input pattern = "* (привіт * | здрастуй *) *"> <! - Вітаємось якщо знаємо ім'я -> <output value = "Привіт $ UserName!" if = "full ($ UserName)" /> <! - Або переходимо до внутрішнього контексту щоб з'ясувати ім'я -> <context if = "empty ($ UserName)"> <output value = "Привіт! А як тебе звати? "/> <input pattern =" $ Text "> <! - зберегти мія користувача в змінну UserName -> <var name =" UserName "value =" cap ($ Text) "scope =" user "/> <output value = "Приємно познайомитися, $ UserName!" /> </ input> </ context> </ input> </ context>

Розберемо. Тут після того як користувач скаже «Привіт Аліса», бот перевірить змінну UserName, і якщо вона порожня (тобто її немає зовсім), переведе користувача в інший діалоговий контекст, де попросить назвати своє ім'я. Після того як користувач відповість, бот збереже ім'я в змінну UserName (функція cap просто зробить першу букву імені великої) і скаже користувачеві «Приємно познайомитися, Вася» (якщо користувач назвав себе Вася).

Наступного разу, коли той же користувач знову активує ваш навик для Аліси і скаже «привіт», Аліса вже привітається з ним по імені. Тому що Zenbot зберіг його в базі даних. Вам не потрібно самостійно зберігати / витягувати дані з будь-якої бази даних. Zenbot зробить цю часту операцію для вас.

А що-небудь цікавіше є?

Є звичайно. Спеціально для нашої статті ми підготували цікавіший навик для Аліси, який вміє не тільки знайомитися з користувачем, але і шукати інформацію у Вікіпедії і відображати кнопки в інтерфейсі Аліси. Цього бота можна знайти на нашому гітхабе https://github.com/uzyovoys/zenbot/tree/master/alice

Робимо ті ж кроки. Створюємо бота на zenbot.org, в настройках сховища прописуємо URL https://github.com/uzyovoys/zenbot і в поле Directory вказуємо alice. Потім йдемо на https://beta.dialogs.yandex.ru/developer/ і створюємо новий діалог. Прив'язуємо його до боту на Zenbot через Webhook URL. І тестуємо.

кілька корисних речей

Як додати кнопки?

Використовуйте тег sample. Він створює кнопку, при натисканні на яку в бота прийде запит, текст якого вказано на кнопці. Детальніше в документації по sample .

перший запит

Коли користувач активує ваш навик фразою «Запусти такий-то навик», вашому боту прийде порожній запит. На нього потрібно видати реакцію (наприклад привітатися або щось ще). Для цього обов'язково заведіть у своєму боті input такого виду

<Input pattern = "*"> <output value = "Наприклад привіт" /> </ input>

Як закінчити сесію

Якщо у вашому навику в якийсь момент потрібно закінчити сесію, просто створіть змінну end_session ось так

<Input pattern = "* поки *"> <var name = "end_session" value = "javascript: true" /> <output value = "Поки" /> </ input>

Як синтезувати мова

Якщо ви хочете, щоб Аліса вимовила не те, що ваш бот повертає у вигляді текстового відповіді, то створіть змінну tts ось так

<Input pattern = "* поки *"> <var name = "tts" value = "Пок + Асіка" /> <output value = "Поки" /> </ input>

Як сформувати JSON відповідь

Якщо ви хочете повністю сформувати відповідь в JSON форматі по протоколу Аліси (наприклад якщо вам не вистачає функціоналу тега sample), то ви можете повернути JSON відповіді в output ось так

<Input pattern = "* поки *"> <output value = '{ "text": "Поки!", "End_session": false, "buttons": []}' /> </ input>

Куди далі?

Для Zenbot ми написали детальну документацію з прикладами . Ще у нас є репозиторій з прикладами готових ботів і FAQ який описує деякі основні особливості платформи. У вас не займе багато часу, щоб зрозуміти, як писати сценарії ботів, які розуміють природну мову і можуть виконувати корисні (і непотрібні) функції.

Як вже було сказано раніше, ми готуємо до виходу більш просунуту платформу з безліччю унікальних NLP інструментів. Але реліз буде тільки через два місяці, а зараз zenbot.org допоможе вам освоїти створення навичок для Аліси, які вміють працювати з голосовими і текстовими командами.

А ще ми створили чатик в Телеграма для обговорення всіх питань, пов'язаних з розробкою ботів на zenbot.org і анонсів нової платформи. Підключайтеся!

А як тебе звати?
А що-небудь цікавіше є?