Добрый день, друзья! Ранее мы с Вами уже рассматривали различные сервисы для создания собственных автоматизаций на базе линейки сервисов Microsoft Power Platform. Как мы уже обсуждали в предыдущей статье, в Microsoft Power Platform входит несколько очень интересных сервисов по настройке автоматизаций различного уровня сложности. Среди сервисов Microsoft Power Platform есть Power Apps, для создания приложений, Power Automate для настройки потоков автоматизации, Power BI для конфигурирования отчетов, множество дополнительных сервисов, таких как:
Все эти сервисы помогают создавать приложения, процессы и отчеты с использованием различных вспомогательных возможностей и при этом не писать код. Исключение могут составить различные формулы, которые можно использовать для достижения определенных целей, но это не программирование в чистом виде.
Однако, несмотря на все многообразие сервисов линейки Microsoft Power Platform для создания приложений, сегодня хотелось бы затронуть тему чат-ботов и посмотреть какие есть возможности для создания ботов без программирования или с минимальным программированием на технологиях Microsoft за пределами Power Platform. И сегодня у нас на очереди Bot Framework Composer.
Мы уже рассматривали с вами в одной из предыдущих статей способы создания ботов на базе Microsoft Power Virtual Agents и Power Virtual Agents for Teams и достаточно хорошо знаем какие возможности есть у подобных сервисов. В основном, данные конструкторы предлагают минимально необходимый набор возможностей для построения несложных, но функциональных диалогов. Запустить тему, провести авторизацию, задать текстовый вопрос, ожидать ответа, перейти на другую ветку диалога. Это минимально необходимый набор возможностей для чат-бота, и, в целом, в некоторых случаях, данного набора возможностей хватает для закрытия определенных задач. Однако, помимо конструктора Power Virtual Agents можно создавать чат-ботов на базе технологии Azure Bot Service и Bot Framework. Что это за технология?
Итак, Bot Framework это комплексная технология, позволяющая создавать интеллектуальных чат-ботов с поддержкой баз знаний QnA maker, поддержкой сервиса LUIS (Language Understanding) по распознаванию намерений пользователей, а также поддержкой речевых сервисов. Также дополнительно можно использовать функциональности адаптивных карточек, компьютерного зрения и различных подключаемых навыков. С помощью Bot Framework разработчики имеют возможность создавать чат-ботов, которые работают по определенным шаблонам, а также постоянно обучаются и могут искать информацию в базах знаний не по четкому соответствию символов, а по проценту совпадения с тем, что ищет пользователь. В итоге пользователю отдается информация с большим значением вероятности совпадения. Вместе с механизмом адаптивных карточек, который упрощает диалоговую систему, минимизируя длинный диалог до одной карточки, куда пользователь вводит множество данных, мы получаем достаточно мощный набор возможностей для создания чат-ботов с поддержкой публикации бота в ресурсы Microsoft Azure и вывода чат-бота в различные каналы, в том числе и в Microsoft Teams. Однако, весь этот объемный набор технологий доступен при разработке ботов с помощью кода. То есть, нужно открывать Visual Studio, создавать проект и приступать к созданию чат-бота с помощью языка программирования. А есть ли способ создать бота на базе Bot Framework с поддержкой QnA, сделать диалоги с поддержкой адаптивных карточек и HTTP запросов, опубликовать бота в ресурсы Azure и вывести в Microsoft Teams без программирования? Такой способ есть и имя ему Bot Framework Composer.
Bot Framework Composer это десктопное приложение, предоставляющее графический интерфейс для создания чат-бота на базе технологии Bot Framework. То есть это интегрированная среда разработки, позволяющая разработчикам создавать, тестировать, конфигурировать диалоги чат-бота используя готовые блоки-фрагменты, каждый из которых, после добавления на холст, необходимо настроить в редакторе. Только если раньше, для создания бота на Bot Framework необходимо было писать код, то теперь можно создавать такого же бота, но без кода. За фрагменты кода отвечают уже готовые блоки, из которых вы конструируете вашего бота и создаете набор диалогов. Созданный и протестированный бот, точно также публикуется в ресурсы Microsoft Azure, как если бы вы его написали кодом. Создание бота на Bot Composer слегка сложнее чем на простейшем Power Virtual Agents, однако, преимущества тут очевидны:
Звучит очень здорово, но я скажу, что и на деле это действительно так. Давайте посмотрим, как можно создать чат-бота на Bot Framework Composer.
Перед установкой Bot Framework Composer необходимо установить Node.js и .Net Core. После этого можно переходить к установке Bot Framework Composer. Все ссылки на последние дистрибутивы можно найти здесь. Обратите внимание, что Node.js является обязательным требованием для работы Bot Framework Composer.
Кстати, после первого запуска, рекомендую зайти в раздел Composer Settings и включить режим Early adopters. Это позволит вам получать свежие обновления, которые еще не попали в официальный релиз. Зачастую, там содержится множество полезных исправлений и нововведений, которые в официальном релизе выйдут намного позже.
При создании бота можно сразу выбрать готовый шаблон бота. Это повлияет на набор базовых диалогов и действий, которые будут уже размещены в диалогах. Например, можно сразу создать бота по шаблону QnA maker и привязать его к базе знаний. У вас будет готовый диалог поиска по базе знаний. Или взять шаблон бота-ассистента.
Впрочем, никто не мешает создать чат-бота без шаблона и начать его настраивать с нуля. После создания бота появляется интерфейс настройки диалогов и действий внутри диалогов.
Как можно заметить, концепция построения диалогов в Bot Framework Composer примерно похожа на Power Virtual Agents. Но блоков-действий для настройки намного больше.
Также есть блок действий по вызову внешних ресурсов прямо из диалога бота, без запуска Power Automate потоков.
При создании диалога, в первую очередь указываем триггер. Триггером может быть:
Все эти триггеры могут приводить к запуску определенной последовательности действий внутри диалога.
Давайте сделаем диалог назначения поручения, с помощью адаптивной карточки и последующей передачи данных в список SharePoint Online.
Создадим триггер, который будет запускаться по определенным фразам:
Далее, после срабатывания триггера, отправим в диалог с пользователем адаптивную карточку. Чтобы сконструировать адаптивную карточку идем на портал adaptivecards.io и переходим в раздел Designer. Создаем несложную адаптивную карточку из готовых блоков и копируем ее JSON.
У каждого объекта в карточке должен быть свой id и также важный момент — в JSON схеме обязательно нужно сделать раздел data для кнопок и в него положить ключи, которые в дальнейшем нам очень понадобятся.
Теперь, копируем схему карточки и отправляемся в Bot Framework Composer. В диалоге выбираем действие Send a response, добавляем Attachment типом Adaptive Card, после чего вставляем туда наш JSON.
Наконец, осталось сделать вторую часть бота, а именно, обработку ответа пользователя. После того, как пользователь введет все данные в адаптивную карточку и нажмет кнопку подтверждения, чат-бот должен отловить это событие и выполнить дальнейшие шаги по созданию поручения в списке SharePoint Online.
Для этого добавляем триггер Message Received из раздела Activities. Но данный триггер будет срабатывать на любое полученное сообщение. Поэтому детализируем этот триггер с помощью условия ниже.
Где turn это предыдущий шаг, activity это действие предыдущего шага, value это данные из действия предыдущего шага data, а valuetype это наш атрибут в адаптивной карточке, в которой пользователь нажимает на кнопку. В данном случае этот триггер будет запускаться только по нажатию на кнопку из конкретной адаптивной карточки.
Остается только выполнить операцию создания элемента. Для этого воспользуемся Logic Apps потоком. Отправляемся на портал Microsoft Azure и создаем Logic Apps поток с триггером HTTP запроса. Напомню, что Azure Logic Apps это аналог Power Automate, только в облаке Azure и без необходимости приобретать премиум лицензии. Все действия доступны сразу. Оплата идет только за выполненные потоки. Сам поток выглядит примерно так.
На входе от HTTP запроса ждем данные из адаптивной карточки. Далее создаем элемент в списке и возвращаем боту ответ с идентификатором созданной записи. Остается только вызвать этот поток с помощью HTTP запроса из диалога чат-бота с помощью действия Send an HTTP request.
В URL указываем Endpoint триггера из потока Logic Apps, а в Body передаем данные из адаптивной карточки. И в конце триггера выводим ответ от HTTP запроса в виде сообщения с идентификатором созданного поручения в SharePoint Online.
Запускаем бота локально и нажимаем Test in Emulator. Лучше заранее скачать и установить Bot Emulator, в нем отлаживать бота намного удобнее чем просто в Web chat.
Прогоняем наш диалог.
Проверяем выполнился ли Logic Apps поток.
Проверяем, создалось ли поручение в SharePoint Online.
Бот готов, осталось опубликовать его в Microsoft Azure и вывести в Teams. Идем в раздел Bot Framework Composer, Publishing profile и создаем профиль публикации. Указываем подписку Azure, в которую планируется публикация, ресурсную группу и создаем ресурсы Azure, необходимые для функционирования бота.
После того как все ресурсы будут созданы, возвращаемся в раздел Publish и публикуем бота в Azure. Это занимает несколько минут.
Далее, после публикации, открываем портал Microsoft Azure, переходим к ресурсу Azure Bot и заходим в раздел Каналы. Настраиваем канал Microsoft Teams и добавляем манифест бота в магазин приложений Teams.
Теперь можно работать с ботом уже в Teams.
В заключение хотелось бы сказать, что технология Bot Framework, вместе с приложением Composer предоставлят широкий набор возможностей для создания различных чат-ботов. Это могут быть боты-консультанты с поиском по базе знаний, боты для сопровождения сотрудников в процессе онбординга, боты для создания заявок, боты ассистенты. И создание таких ботов на базе Bot Framework Composer не требует написания кода, вся настройка производится в графическом редакторе с последующей публикацией созданного бота в ресурсы Microsoft Azure. Также не потребуется приобретение пользовательских лицензий категории Power Platform Premium. В следующей статье попробуем создать бота консультанта по базе знаний QnA Maker. Всем спасибо за внимание и хорошего дня!
- Microsoft Dataverse для создания структуры таблиц баз данных.
- Модели искусственного интеллекта Microsoft AI Builder.
- Механизм Dataflows для создания потоков обновления данных из различных источников.
- Пользовательские соединители.
- Шлюзы для интеграции с on-premises окружением.
- Коннекторы для интеграции с сервисами Azure (Azure Data Lake, Azure Tables, Azure Logic Apps, Azure SQL,...)
- Автоматическая миграция данных в Azure Synapse.
- Множество других полезных возможностей.
Все эти сервисы помогают создавать приложения, процессы и отчеты с использованием различных вспомогательных возможностей и при этом не писать код. Исключение могут составить различные формулы, которые можно использовать для достижения определенных целей, но это не программирование в чистом виде.
Однако, несмотря на все многообразие сервисов линейки Microsoft Power Platform для создания приложений, сегодня хотелось бы затронуть тему чат-ботов и посмотреть какие есть возможности для создания ботов без программирования или с минимальным программированием на технологиях Microsoft за пределами Power Platform. И сегодня у нас на очереди Bot Framework Composer.
Мы уже рассматривали с вами в одной из предыдущих статей способы создания ботов на базе Microsoft Power Virtual Agents и Power Virtual Agents for Teams и достаточно хорошо знаем какие возможности есть у подобных сервисов. В основном, данные конструкторы предлагают минимально необходимый набор возможностей для построения несложных, но функциональных диалогов. Запустить тему, провести авторизацию, задать текстовый вопрос, ожидать ответа, перейти на другую ветку диалога. Это минимально необходимый набор возможностей для чат-бота, и, в целом, в некоторых случаях, данного набора возможностей хватает для закрытия определенных задач. Однако, помимо конструктора Power Virtual Agents можно создавать чат-ботов на базе технологии Azure Bot Service и Bot Framework. Что это за технология?
Bot Framework и Azure Bot Service
Итак, Bot Framework это комплексная технология, позволяющая создавать интеллектуальных чат-ботов с поддержкой баз знаний QnA maker, поддержкой сервиса LUIS (Language Understanding) по распознаванию намерений пользователей, а также поддержкой речевых сервисов. Также дополнительно можно использовать функциональности адаптивных карточек, компьютерного зрения и различных подключаемых навыков. С помощью Bot Framework разработчики имеют возможность создавать чат-ботов, которые работают по определенным шаблонам, а также постоянно обучаются и могут искать информацию в базах знаний не по четкому соответствию символов, а по проценту совпадения с тем, что ищет пользователь. В итоге пользователю отдается информация с большим значением вероятности совпадения. Вместе с механизмом адаптивных карточек, который упрощает диалоговую систему, минимизируя длинный диалог до одной карточки, куда пользователь вводит множество данных, мы получаем достаточно мощный набор возможностей для создания чат-ботов с поддержкой публикации бота в ресурсы Microsoft Azure и вывода чат-бота в различные каналы, в том числе и в Microsoft Teams. Однако, весь этот объемный набор технологий доступен при разработке ботов с помощью кода. То есть, нужно открывать Visual Studio, создавать проект и приступать к созданию чат-бота с помощью языка программирования. А есть ли способ создать бота на базе Bot Framework с поддержкой QnA, сделать диалоги с поддержкой адаптивных карточек и HTTP запросов, опубликовать бота в ресурсы Azure и вывести в Microsoft Teams без программирования? Такой способ есть и имя ему Bot Framework Composer.
Bot Framework Composer
Bot Framework Composer это десктопное приложение, предоставляющее графический интерфейс для создания чат-бота на базе технологии Bot Framework. То есть это интегрированная среда разработки, позволяющая разработчикам создавать, тестировать, конфигурировать диалоги чат-бота используя готовые блоки-фрагменты, каждый из которых, после добавления на холст, необходимо настроить в редакторе. Только если раньше, для создания бота на Bot Framework необходимо было писать код, то теперь можно создавать такого же бота, но без кода. За фрагменты кода отвечают уже готовые блоки, из которых вы конструируете вашего бота и создаете набор диалогов. Созданный и протестированный бот, точно также публикуется в ресурсы Microsoft Azure, как если бы вы его написали кодом. Создание бота на Bot Composer слегка сложнее чем на простейшем Power Virtual Agents, однако, преимущества тут очевидны:
- Расширенные возможности чат-ботов с поддержкой QnA баз знаний, функциональностей LUIS, встроенных (и не лицензируемых дополнительно) HTTP запросов.
- Не требуются пользовательские лицензии. Вы оплачиваете только потребление ресурсов Azure. Там, где Power Virtual Agents стоит 1000 долларов за 2000 сессий в месяц, Ваш чат-бот на Bot Composer может едва съедать 100 долларов в месяц за существенно большее количество сессий.
- Внедрение чат-бота в любые каналы.
- Расширение чат-бота за счет подключаемых навыков из галереи навыков. Также поддерживается и подключение самостоятельно разработанных навыков.
- Тесная интеграция как со всеми сервисами Microsoft Azure, так и с сервисами Microsoft 365 без приобретения премиум лицензий.
- Встроенная поддержка адаптивных карточек.
- Удобный механизм отладки бота в Bot Emulator.
- Возможность расширения чат-ботов Power Virtual Agents с помощью диалогов Bot Framework Composer.
Звучит очень здорово, но я скажу, что и на деле это действительно так. Давайте посмотрим, как можно создать чат-бота на Bot Framework Composer.
Установка Bot Framework Composer
Перед установкой Bot Framework Composer необходимо установить Node.js и .Net Core. После этого можно переходить к установке Bot Framework Composer. Все ссылки на последние дистрибутивы можно найти здесь. Обратите внимание, что Node.js является обязательным требованием для работы Bot Framework Composer.
Кстати, после первого запуска, рекомендую зайти в раздел Composer Settings и включить режим Early adopters. Это позволит вам получать свежие обновления, которые еще не попали в официальный релиз. Зачастую, там содержится множество полезных исправлений и нововведений, которые в официальном релизе выйдут намного позже.
Создание чат-бота Bot Framework Composer
При создании бота можно сразу выбрать готовый шаблон бота. Это повлияет на набор базовых диалогов и действий, которые будут уже размещены в диалогах. Например, можно сразу создать бота по шаблону QnA maker и привязать его к базе знаний. У вас будет готовый диалог поиска по базе знаний. Или взять шаблон бота-ассистента.
Впрочем, никто не мешает создать чат-бота без шаблона и начать его настраивать с нуля. После создания бота появляется интерфейс настройки диалогов и действий внутри диалогов.
Как можно заметить, концепция построения диалогов в Bot Framework Composer примерно похожа на Power Virtual Agents. Но блоков-действий для настройки намного больше.
Также есть блок действий по вызову внешних ресурсов прямо из диалога бота, без запуска Power Automate потоков.
Создание диалога Bot Framework Composer
При создании диалога, в первую очередь указываем триггер. Триггером может быть:
- Намерение пользователя. Выражения, которые могут привести к запуску диалога.
- Запрос к QnA базе знаний.
- Событие на уровне диалога. Запуск диалога, отмена диалога, ошибка в диалоге.
- Активити. Это может быть ответ на сообщение, нажатие на кнопку в адаптивной карточке и так далее.
- Настраиваемые события.
- Незнакомые намерения. В том случае если по другим типам триггеров ничего не нашлось, чат-бот уходит в ветку Unknown intent.
- Действия внутри Microsoft Teams.
Все эти триггеры могут приводить к запуску определенной последовательности действий внутри диалога.
Давайте сделаем диалог назначения поручения, с помощью адаптивной карточки и последующей передачи данных в список SharePoint Online.
Создадим триггер, который будет запускаться по определенным фразам:
Далее, после срабатывания триггера, отправим в диалог с пользователем адаптивную карточку. Чтобы сконструировать адаптивную карточку идем на портал adaptivecards.io и переходим в раздел Designer. Создаем несложную адаптивную карточку из готовых блоков и копируем ее JSON.
У каждого объекта в карточке должен быть свой id и также важный момент — в JSON схеме обязательно нужно сделать раздел data для кнопок и в него положить ключи, которые в дальнейшем нам очень понадобятся.
Теперь, копируем схему карточки и отправляемся в Bot Framework Composer. В диалоге выбираем действие Send a response, добавляем Attachment типом Adaptive Card, после чего вставляем туда наш JSON.
Наконец, осталось сделать вторую часть бота, а именно, обработку ответа пользователя. После того, как пользователь введет все данные в адаптивную карточку и нажмет кнопку подтверждения, чат-бот должен отловить это событие и выполнить дальнейшие шаги по созданию поручения в списке SharePoint Online.
Для этого добавляем триггер Message Received из раздела Activities. Но данный триггер будет срабатывать на любое полученное сообщение. Поэтому детализируем этот триггер с помощью условия ниже.
Где turn это предыдущий шаг, activity это действие предыдущего шага, value это данные из действия предыдущего шага data, а valuetype это наш атрибут в адаптивной карточке, в которой пользователь нажимает на кнопку. В данном случае этот триггер будет запускаться только по нажатию на кнопку из конкретной адаптивной карточки.
Остается только выполнить операцию создания элемента. Для этого воспользуемся Logic Apps потоком. Отправляемся на портал Microsoft Azure и создаем Logic Apps поток с триггером HTTP запроса. Напомню, что Azure Logic Apps это аналог Power Automate, только в облаке Azure и без необходимости приобретать премиум лицензии. Все действия доступны сразу. Оплата идет только за выполненные потоки. Сам поток выглядит примерно так.
На входе от HTTP запроса ждем данные из адаптивной карточки. Далее создаем элемент в списке и возвращаем боту ответ с идентификатором созданной записи. Остается только вызвать этот поток с помощью HTTP запроса из диалога чат-бота с помощью действия Send an HTTP request.
В URL указываем Endpoint триггера из потока Logic Apps, а в Body передаем данные из адаптивной карточки. И в конце триггера выводим ответ от HTTP запроса в виде сообщения с идентификатором созданного поручения в SharePoint Online.
Запускаем бота локально и нажимаем Test in Emulator. Лучше заранее скачать и установить Bot Emulator, в нем отлаживать бота намного удобнее чем просто в Web chat.
Прогоняем наш диалог.
Проверяем выполнился ли Logic Apps поток.
Проверяем, создалось ли поручение в SharePoint Online.
Бот готов, осталось опубликовать его в Microsoft Azure и вывести в Teams. Идем в раздел Bot Framework Composer, Publishing profile и создаем профиль публикации. Указываем подписку Azure, в которую планируется публикация, ресурсную группу и создаем ресурсы Azure, необходимые для функционирования бота.
После того как все ресурсы будут созданы, возвращаемся в раздел Publish и публикуем бота в Azure. Это занимает несколько минут.
Далее, после публикации, открываем портал Microsoft Azure, переходим к ресурсу Azure Bot и заходим в раздел Каналы. Настраиваем канал Microsoft Teams и добавляем манифест бота в магазин приложений Teams.
Теперь можно работать с ботом уже в Teams.
В заключение хотелось бы сказать, что технология Bot Framework, вместе с приложением Composer предоставлят широкий набор возможностей для создания различных чат-ботов. Это могут быть боты-консультанты с поиском по базе знаний, боты для сопровождения сотрудников в процессе онбординга, боты для создания заявок, боты ассистенты. И создание таких ботов на базе Bot Framework Composer не требует написания кода, вся настройка производится в графическом редакторе с последующей публикацией созданного бота в ресурсы Microsoft Azure. Также не потребуется приобретение пользовательских лицензий категории Power Platform Premium. В следующей статье попробуем создать бота консультанта по базе знаний QnA Maker. Всем спасибо за внимание и хорошего дня!