Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Creación de una función de Lambda de proveedor de disponibilidad personalizada
Los proveedores de disponibilidad personalizados (CAP) se configuran con un protocolo de solicitud y respuesta basado en JSON que se escribe en un esquema JSON bien definido. Una función de Lambda analizará la solicitud y proporcionará una respuesta válida.
Temas
Elementos de solicitud y respuesta
Elementos de la solicitud
A continuación se muestra un ejemplo de solicitud utilizada para configurar un CAP para un usuario de Amazon WorkMail:
{ "requester": { "email": "user1@internal.example.com", "userName": "user1", "organization": "m-0123456789abcdef0123456789abcdef", "userId": "S-1-5-18", "origin": "127.0.0.1" }, "mailboxes": [ "user2@external.example.com", "unknown@internal.example.com" ], "window": { "startDate": "2021-05-04T00:00:00.000Z", "endDate": "2021-05-06T00:00:00.000Z" } }
Una solicitud consta de tres secciones: requester, mailboxes, y window. Estas se describen en las correspondientes secciones Solicitante, Buzones y Ventana de esta guía.
Solicitante
La sección requester proporciona información sobre el usuario que realizó la solicitud original a Amazon WorkMail. Los CAP utilizan esta información para cambiar el comportamiento del proveedor. Por ejemplo, estos datos se pueden utilizar para suplantar al mismo usuario en el proveedor de disponibilidad de backend o se pueden omitir ciertos detalles de la respuesta.
| Campo | Descripción | Obligatorio |
|---|---|---|
|
|
La dirección de correo electrónico principal del solicitante. |
Sí |
|
|
El nombre de usuario del solicitante. |
Sí |
|
|
El ID de organización del solicitante. |
Sí |
|
|
El ID del solicitante. |
Sí |
|
|
La dirección remota de la solicitud. |
No |
|
|
Reservado para uso futuro. |
No |
Buzones
La sección mailboxes contiene una lista separada por comas de las direcciones de correo electrónico de los usuarios para los que se solicita la información de disponibilidad.
Ventana
La sección window contiene la ventana temporal para la que se solicita la información de disponibilidad. Tanto startDate como endDate se especifican en UTC y se formatean según RFC 3339StartDate definida, se utiliza el inicio original.
Elementos de respuesta
Amazon WorkMail esperará 25 segundos para obtener una respuesta de la función de Lambda de CAP. Transcurridos 25 segundos, Amazon WorkMail asumirá que la función ha fallado y generará fallos para los buzones de correo asociados en la respuesta GetUserAvailability de EWS. Esto no provocará el fallo de toda la operación GetUserAvailability.
A continuación se muestra un ejemplo de respuesta de la configuración definida al principio de esta sección:
{ "mailboxes": [{ "mailbox": "user2@external.example.com", "events": [{ "startTime": "2021-05-03T23:00:00.000Z", "endTime": "2021-05-04T03:00:00.000Z", "busyType": "BUSY"|"FREE"|"TENTATIVE", "details": { // optional "subject": "Late meeting", "location": "Chime", "instanceType": "SINGLE_INSTANCE"|"RECURRING_INSTANCE"|"EXCEPTION", "isMeeting": true, "isReminderSet": true, "isPrivate": false } }], "workingHours": { "timezone": { "name": "W. Europe Standard Time" "bias": 60, "standardTime": { // optional (not needed for fixed offsets) "offset": 60, "time": "02:00:00", "month": "JAN"|"FEB"|"MAR"|"APR"|"JUN"|"JUL"|"AUG"|"SEP"|"OCT"|"NOV"|"DEC", "week": "FIRST"|"SECOND"|"THIRD"|"FOURTH"|"LAST", "dayOfWeek": "SUN"|"MON"|"TUE"|"WED"|"THU"|"FRI"|"SAT" }, "daylightTime": { // optional (not needed for fixed offsets) "offset": 0, "time": "03:00:00", "month": "JAN"|"FEB"|"MAR"|"APR"|"JUN"|"JUL"|"AUG"|"SEP"|"OCT"|"NOV"|"DEC", "week": "FIRST"|"SECOND"|"THIRD"|"FOURTH"|"LAST", "dayOfWeek": "SUN"|"MON"|"TUE"|"WED"|"THU"|"FRI"|"SAT" }, }, "workingPeriods":[{ "startMinutes": 480, "endMinutes": 1040, "days": ["SUN"|"MON"|"TUE"|"WED"|"THU"|"FRI"|"SAT"] }] } },{ "mailbox": "unknown@internal.example.com", "error": "MailboxNotFound" }] }
La respuesta se compone de una única sección, mailboxes, que consiste en una lista de buzones de correo. Cada buzón de correo cuya disponibilidad se obtenga de forma satisfactoria consta de tres secciones: mailbox, events y workinghours. Si el proveedor de disponibilidad no ha podido obtener información de disponibilidad para un buzón de correo, la sección consta de dos secciones: mailbox y error. Estas se describen en las correspondientes secciones Buzón de correo, Eventos, Horario de trabajo, Zona horaria, Periodos de trabajo y Error de esta guía.
Buzón de correo
La sección mailbox es la dirección de correo electrónico del usuario que se encuentra en la sección mailboxes de la solicitud.
Eventos
La sección events es una lista de eventos que se producen en la ventana solicitada. Cada evento se define con los siguientes parámetros:
| Campo | Descripción | Obligatorio |
|---|---|---|
|
|
La hora de inicio del evento en UTC y formateada según RFC 3339 |
Sí |
|
|
La hora de finalización del evento en UTC y formateada según RFC 3339 |
Sí |
|
|
El tipo de ocupado del evento. Puede ser |
Sí |
|
|
Los detalles del evento. |
No |
|
|
El asunto del evento. |
Sí |
|
|
La ubicación del evento. |
Sí |
|
|
El tipo de instancia del evento. Puede ser |
Sí |
|
|
Un booleano para indicar si el evento tiene asistentes. |
Sí |
|
|
Un booleano para indicar si el evento tiene un recordatorio establecido. |
Sí |
|
|
Un booleano para indicar si el evento está configurado como privado. |
Sí |
Horario de trabajo
La sección workingHours contiene información sobre el horario de trabajo del propietario del buzón de correo. Contiene dos secciones: timezone y workingPeriods.
Zona horaria
La subsección timezone describe la zona horaria del propietario del buzón de correo. Es importante representar correctamente el horario de trabajo del usuario cuando el solicitante trabaje en una zona horaria diferente. El proveedor de disponibilidad debe describir explícitamente la zona horaria en vez de utilizar un nombre. El uso de la descripción estandarizada de zona horaria ayuda a evitar discordancias de zonas horarias.
| Campo | Descripción | Obligatorio |
|---|---|---|
|
|
El nombre de la zona horaria. |
Sí |
|
|
El desfase predeterminado respecto a GMT en minutos. |
Sí |
|
|
El inicio del horario estándar para la zona horaria especificada. |
No |
|
|
El inicio del horario de verano para la zona horaria especificada. |
No |
Debe definir tanto standardTime como daylightTime, u omitir ambos. Los campos del objeto standardTime y daylightTime son:
| Campo | Descripción | Valores permitidos |
|---|---|---|
|
|
El desfase relativo al desfase predeterminado en minutos. |
N/D |
|
|
La hora en que se produce la transición entre horario estándar y horario de verano, especificada como |
N/D |
|
|
El mes en el que se produce la transición entre horario estándar y horario de verano. |
|
|
|
La semana dentro del mes especificado en que se produce la transición entre horario estándar y horario de verano. |
|
|
|
El día dentro de la semana especificada en que se produce la transición entre horario estándar y horario de verano. |
|
Periodos de trabajo
La sección workingPeriods contiene uno o más objetos de períodos de trabajo. Cada período define un inicio y fin de la jornada laboral para uno o más días.
| Campo | Descripción | Valores permitidos |
|---|---|---|
|
|
El inicio de la jornada laboral en minutos a partir de medianoche. |
N/D |
|
|
El final de la jornada laboral en minutos a partir de medianoche. |
N/D |
|
|
Los días en que se aplica este período. |
|
Error
El campo error puede contener mensajes de error arbitrarios. En la siguiente tabla se muestra una asignación de códigos bien conocidos a códigos de error de EWS. Todos los demás mensajes se asignarán a ERROR_FREE_BUSY_GENERATION_FAILED.
| Valor | Código de error de EWS |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Concesión de acceso
Ejecute el siguiente comando Lambda desde la AWS Command Line Interface (AWS CLI). Este comando añade una política de recursos a la función de Lambda que analiza el PAC. Esta función permite que el servicio de disponibilidad de Amazon WorkMail invoque su función de Lambda.
aws lambda add-permission \ --regionLAMBDA_REGION\ --function-nameCAP_FUNCTION_NAME\ --statement-id AllowWorkMail \ --action "lambda:InvokeFunction" \ --principal availability.workmail.WM_REGION.amazonaws.com \ --source-accountWM_ACCOUNT_ID\ --source-arn arn:aws:workmail:WM_REGION:WM_ACCOUNT_ID:organization/ORGANIZATION_ID
En el comando, añada los siguientes parámetros donde se indique:
-
LAMBDA_REGION: nombre de la región en la que se implementa la Lambda de CAP. Por ejemplo,us-east-1. -
CAP_FUNCTION_NAME: Nombre de la función de Lambda de CAP.nota
Puede ser el nombre, el alias o el ARN parcial o completo de la función de Lambda de CAP.
-
WM_REGION: nombre de la región en que la organización Amazon WorkMail invoca la función de Lambda.nota
El uso con CAP está disponible solo en las siguientes regiones:
-
Este de EE. UU. (Norte de Virginia)
-
Oeste de EE. UU. (Oregón)
-
Europa (Irlanda)
-
-
WM_ACCOUNT_ID: el ID de cuenta de la organización. -
ORGANIZATION_ID: el ID de la organización que invoca la Lambda de CAP. Por ejemplo, ID de org.: m-934ebb9eb57145d0a6cab566ca81a21f.
nota
LAMBDA_REGION y WM_REGION serán diferentes solo si se necesitan llamadas entre regiones. Si las llamadas entre regiones no son necesarias, serán la misma.
Ejemplo de Amazon WorkMail que utiliza una función de Lambda de CAP
Para ver un ejemplo de Amazon WorkMail que utiliza una función de Lambda de CAP para consultar un punto de conexión de EWS, consulte esta aplicación de muestra de AWS