Пример кода модели универсальных действий — утверждение расходов
В этом примере показана реализация модели универсального действия, доступная для адаптивных карточек версии 1.4 или более поздней.
Требования
- Клиент Outlook/OWA доступен, и у вас есть учетная запись.
- Допустимое подчинение Azure.
- Общие сведения об Azure Bot Framework.
Настройка бота
- Зарегистрируйте бота в Azure Служба Bot, следуя инструкциям здесь.
- Убедитесь, что канал Outlook включен.
- Откройте ресурс бота в портал Azure.
- Откройте панель Каналы .
- Выберите канал Outlook в разделе Доступные каналы .
- На вкладке Сообщения с действиями нажмите кнопку Применить , а затем зарегистрируйтесь здесь.
- Заполните регистрационную форму, чтобы запросить доступ. Дополнительные сведения см. в разделе Регистрация службы с помощью панели мониторинга разработчика электронной почты с действиями .
- Создайте бота с помощью пакета SDK Bot Framework, следуя инструкциям здесь.
Шаг 1. Убедитесь, что полезные данные адаптивных карта готовы
Для сценария утверждения полезные данные JSON можно найти здесь. Ниже показана отрисовка полезных данных на экранах мобильных устройств и компьютеров.
Для универсальных действий необходимо использовать Action.Execute
метод , который собирает поля ввода и отправляет Invoke
действие типа adaptiveCard/action
целевому боту. Целевой бот может определить действие, выполненное verb
с помощью поля. Любые дополнительные входные данные можно отправить с помощью data
поля .
Полезные данные JSON
Ниже приведен фрагмент сценария Действий для утверждения.
{
"type": "ActionSet",
"actions": [
{
"type": "Action.Execute",
"title": "Accept",
"verb": "approvalAccept",
"data": {},
"isPrimary": true,
"style": "positive"
},
{
"type": "Action.ShowCard",
"id": "e1487cbc-66b0-037e-cdc4-045fb7d8d0b8",
"title": "Reject",
"card": {
"type": "AdaptiveCard",
"body": [
{
"type": "Input.Text",
"id": "Comment",
"placeholder": "Add a comment",
"isMultiline": true
},
{
"type": "ActionSet",
"actions": [
{
"type": "Action.Execute",
"title": "Submit",
"verb": "approvalReject",
"data": {
"comment": "${Comment.value}"
}
}
]
}
],
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
"fallbackText": "Unable to render the card",
"padding": "None"
}
}
],
"spacing": "None"
}
Дополнительные сведения см. в разделе Схема и свойства Action.Execute
Шаг 2. Написание пользовательской бизнес-логики в боте для утверждения
В боте Azure можно использовать метод OnAdaptiveCardInvokeAsync, чтобы записать действие с помощью verb
поля, добавить бизнес-логику и отправить карта обновления обратно в Outlook.
protected override async Task<AdaptiveCardInvokeResponse> OnAdaptiveCardInvokeAsync(
ITurnContext<IInvokeActivity> turnContext,
AdaptiveCardInvokeValue invokeValue,
CancellationToken cancellationToken)
{
try
{
// Approval Scenario
if (invokeValue.Action.Verb == "approvalAccept")
{
// This function can contain your business logic
// to capture the approval and show the refresh card
return await ProcessApprovalAccepted();
}
else if (invokeValue.Action.Verb == "approvalReject")
{
// This function can contain you business logic
// to capture the rejection and show the refresh card
return await ProcessApprovalRejected();
}
else
{
throw new InvokeResponseException(HttpStatusCode.NotImplemented);
}
}
catch (AdaptiveCardActionException e)
{
throw new InvokeResponseException(HttpStatusCode.NotImplemented, e.Response);
}
}
Бот можно протестировать локально или развернуть в Azure.
Шаг 3. Отправка сообщения с действиями
Вы можете отправить сообщение с действиями, поддерживаемое универсальными действиями, как и любое другое сообщение с действиями. Дополнительные сведения см. в статье Отправка сообщения с действиями по электронной почте.