Ejemplo de código del modelo de acciones universales: aprobación de gastos
En este ejemplo se muestra la implementación del modelo de acción universal disponible para las tarjetas adaptables versión 1.4 o posterior.
Requisitos previos
- El cliente de Outlook/OWA está disponible y tiene una cuenta.
- Un subsciption de Azure válido.
- Descripción de Azure Bot Framework.
Configuración del bot
- Registre un bot con Azure Bot Service, siguiendo las instrucciones que se indican aquí.
- Asegúrese de que ha habilitado el canal de Outlook.
- Abra el recurso del bot en el Azure Portal.
- Abra el panel Canales .
- Seleccione el canal de Outlook en la sección Canales disponibles .
- En la pestaña Mensajes accionables , haga clic en Aplicar seguido de registrarse aquí.
- Rellene el formulario de registro para solicitar acceso. Para obtener más información, consulte Registro del servicio con el panel de desarrolladores de correo electrónico accionable .
- Cree el bot con el SDK de Bot Framework, siguiendo las instrucciones que se indican aquí.
Paso 1: Asegúrese de que las cargas de la tarjeta adaptable están listas
Para el escenario de aprobaciones, puede encontrar la carga de JSON aquí. A continuación, puede ver la representación de carga en pantallas móviles y de escritorio.
Para Acciones universales, debe usar Action.Execute
que recopile campos de entrada y envíe una Invoke
actividad de tipo adaptiveCard/action
al bot de destino. El bot de destino puede identificar la acción realizada mediante el verb
campo . Cualquier entrada adicional se puede enviar mediante el data
campo .
Carga de JSON
Este es un fragmento de código del escenario Acciones para la aprobación.
{
"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"
}
Para obtener más información, vea Action.Execute schema and properties (Esquema y propiedades de Action.Execute).
Paso 2: Escritura de lógica de negocios personalizada en el bot para su aprobación
En el bot de Azure, puede usar el método OnAdaptiveCardInvokeAsync para capturar la acción mediante el campo, agregar la verb
lógica de negocios y enviar la tarjeta de actualización a 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);
}
}
Puede probar el bot localmente o implementarlo en Azure.
Paso 3: Envío del mensaje accionable
Puede enviar el mensaje accionable respaldado por acciones universales de forma similar a cualquier otro mensaje accionable. Para obtener más información, consulte Envío de un mensaje accionable por correo electrónico.