Пошаговое руководство по созданию системы бронирования

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

SMS — это надежная и недорогая альтернатива для связи с людьми, живущими в отдаленных районах. В этой статье вы узнаете, как создать систему записи на прием к врачу, которая позволяет пользователям записываться на прием через SMS.

Системный Обзор

Архитектура системы бронирования по SMS показана ниже:

Twilio — это канал связи между бот-службой Microsoft Azure и конечным пользователем. Ядром системы является Azure Bot, построенный на Microsoft Bot Framework. Когда бот получает сообщение, он запрашивает Понимание языка (LUIS) для анализа сообщения. LUIS отвечает намерением сообщения, которое бот использует для полезного ответа.

Предпосылки

Вам понадобятся следующие технологии:

Создание приложения-службы распознавания речи

Конфигурация Azure

Вам нужно создать группу ресурсов для хранения ресурсов Azure, которые вы создадите позже.

Откройте PowerShell и войдите в Azure с помощью Azure CLI:

az login

Выполните следующую команду, чтобы создать новую группу ресурсов:

az group create --name rg-bot --location [AZURE_LOCATION]

Замените [AZURE_LOCATION] именем предпочитаемого расположения Azure.

Каждый ресурс в Azure хранится в группе ресурсов, а каждый ресурс и группа ресурсов в Azure хранятся в определенном регионе или расположении Azure. Существуют «разные причины для выбора разных мест, но чаще всего вы хотите выбрать место, которое находится ближе всего к вам и вашим конечным пользователям. Вы можете найти все регионы, запустив az account list-locations -o table. Найдите предпочтительное расположение и используйте значение из столбца Name, чтобы указать расположение при создании ресурсов Azure. Имейте в виду, что не все ресурсы доступны во всех расположениях Azure». — Документы Майкрософт

Для взаимодействия с определенными типами ресурсов Azure необходимо включить поставщика ресурсов для этих типов ресурсов. Большинство общих поставщиков ресурсов включены по умолчанию, но вы будете использовать функцию распознавания речи (LUIS), которая является частью поставщика ресурсов Cognitive Services, который по умолчанию не включен.

Вы можете зарегистрировать поставщика ресурсов Cognitive Services на портале Azure или использовать интерфейс командной строки Azure, показанный ниже.

Сначала проверьте состояние поставщика ресурсов Cognitive Services с помощью этой команды:

az provider show --namespace Microsoft.CognitiveServices -o table

Если RegistrationState имеет значение UnRegistered, выполните следующую команду, чтобы зарегистрировать его:

az provider register --namespace Microsoft.CognitiveServices --wait

Выполнение этой команды может занять минуту.

Создайте приложение LUIS и обучите модель

Language Understanding (LUIS) — это облачная служба искусственного интеллекта, входящая в состав Cognitive Services Azure. Он может обрабатывать текст на естественном языке, чтобы предсказывать его общее значение и извлекать релевантную подробную информацию.

Чтобы научиться использовать LUIS, вам необходимо знать несколько основных понятий:

  • Намерение: Цель или задача, выраженная в высказывании пользователя.
  • Сущность: предмет или элемент, имеющий отношение к намерениям пользователя.
  • Высказывание: единица речи. Каждое предложение пользователя — это высказывание.

LUIS будет действовать как мозг бота, помогая боту понимать входящие сообщения.

Создайте приложение LUIS

Войдите на Портал LUIS под своей учетной записью Azure.

Если вы новый пользователь LUIS, вам будет предложено Выбрать исходный ресурс.

Нажмите Создать новый авторский ресурс, если вы еще не создали его.

Появится еще одно модальное окно для создания нового авторского ресурса.

  • Выберите «rg-bot» в раскрывающемся списке группы ресурсов Azure.
  • Введите «запись на прием» в поле имени ресурса Azure.
  • Выберите предпочитаемый регион в раскрывающемся списке «Местоположение».
  • Выберите «F0» в ценовой категории
  • Нажмите Готово

Вы будете перенаправлены обратно в предыдущее модальное окно «Выберите авторский ресурс». Теперь вы можете нажать кнопку «Готово», после чего вы будете перенаправлены на страницу панели инструментов.

На странице панели инструментов щелкните Создать новое приложение. Появится модальное окно «Создать новое приложение».

Введите «Appointment-booking» в поле «Имя» и нажмите «Готово».

После того, как приложение будет создано, будет показано учебное модальное окно. Щелкните за пределами модального окна, чтобы перейти на вновь созданную страницу сведений о приложении.

Вам нужно будет собрать некоторую ключевую информацию для последующего использования.

  • Нажмите на вкладку УПРАВЛЕНИЕ, а затем на ссылку Настройки.
  • Обратите внимание на идентификатор приложения.
  • Щелкните ссылку Ресурсы Azure в меню слева.
  • Перейдите на вкладку Авторский ресурс.

Обратите внимание на первичный ключ (ключ LUIS API) и URL-адрес конечной точки.

Теперь приложение LUIS для записи на прием успешно создано. Следующим шагом является создание сердцевины приложения: модели LUIS.

Импортируйте модель

Существует два способа создания модели. Вы можете перейти на вкладку Build приложения, а затем создать объекты и намерения вручную. Или вы можете импортировать в приложение предопределенный файл модели. Чтобы сэкономить время, вы можете загрузить этот JSON-файл модели LUIS и импортировать его.

  • После загрузки файла модели JSON перейдите на страницу «Версии» через УПРАВЛЕНИЕ › Версии.
  • Нажмите кнопку «Импорт».
  • Выберите «Импортировать как JSON», чтобы открыть всплывающее окно импорта.

  • Нажмите на кнопку Выбрать файл
  • Выберите файл JSON
  • Нажмите кнопку Готово

Новая модель будет импортирована в приложение.

Перейдите на страницу «Сборка» > «Активы приложения» и выберите «vAppointmentBookingBot.LUISModel.json» в раскрывающемся списке версий. Вы можете найти его в навигационной цепочке в верхнем левом углу страницы.

Теперь вы увидите вновь созданные намерения и сущности.

Обучение, тестирование и публикация модели LUIS

После импорта намерений и сущностей кнопка Train на верхней панели навигации становится доступной.

Нажмите кнопку Train, чтобы начать процесс обучения.

Кнопка «Обучение» будет отключена, а кнопка «Тест» станет активной после завершения обучения.

Чтобы протестировать новую модель, нажмите кнопку «Тест». Справа появится всплывающая панель Test. Вы можете ввести высказывание в тестовую панель, чтобы попробовать его.

На приведенном ниже снимке экрана «Я хочу увидеть доктора Кэти» получает 0,973 балла из 1 для намерения BookAppointment. В окне Inspect он также правильно идентифицирует сущность Doctor как «kathy».

Поскольку результат теста выглядит довольно хорошо, теперь вы можете опубликовать приложение LUIS.

  • Нажмите кнопку «Опубликовать» на панели навигации.
  • Выберите производственный слот
  • Нажмите Готово

После завершения публикации отображается уведомление об успешном сообщении, как показано выше. Это означает, что приложение LUIS готово к использованию!

Создайте бота

Создайте бота, используя шаблон Bot Framework.

В этом руководстве вы собираетесь использовать шаблоны SDK Bot Framework v4 для создания проекта бота. Откройте оболочку и установите шаблоны Bot Framework с помощью интерфейса командной строки .NET с помощью следующих команд:

dotnet new -i Microsoft.Bot.Framework.CSharp.EchoBot
dotnet new -i Microsoft.Bot.Framework.CSharp.CoreBot
dotnet new -i Microsoft.Bot.Framework.CSharp.EmptyBot

В этом руководстве вы будете использовать только шаблон CoreBot, но не стесняйтесь исследовать шаблоны EchoBot и EmptyBot.

Теперь вы можете использовать только что установленный шаблон для создания нового проекта бота. Выполните следующую команду, чтобы создать проект бота:

dotnet new corebot -n AppointmentBot

Вы также можете создавать проекты, используя шаблоны Bot Framework из Visual Studio или VS Code.

После создания проекта с помощью предыдущей команды проект создается в папке AppointmentBot/CoreBot, а корневое пространство имен устанавливается на «CoreBot».

Это не соответствует тому, как обычно работают шаблоны .NET, но это можно легко исправить. Следующий сценарий PowerShell переместит содержимое в папку AppointmentBot, переименует проект и изменит все пространства имен на «AppointmentBot».

Запустите следующий скрипт с помощью PowerShell:

$CorrectProjectName = "AppointmentBot"
Push-Location "./$CorrectProjectName"
Move-Item ./CoreBot/* ./
Remove-Item ./CoreBot
Move-Item ./CoreBot.csproj "./$CorrectProjectName.csproj"
Get-ChildItem * -Recurse -File | ForEach-Object { (Get-Content $_) -replace 'CoreBot', $CorrectProjectName | Set-Content $_ }
Pop-Location

Откройте проект с помощью предпочитаемого редактора .NET. Структура проекта будет выглядеть следующим образом:

Сгенерированный проект поставляется с образцом бота для бронирования авиабилетов. Удалите эти связанные модели и файлы диалогов, как указано ниже:

[projectRoot]\CognitiveModels\FlightBooking.cs
[projectRoot]\CognitiveModels\FlightBooking.json
[projectRoot]\CognitiveModels\FlightBookingEx.cs
[projectRoot]\Dialogs\BookingDialog.cs
[projectRoot]\Dialogs\MainDialog.cs
[projectRoot]\BookingDetails.cs
[projectRoot]\FlightBookingRecognizer.cs

Чтобы сэкономить время, вы можете запустить приведенный ниже скрипт, чтобы удалить вышеуказанные файлы. Запустите скрипт из корневой папки проекта, выполнив следующие действия:

rm CognitiveModels/FlightBooking.cs
rm CognitiveModels/FlightBooking.json
rm CognitiveModels/FlightBookingEx.cs
rm Dialogs/BookingDialog.cs
rm Dialogs/MainDialog.cs
rm BookingDetails.cs
rm FlightBookingRecognizer.cs

Вам также потребуется удалить строки с 41 по 51 в файле Startup.cs. Это ссылки на удаленные файлы.

После очистки класс Startup будет выглядеть следующим образом:

Когнитивная модель записи на прием

Теперь, когда проект очищен, вы можете приступить к реализации собственной логики. Далее вы создадите модель, которую LUIS вернет нам с данными анализа.

Далее вы создадите эти файлы в папке CognitiveModels :

  • DoctorBooking.cs: этот файл будет содержать класс DoctorBooking, представляющий данные, возвращаемые LUIS.
  • DoctorBookingEx.cs: этот файл будет расширять DoctorBooking с помощью частичного класса для упрощения доступа к объектам результатов LUIS.

Создайте CognitiveModels/Doctorbooking.cs и добавьте следующий код:

Я сгенерировал этот класс с помощью Bot Framework CLI и предоставил его для вашего удобства, но вы также можете сгенерировать его самостоятельно.

Сначала необходимо установить node.js и интерфейс командной строки BF, если вы хотите создать Doctorbooking.cs самостоятельно.

Вы можете установить интерфейс командной строки BF с помощью следующей команды: ​​​​npm i -g @microsoft/botframework-cli

Загрузите JSON-файл модели LUIS в каталог проекта, а затем выполните следующую команду из корневого каталога проекта:

​​bf luis:generate:cs --in=AppointmentBookingBot.LUISModel.json --out=CognitiveModels/DoctorBooking.cs --className=AppointmentBot.CognitiveModels.DoctorBookin

Создайте файл CognitiveModels/DoctorBookingEx.cs и добавьте следующий код:

Подключите бота к приложению LUIS

Чтобы интегрировать службу бота с приложением LUIS, необходимо добавить идентификатор приложения LUIS, ключ API и URL-адрес конечной точки API в конфигурацию проекта.

Замените содержимое appsettings.json приведенным ниже JSON:

{
  "MicrosoftAppType": "",
  "MicrosoftAppId": "",
  "MicrosoftAppPassword": "",
  "MicrosoftAppTenantId": "",
  "LuisAppId": "[YOUR_LUIS_APP_ID]",
  "LuisApiKey": "<SET_USING_USER_SECRETS>",
  "LuisApiEndpointUrl": "[LUIS_ENDPOINT_URL]"
}

Замените [YOUR_LUIS_APP_ID] своим идентификатором приложения LUIS, а [LUIS_ENDPOINT_URL] — URL-адресом конечной точки LUIS, который вы записали ранее.

Обратите внимание, что вы не должны хранить конфиденциальную информацию, включая ключи API или токены, в исходном коде. Вот почему вы будете настраивать LuisApiKey с помощью Инструмента Secret Manager.

Включите инструмент Secret Manager для своего проекта, выполнив следующую команду в корневом каталоге проекта:

dotnet user-secrets init

Выполните следующую команду, чтобы настроить LuisApiKey с помощью диспетчера секретов:

dotnet user-secrets set "LuisApiKey" "[YOUR_LUIS_API_KEY]"

Замените [YOUR_LUIS_API_KEY] первичным ключом приложения LUIS, который вы записали ранее.

Приложение-бот извлечет параметры, которые вы только что настроили, чтобы установить соединение с вашим приложением LUIS в классе AppointmentBookingRecognizer ниже. Создайте новый файл AppointmentBookingRecognizer.cs и добавьте следующее содержимое:

Распознаватель используется для распознавания пользовательского ввода и возврата намерений и объектов в DialogContext. В классе AppointmentBookingRecognizer устанавливается соединение с конечной точкой LUIS API. Он также реализует метод RecognizeAsync, который вызывается диалогами для извлечения намерений и сущностей из высказывания пользователя.

Управляйте ходом разговора с помощью диалогов

Вам нужно использовать Диалоги для управления разговорами между пользователем и ботом.

«Диалоги — центральная концепция SDK, предоставляющая способы управления продолжительным диалогом с пользователем. Диалог может быть составлен из других диалогов». — Документы Майкрософт

Инфраструктура Bot предоставляет широкий набор диалогов, упрощающих создание диалога. В этом примере вы создадите класс AppointmentBookingDialog для управления основным диалогом. Он состоит из нескольких диалогов, включая каскадный диалог и диалоговые окна подсказок.

Диалог водопада используется для определения последовательности шагов. Как показано на диаграмме ниже, бот взаимодействует с пользователем посредством линейного процесса.

Создайте новый файл AppointmentDetails.cs в корне проекта и добавьте следующий код:

Класс AppointmentDetails является классом модели диалогового окна. Затем создайте файл AppointmentBookingDialog.cs в папке Dialogs. AppointmentBookingDialog реализует описанный выше процесс.

Добавьте в файл следующий код:

Основной диалог

Класс MainDialog управляет основным потоком процессов. Создайте файл MainDialog.cs в папке Dialogs (код можно скачать здесь).

Эта диаграмма дает вам общее представление о том, что делает класс MainDialog.

Кода довольно много, но важная часть класса MainDialog приведена ниже:

Короче говоря, при получении сообщения бот запускает файл MainDialog. MainDialog предлагает пользователю использовать метод IntroStepAsync, а затем вызывает метод ActStepAsync.

В методе ActStepAsync бот вызывает приложение LUIS, чтобы получить объект luisResult, который будет включать в себя намерения и сущности пользователя. Намерения и объекты пользователя используются для определения следующего шага, либо выполнения проверки, либо вызова других диалогов.

В конце бот вызывает метод FinalStepAsync для завершения или отмены процесса.

Адаптер и контроллер Twilio

По умолчанию служба Azure Bot подключается к каналу веб-чата, который обрабатывается адаптером по умолчанию AdapterWithErrorHandler. Адаптер по умолчанию внедряется в класс BotController по умолчанию, а контроллер предоставляет конечную точку /api/messages.

Чтобы подключить бота к Twilio, вы создадите новый TwilioAdapterWithErrorHandlerclass, расширенный из класса TwilioAdapter. Выполните следующую команду, чтобы установить пакет NuGet Microsoft.Bot.Builder.Adapters.Twilio:

dotnet add package Microsoft.Bot.Builder.Adapters.Twilio --version 4.15.0

Убедитесь, что пакет NuGet Microsoft.Bot.Builder.Adapters.Twilio использует те же версии, что и другие пакеты Microsoft.Bot.Builder.*, указанные в файле csproj.

После завершения установки NuGet создайте файл TwilioAdapterWithErrorHandler.cs в корневом каталоге проекта и добавьте следующий код:

Для обработки HTTP-запросов веб-перехватчика от Twilio вам необходимо добавить файл TwilloController. Создайте новый файл TwilioController.cs в папке Controllers и добавьте следующий код:

Конечная точка для TwilioController/api/twilio. После добавления новой конечной точки бот может обрабатывать сообщения как через веб-канал, так и через канал Twilio SMS.

Наконец, вам нужно зарегистрировать диалоги и распознаватель LUIS в классе Startup. Вставьте следующие строки в конце метода ConfigureServices в файле Startup.cs:

Протестируйте локально

Вам нужно будет установить Эмулятор Bot Framework для локального тестирования бота. Чтобы установить эмулятор Bot Framework:

  • Перейдите на страницу выпусков GitHub проекта эмулятора Bot Framework.
  • Нажмите на установочный файл для вашей ОС, чтобы загрузить его.
  • После завершения загрузки щелкните файл, чтобы начать установку. Следуйте указаниям мастера установки и используйте параметры по умолчанию для завершения установки.

Затем запустите проект бота с помощью .NET CLI:

dotnet run

Теперь запустите эмулятор бота, нажмите кнопку «Открыть бота» и введите URL-адрес бота в вашей локальной среде, который по умолчанию равен http://localhost:3978/api/messages.. Затем нажмите кнопку «Подключиться».

Откроется окно чата. Вы можете ввести сообщение и начать тестирование.

После того, как вы довольны результатами теста, бота можно развернуть в Azure.

Разверните бота в Azure

Чтобы развернуть бот .NET в Azure, необходимо использовать Azure CLI для создания следующих ресурсов:

Чтобы создать новый план службы приложений, выполните следующую команду:

az appservice plan create -g rg-bot -n asp-bot --location [AZURE_LOCATION] --sku F1

Вот что делают параметры:

  • -g или — resource-group: группа ресурсов, в которую должен быть помещен ресурс, в данном случае в созданную ранее группу ресурсов «rg-bot».
  • -n или — name: имя плана службы приложений, то есть asp-bot. «asp» — это сокращение от плана службы приложений.
  • -l или — location: расположение Azure, в котором должен находиться ресурс. Замените [AZURE_LOCATION] расположением, ближайшим к вам или вашим пользователям, как вы делали ранее при создании группы ресурсов.
  • — sku: размер (ЦП, ОЗУ и т. д.) плана службы приложений по номеру SKU, в данном случае — F1 (бесплатно).

Чтобы убедиться, что проект .NET будет развернут правильно, вам необходимо создать файл развертывания. Файл развертывания можно создать с помощью следующей команды:

az bot prepare-deploy — lang Csharp — code-dir “.” — proj-file-path “AppointmentBot.csproj”

Обратите внимание, что --code-dir и --proj-file-path должны совпадать, чтобы разрешить путь к файлу проекта.

Создайте управляемое удостоверение с помощью следующей команды:

az identity create --resource-group "rg-bot" --name "identity-appointment-bot"

После выполнения команды в Azure будет добавлено новое управляемое удостоверение identity-appointment-bot, которое будет использоваться для создания новой службы приложений и службы ботов на следующем шаге.

Службу приложений и службу ботов можно создать с помощью существующего плана службы приложений и шаблона Azure Resource Manager (ARM), который является частью шаблона CoreBot .NET.

Вы используете шаблон ARM DeploymentTemplates/template-with-preexisting-rg.json, но он требует большого количества параметров, поэтому вам следует использовать файл параметров. Создайте новую папку ParameterFiles в корне проекта и создайте новый файл RegisterAppParams.json со следующим содержимым:

Некоторые параметры уже настроены с именами ранее созданных ресурсов, но вам все еще нужно обновить несколько с вашими собственными настройками:

  • appId: значение clientId в ответе на команду create identity. Вы также можете запросить clientId следующим образом: az identity show -g rg-bot -n identity-appointment-bot --query clientId
  • tenantId: значение tenantId в ответе на команду create identity. Вы также можете запросить tenantId следующим образом: az account show --query tenantId
  • appServicePlanLocation: регион Azure, который вы использовали при создании плана службы приложений.
  • botId: имя вашей службы ботов. Это имя должно быть глобально уникальным. Замените [UNIQUE_SUFFIX] любым, что сделает имя уникальным, например, «имя-фамилия1234». Если он не принимает имя, измените его и повторите попытку.
  • newWebAppName: имя службы приложений. Это имя должно быть глобально уникальным, поскольку оно будет использоваться в качестве поддомена для azurewebsites.net. Замените [UNIQUE_SUFFIX] на что-нибудь, что сделает имя уникальным, например «имя-фамилия1234». Если он не принимает имя, измените его и повторите попытку.

После обновления файла параметров выполните следующую команду, чтобы создать службу приложений и службу Bot:

az deployment group create `
  --resource-group "rg-bot" `
  --template-file "./DeploymentTemplates/template-with-preexisting-rg.json" `
  --parameters "@ParameterFiles/RegisterAppParams.json"

Azure займет минуту, чтобы развернуть эту инфраструктуру. После создания службы приложений выполните приведенную ниже команду, чтобы получить имя узла службы приложений:

az webapp show -g rg-bot -n appointment-bot-[UNIQUE_SUFFIX] --query 'hostNames[0]'

Замените [UNIQUE_SUFFIX] суффиксом, который вы использовали в файле параметров. Запишите это имя хоста, так как оно понадобится вам позже.

Теперь, когда инфраструктура службы приложений подготовлена, вы можете развернуть локальный проект бота .NET. Выполните следующую команду, которая создаст ZIP-файл и развернет его в службе приложений:

az webapp up -g rg-bot -n appointment-bot-[UNIQUE_SUFFIX]

Для завершения развертывания может потребоваться около 30 секунд. Когда это будет сделано, вы увидите ответ об успешном завершении, показанный ниже:

Настройка Twilio для SMS-общения

Вы протестировали бота локально с помощью веб-чата, но целью этого руководства является использование SMS для общения. Чтобы получать и отправлять SMS-сообщения, вам понадобится номер телефона Twilio.

  • Зайти и купить новый номер телефона у Twilio. Стоимость номера телефона будет включена в ваш бесплатный рекламный кредит, если вы используете пробную учетную запись.
    Обязательно запишите свой новый номер телефона Twilio. Он понадобится вам позже!
  • Если вы используете пробную учетную запись Twilio, вы можете отправлять текстовые сообщения только проверенным идентификаторам вызывающего абонента. Подтвердите свой номер телефона или номер телефона, на который вы хотите отправить SMS, если его нет в списке проверенных идентификаторов вызывающего абонента.
  • Наконец, вам нужно найти SID учетной записи Twilio и токен аутентификации. Перейдите на страницу учетной записи Twilio и запишите SID учетной записи Twilio и токен аутентификации, расположенные в левом нижнем углу страницы.

Когда ваш номер телефона Twilio получает текстовое сообщение, Twilio должен переслать его вашему боту .NET, размещенному в службе приложений Azure.

Чтобы настроить это, перейдите в раздел Телефонные номера › Управление › Активные номера и щелкните свой номер телефона Twilio, чтобы перейти на страницу настройки.

В разделе «Обмен сообщениями» установите в раскрывающемся списке «НАСТРОЙКА С ДРУГИМИ ОБРАБОТЧИКАМИ» значение «Веб-перехватчик», а в соседнем текстовом поле введите «https://», а затем вставьте имя узла службы приложений, которое вы записали. ранее, а затем введите «/api/twilio».

URL-адрес должен иметь вид https://your-hostname.azurewebsites.net/api/twilio.

Нажмите кнопку Сохранить в левом нижнем углу. Запишите этот URL-адрес веб-перехватчика, он скоро понадобится вам снова.

Наконец, вам нужно добавить некоторую конфигурацию в вашу службу приложений. Выполните следующую команду, чтобы настроить параметры приложения:

az webapp config appsettings set -g rg-bot -n appointment-bot-[UNIQUE_SUFFIX] --settings `
 LuisApiKey=[YOUR_LUIS_API_KEY] `
 TwilioNumber=[YOUR_TWILIO_PHONE_NUMBER] `
 TwilioAccountSid=[YOUR_TWILIO_ACCOUNT_SID] `
 TwilioAuthToken=[YOUR_TWILIO_AUTH_TOKEN] `
 TwilioValidationUrl=[YOUR_BOT_TWILIO_ENDPOINT]

Перед запуском команды замените заполнители.

  • Замените [YOUR_LUIS_API_KEY] первичным ключом LUIS, который вы записали ранее.
  • Замените [YOUR_TWILIO_PHONE_NUMBER] своим номером телефона Twilio, который вы купили ранее. Введите номер телефона, используя E.164, который выглядит как +11234567890.
  • Замените [YOUR_TWILIO_ACCOUNT_SID] идентификатором SID учетной записи Twilio, который вы приняли к сведению ранее.
  • Замените [YOUR_BOT_TWILIO_ENDPOINT] URL-адресом веб-перехватчика, который вы записали ранее. Он должен выглядеть как https://your-hostname.azurewebsites.net/api/twilio.

Вы можете перезапустить службу приложений, чтобы убедиться, что параметры приложения загружены ботом. Выполните следующую команду, чтобы перезапустить службу приложений:

az webapp restart -g rg-bot -n appointment-bot-[UNIQUE_SUFFIX]

Сквозной тест

Наконец, вы построили и собрали все движущиеся части. Давайте проверим это!

Отправьте текстовое сообщение на свой номер телефона Twilio, и вы должны увидеть ответ от своего бота. Здесь вы можете видеть, что я отправил приведенные ниже SMS-сообщения на свой номер телефона Twilio, и это работает!

Следующие шаги

Есть некоторые важные функции бота, которые не рассматриваются в этой статье. Возможно, вы захотите продолжить изучение при разработке бота производственного уровня.

  • Аутентификация: когда боту требуется доступ к ресурсам от имени пользователя, вы должны аутентифицировать личность пользователя. Проверка подлинности пользователя может выполняться поставщиками удостоверений, такими как Azure AD с OAuth 2.0. Ваш бот будет использовать токен, сгенерированный Azure, для доступа к этим ресурсам. Подробности о том, как добавить аутентификацию Azure AD в бот, можно найти в документации Microsoft.
  • Bot Framework Composer: это визуальный конструктор с открытым исходным кодом и инструмент разработки для создания бота с помощью Azure Bot Service. Вы можете использовать его для создания диалогов в пользовательском интерфейсе и визуализации потока для бизнес-пользователей. Он также позволяет обучать модели LUIS внутри инструмента, избавляя таким образом от необходимости переключаться между различными средами. Если ваш проект требует привлечения людей, не являющихся техническими специалистами, к разработке ботов, это, безусловно, хороший инструмент для рассмотрения.

Заключение

В этой статье вы выполнили шаги по созданию системы бронирования по SMS с использованием Twilio, Azure Bot Framework и LUIS. Вы можете расширить это, добавив больше каналов, расширив модель LUIS для поддержки реальных сценариев и включив другие функции, такие как распознавание изображений или поддержка нескольких языков.

Вы можете найти готовый исходный код в этом репозитории GitHub.