В учебной статье «Как настроить Microsoft Azure Web App Bot для чатов» описано создание простого Web App Bot на основе шаблона.
В этом упражнении вы научитесь изменять сценарий Cloud Contact, чтобы использовать Web App Bot в чате.
Порядок действий
Для аутентификации в Direct Line Bot Framework и ведения чата используются блоки сценариев Cloud Contact, поэтому отдельная учетная запись интеграции не нужна. Скачайте пример сценария и измените его по приведенным инструкциям.
Шаг 1. Импортируйте и отредактируйте пример сценария
- В приложении «Администратор Cloud Contact» откройте сценарий, который будет использовать бота.
- Для быстрого начала импортируйте пример сценария File:App Azure Web App Bot Example.zip. В этом простом сценарии есть комментарии, поясняющие назначение блоков.
Шаг 2. Добавьте секретный ключ в Set Variable
В первом блоке Задать переменную (Set Variable) задайте следующие свойства:
- Имя переменной — укажите название блока, например «Secret».
- Значение — секретный ключ, созданный Azure Bot Framework при создании канала Direct Line. Сценарий Cloud Contact будет использовать его для аутентификации запросов Direct Line API, отправляемых для связи с ботом.

Шаг 3. Выполните аутентификацию в Direct Line API 3.0
В первом блоке Выполнить запрос по URL (Fetch URL) получите токен сеанса для аутентификации запросов к Direct Line API 3.0 с помощью секретного ключа, скопированного со страницы настройки канала Direct Line.
Задайте следующие свойства:
- Текст заголовка — укажите название блока, например «Get token».
- Тип запроса — POST
- URL запроса (URL to fetch) — https://directline.botframework.com/v3/directline/tokens/generate
- Дополнительные заголовки — Authorization: Bearer $(secret)
- Параметры URL — Нет
- Тип содержимого (Content Type) — application/JSON
- Тело запроса (Body) — пусто
- Имя пользователя — Оставить пустым
- Пароль — Оставить пустым
- Начальный путь в JSON результата — Оставить пустым
- Префикс переменных сценария для данных JSON — jstoken

Шаг 4. Добавьте токен в Set Variable
Во втором блоке Задать переменную (Set Variable) задайте следующие свойства:
- Имя переменной — укажите название блока, например «token».
- Значение — $(jstoken.token)

Шаг 5. Начните диалог
Во втором блоке Отправить сообщение (Send Message+) откройте новый диалог Direct Line, отправив запрос POST к конечной точке /v3/directline/conversations. Пока диалог открыт, бот и клиент могут обмениваться сообщениями.
При успешном выполнении запроса ответ содержит идентификатор диалога «conversationId» (он понадобится на следующих шагах), токен, количество секунд до окончания срока его действия и URL потока, через который клиент может получать действия в потоке WebSocket.
Задайте следующие свойства:
- Текст заголовка — укажите название блока, например «Start conversation».
- Тип запроса — POST
- URL запроса (URL to fetch) — https://directline.botframework.com/v3/directline/conversations/
- Дополнительные заголовки — Authorization: Bearer $(token)
- Параметры URL — Нет
- Тип содержимого (Content Type) — application/JSON
- Тело запроса (Body) — пусто
- Имя пользователя — Оставить пустым
- Пароль — Оставить пустым
- Начальный путь в JSON результата — Оставить пустым
- Префикс переменных сценария для данных JSON — conversation

Шаг 6. Отправьте сообщение клиенту
В блоке Отправить сообщение (Send Message+) задайте сообщение, которое нужно отправить в диалог.
Задайте следующие свойства:
- Тип взаимодействия (Media type) — Chat
- Сообщение — любое текстовое сообщение, например «Здравствуйте! Добро пожаловать!»

Шаг 7. Запросите ответ клиента или дождитесь его
В блоке Запросить ввод (Request Input) при необходимости запросите ответ клиента и сохраните его в переменную «user_input». Можно также просто ожидать текстового ввода после предыдущего блока сценария.
Задайте следующие свойства:
- Запросить с помощью (Prompt with) — текстовое сообщение
- Сообщение для отправки — Оставить пустым.
- Имя переменной результата — user_input

Шаг 8. Отправьте действия запросом POST
В третьем блоке Выполнить запрос по URL (Fetch URL) используйте протокол Direct Line 3.0 для обмена действиями, поддерживаемыми ботом, например сообщениями и индикаторами набора текста. Отправьте запрос POST к конечной точке /v3/directline/conversations/$(conversation.conversationId)/activities, где «$(conversation.conversationId)» — идентификатор, полученный из запроса POST предыдущего блока Fetch URL к конечной точке /v3/directline/conversations.
Задайте следующие свойства:
- Текст заголовка — укажите название блока, например «Post Activities».
- Тип запроса — POST
- URL запроса (URL to fetch) — https://directline.botframework.com/v3/directline/conversations/$(conversation.conversationId)/activities
- Дополнительные заголовки — Authorization: Bearer $(token)
- Параметры URL — Нет
- Тип содержимого (Content Type) — application/JSON
- Тело запроса (Body) — укажите объект Activity в теле запроса.
Например:
{
"type": "message",
"from": {
"id": "user1"
},
"text": "$(user_input)"
}
- Имя пользователя — Оставить пустым
- Пароль — Оставить пустым
- Начальный путь в JSON результата — Оставить пустым
- Префикс переменных сценария для данных JSON — message_id

Шаг 9. Получите действия
В четвертом блоке Выполнить запрос по URL (Fetch URL) получите действия (например, ответ бота) с помощью HTTP GET.
Задайте следующие свойства:
- Текст заголовка — укажите название блока, например «Get Bot Answer».
- Тип запроса — GET
- URL запроса (URL to fetch) — https://directline.botframework.com/v3/directline/conversations/$(conversation.conversationId)/activities
- Дополнительные заголовки — Authorization: Bearer $(token)
- Параметры URL — Нет
- Тип содержимого (Content Type) — application/JSON
- Тело запроса (Body) — пусто
- Имя пользователя — Оставить пустым
- Пароль — Оставить пустым
- Начальный путь в JSON результата — activities
- Префикс переменных сценария для данных JSON — azure_bot_answer
- Использовать GetNext для перебора данных — установите флажок.

Шаг 10. Задайте условия маршрутизации ответов бота
В блоках Условие (If) и Отправить сообщение (Send Message+) задайте следующее поведение: если у бота есть ответ, отправить его клиенту в чат с помощью $(azure_bot_answer.text).
Задайте следующие свойства:
- Метка выхода — Есть ответ (Has an answer)
- Условия
- Переменная сценария (строка)
- azure_bot_answer.replyToId
- равно (is)
- =
- $(message_id.id)

Шаг 11. Передайте ответ бота клиенту
В ветвь выхода «Has an answer» добавьте блок Отправить сообщение (Send Message+) и задайте следующие свойства:
- Тип взаимодействия (Media type) — Chat
- Сообщение — $(azure_bot_answer.text)

Шаг 12. Получите следующий ответ бота
В блоке Получить следующую запись (Get Next Record) получите следующий ответ бота, если он есть.
Задайте следующие свойства:
- Текст заголовка — Любое имя
- Направление — Следующая запись (Next record)
- Имя набора записей — azure_bot_answer

Шаг 13. Повторно запросите ввод с помощью Goto
Если ответов бота больше нет, снова запросите ввод с помощью блока Перейти к блоку (Goto).

Шаг 14. Продолжайте проверять наличие ответов бота
Добавьте еще один блок Перейти к блоку (Goto) и направьте его на блок Условие (If). Получится цикл: получить ответ бота, отправить его в чат и проверить наличие следующих ответов. Цикл выполняется, пока ответы не закончатся.

Шаг 15. Завершите диалог
В последнем блоке Выполнить запрос по URL (Fetch URL) завершите диалог: отправьте запрос POST с действием «endOfConversation» к конечной точке обмена сообщениями канала.
Задайте следующие свойства:
- Текст заголовка — укажите название блока, например «End Conversation».
- Тип запроса — POST
- URL запроса (URL to fetch) — https://directline.botframework.com/v3/directline/conversations/$(conversation.conversationId)/activities
- Дополнительные заголовки — Authorization: Bearer $(token)
- Параметры URL — Нет
- Тип содержимого (Content Type) — application/JSON
- Тело запроса (Body) — укажите действие «endOfConversation» в теле запроса:
{
"type": "endOfConversation",
"from": {
"id": "user1"
}
}
- Имя пользователя — Оставить пустым
- Пароль — Оставить пустым
- Начальный путь в JSON результата — Оставить пустым
- Префикс переменных сценария для данных JSON — Оставить пустым

Шаг 16. Сохраните сценарий
Сохраните сценарий.
Шаг 17. Назначьте сценарий точке входа чата
В нужной точке входа Messaging/Chat выберите соответствующие сценарий и сервис для чата с Web App Bot.

Настройка завершена. Теперь можно запустить чат и проверить его работу.
|
