Carga útil de Event Notifications
Este documento presenta la especificación Event Notifications.
Introducción
Este documento describe los detalles de la carga útil para el envío de notificaciones de eventos a través de fuentes de API en Event Notifications. Las fuentes de API te permiten enviar eventos desde tus aplicaciones de backend a cualquier destino configurado, incluyendo correo electrónico personalizado, SMS personalizados, notificaciones push, webhooks y mucho más.
Para redirigir eventos a destinos personalizados de correo electrónico y SMS, rellena los atributos de extensión ibmendefaultlong ibmendefaultshort y en tu carga útil. Estos campos proporcionan el contenido predeterminado
de los mensajes para los canales de correo electrónico y SMS. Para el envío de notificaciones push, utiliza los atributos específicos del destino, como ibmenfcmbody, ibmenapnsbody, ibmenchromebody, y
otros.
Puedes ver la carga útil de los eventos entrantes activando la opción Capturar eventos para tu fuente. Para obtener más información, consulte Visualización de las cargas útiles de las notificaciones.
Los eventos procedentes de fuentes API no pueden redirigirse a los demás destinos de correo electrónico IBM ni de SMS IBM.
`METHOD: POST`
`URL: /event-notifications/v1/apps/{instanceID}/notifications`
`Header: Authorization: Bearer <IAM token>`
Los sucesos cumplen con el estándar Cloud event. Encontrará más información sobre Cloud Events aquí.
Modalidades de transporte
Event Notifications Admite los dos modos siguientes para realizar llamadas a HTTP. Esto cumple con la especificación de Cloud Events.
Modalidad binaria
En el modo de contenido binario, el valor del evento data se coloca en el cuerpo de la solicitud o respuesta HTTP tal cual. El valor del atributo datacontenttype declara su tipo de medio en la cabecera HTTP Content-Type.
Todos los demás atributos de eventos se asignan a las cabeceras de HTTP.
Todos los nombres de atributos llevan el prefijo ce- y se añaden al encabezado (excepto y data datacontenttype).
El modo binario es la forma recomendada de enviar notificaciones.
Modalidad estructurada
En el modo de contenido estructurado, los atributos de metadatos de los eventos y los datos de los eventos se incluyen en el cuerpo de la solicitud HTTP. Para la modalidad estructurada, establezca la cabecera Content-Type en application/cloudevents+json.
Atributos
Atributos obligatorios de CE
Los atributos siguientes son obligatorios para que se acepte la solicitud de suceso.
ID (Serie)
Identificador exclusivo que identifica cada suceso. source+id debe ser exclusivo. El backend deberá ser capaz de realizar un seguimiento único de este ID en los registros y otros archivos. Envía un identificador único para cada
notificación de envío. Se puede enviar el mismo ID en caso de que falle el envío de la notificación.
source+id se ha registrado en el servicio de registro de IBM Cloud. Mediante estas combinaciones IBM, los clientes pueden seguir el recorrido de los eventos de un sistema a otro, lo que facilita la depuración y el seguimiento.
Ejemplo
id: qwer-1234-1qsd-po94
Cabecera de modalidad binaria
ce-id: qwer-1234-1qsd-po94
source (URI-reference)
Es el identificador del productor de sucesos. Una forma de identificar de forma exclusiva el origen del suceso. En el caso de los servicios IBM Cloud, se trata del crn de la instancia de servicio que produce los eventos. Para orígenes de API, esto puede ser algo con lo que el programa en segundo plano del productor de sucesos puede identificarse de forma exclusiva.
Ejemplo
source: com.mybank.customerbanking.accountmanagement
Cabecera de modalidad binaria
ce-source: com.mybank.customerbanking.accountmanagement
specversion (string)
Es la versión de la especificación Cloud Events que admite actualmente Event Notifications. Este valor debe establecerse en 1.0.
Ejemplo
specversion:1.0
Cabecera de modalidad binaria
ce-specversion:1.0
type (serie)
Describe el tipo de suceso. Tiene el formato <event-type-name>:<sub-type>. Este tipo lo define el productor.
El nombre del tipo de evento debe ir precedido de los nombres DNS inversos para que el tipo de evento se identifique de forma unívoca. Un mismo tipo de evento puede generarse a partir de dos fuentes diferentes. Se recomienda encarecidamente
utilizar el guión como - separador en lugar del punto _.
Ejemplo 1
`type:com.acmebank.password:expiring-in-15-days`
Type: `com.acmebank.password`
Sub type: `expiring-in-15-days`
Cabecera de modalidad binaria
ce-type:com.acmebank.password:expiring-in-15-days`
Ejemplo 2
`type:com.acmebank.password-changed`
Type: `com.acmebank.password-changed`
Sub type: N/A
Cabecera de modalidad binaria (para el ejemplo 2)
`ce-type:com.acmebank.password-changed`
Atributos opcionales de CE
Los siguientes atributos son opcionales, pero se recomienda encarecidamente utilizarlos para sacar el máximo partido a Event Notifications.
time (timestamp)
Indicación de fecha y hora UTC cuando se produjo el suceso. Debe estar en el formato RFC 3339.
Ejemplo
time: 2022-02-10T10:51:37+00:00
Cabecera de modalidad binaria
ce-time: 2022-02-10T10:51:37+00:00
subject (String)
Es el asunto del suceso en el productor de sucesos (origen). Por lo tanto, este puede ser el ID de la cuenta cuya contraseña está a punto de caducar.
Ejemplo
subject:ajay@accts.acmebank.com`
Cabecera de modalidad binaria
`ce-subject:ajay@accts.acmebank.com`
datacontenttype
Define el tipo MIME del contenido de datos. Actualmente, solo se admite application/json.
Ejemplo
`datacontenttype: application/json`
Cabecera de modalidad binaria
`Content-Type:application/json`
datos
La carga útil del suceso. Esto puede contener información que se puede pasar a destinos como webhooks. Debe ser un objeto JSON válido.
No incluya información sensible como contraseñas, claves API, números de identificación personal, información de tarjetas de crédito u otros datos confidenciales en la carga útil. La carga útil puede registrarse, almacenarse o transmitirse a varios destinos.
Ejemplo
data: { "lastchanged-days": "74", "reason":"time-based"}
Modo binario: forma parte del cuerpo HTTP (No aplicable).
Atributos obligatorios de extensión de Event Notifications
Estos son atributos obligatorios para todos los eventos enviados a Event Notifications.
ibmensourceid (serie)
Este es el ID de la fuente creada en Event Notifications. Está disponible en la interfaz de usuario de Event Notifications, en la sección Fuentes.
Ejemplo
ibmensourceid: 121313123:api
Cabecera de modalidad binaria
ce-ibmensourceid: 121313123:api
Atributos opcionales de extensión de Event Notifications
Estos son atributos opcionales.
ibmenseverity(String)
Algunos orígenes pueden tener el concepto de gravedad de suceso. Por lo tanto, se proporciona una manera práctica para especificar una gravedad de suceso.
Ejemplo
ibmenseverity:LOW
Cabecera de modalidad binaria
`ce-ibmenseverity:LOW`
ibmendefaultshort(String)
Este mensaje se utiliza en caso de que el evento se envíe a un destino que requiera un texto legible para las personas, pero no se haya especificado ningún atributo específico del destino.
Por ejemplo, si no ibmenfcmbody se especifica y el evento se redirige a un destino de tipo Android FCM, ibmendefaultshort se utiliza como título de la notificación (android_title).
Ejemplo
ibmendefaultshort: "Change password"
Cabecera de modalidad binaria
ce-ibmendefaultshort: "Change password"
ibmendefaultlong(String)
Este mensaje se utiliza en caso de que el evento se envíe a un destino que requiera un texto legible para las personas, pero no se haya especificado ningún atributo específico del destino.
Por ejemplo, si no ibmenfcmbody se especifica y el evento se redirige a un destino de tipo Android FCM, ibmendefaultlong se utiliza como cuerpo de la notificación (alerta).
Ejemplo
ibmendefaultlong: "Password will expire in 10 Days. Please log in to the Bank home page and click on Change Password link to change your password."
Cabecera de modalidad binaria
ce-ibmendefaultlong: "Password will expire in 10 Days. Please log in to the Bank home page and click on Change Password link to change your password."
ibmenfcmbody(string/json)
Este atributo es necesario si desea enviar una notificación de envío a un dispositivo Android. Este es el cuerpo que debes enviar al servidor FCM; debe estar en formato JSON como cadena de caracteres. Para más información sobre el organismo FCM, consulte aquí.
Ejemplo de carga útil de notificación
"ibmenfcmbody": "{\"message\":{\"android\":{\"ttl\":\"86400s\",\"notification\":{\"click_action\":\"OPEN_ACTIVITY_1\"},\"data\":{\"id\":\"test_id\"}}}}"
Cabecera de modalidad binaria
ce-ibmenfcmbody: {"message":{"android":{"ttl":"86400s","notification":{"click_action":"OPEN_ACTIVITY_1"},"data":{"id":"test_id"}}}}
ibmenapnsbody(string/json)
Este atributo es necesario si desea enviar una notificación push a un dispositivo iOS. Este es el cuerpo que debes enviar al servidor de APNs; debe estar en formato JSON como cadena de caracteres. Para más información sobre el cuerpo de APNs, siga esta documentación aquí.
Ejemplo de carga útil de notificación
"ibmenapnsbody": {"aps":{"alert":{"title":"Game Request","subtitle":"Five Card Draw","body":"Bob wants to play poker"},"category":"GAME_INVITATION"},"gameID":"12345678"}
Para personalizar tus notificaciones push de APNs, puedes proporcionar encabezados de APNs. Algunas de ellas son obligatorias para entregar una notificación si la clave está presente. El cuerpo necesario es el siguiente:
ce-ibmenapnsbody: {"aps":{"alert":{"title":"Game Request","subtitle":"Five Card Draw","body":"Bob wants to play poker"},"category":"GAME_INVITATION"},"gameID":"12345678"}
Para obtener más detalles sobre las cabeceras APNs, consulte Generar una notificación remota.
Cabecera de modalidad binaria
ce-ibmenapnsbody: {"en_data":{"alert":"alert","url":"https","badge":9,"sound":"bingbong.aiff","payload":{"myaarray":["cc75e4a6-edd8-3bec-a7c3-dfca6572a03b"]},"type":"DEFAULT","subtitle":"dummy","title":"dummy1","body":"body","ios_action_key":"key","interactive_category":"interactiveCategory","title_loc_key":"titleLocKey","loc_key":"GAME_PLAY_REQUEST_FORMAT","launch_image":"image.png","title_loc_args":["Shelly","Rick"],"loc_args":["Shelly","Rick"],"attachment_url":"some url","apns_collapse_id":"12","apns_thread_id":"1","apns_group_summary_arg":"apnsGroupSummaryArg","apns_group_summary_arg_count":1}}
ibmenchromebody(string/json)
Este atributo es necesario si deseas enviar una notificación push a un dispositivo Chrome. Este es el cuerpo que debes enviar al servidor FCM; debe estar en formato JSON como cadena de caracteres. Para más información sobre la carrocería cromada, véase Notificación.
Puedes seguir estos ejemplos para empezar rápidamente:
"ibmenchromebody": "{\"title\":\"Hello Chrome\", \"options\": {}}"
Para personalizar tus notificaciones push de Chrome, puedes proporcionar encabezados de Chrome. Algunas de ellas son obligatorias para entregar una notificación si la clave está presente. El cuerpo del ejemplo es el siguiente:
"ibmenchromeheaders":"{\"TTL\":100}"
Cabecera de modalidad binaria
ce-ibmenchromebody: {"title":"Hello Chrome", "options": {}}
ce-ibmenchromeheaders: "{"TTL":100}"
ibmenfirefoxbody(string/json)
Este atributo es necesario si deseas enviar una notificación push a un dispositivo Firefox. Este es el cuerpo que debes enviar al servidor de notificaciones push de Firefox; debe estar en formato JSON como cadena de caracteres. Para más información sobre el organismo Firefox, véase Notificación.
Puedes seguir estos ejemplos para empezar rápidamente:
"ibmenfirefoxbody": "{\"title\":\"Hello Firefox\", \"options\": {}}"
Para personalizar tus notificaciones push de Chrome, puedes incluir los encabezados Firefox. Algunas de ellas son obligatorias para entregar una notificación si la clave está presente. El cuerpo del ejemplo es el siguiente:
"ibmenfirefoxheaders": "{\"TTL\":100, \"Urgency\": \"low\" , \"Topic\": \"Test Firefox Notifications\"}",
Cabecera de modalidad binaria
ce-ibmenfirefoxbody: {"title":"Hello Firefox", "options": {}}
ce-ibmenfirefoxheaders: {"TTL":100, "Urgency": "low" , "Topic": "Test Firefox Notifications"}
ibmensafaribody(string/json)
Este atributo es necesario si quieres enviar una notificación push a un dispositivo Safari. Este es el cuerpo que debes enviar al servidor de notificaciones push de Apple; debe estar en formato JSON como cadena de caracteres. Para obtener más información sobre el cuerpo de Safari, consulte Configuración de las notificaciones push de Safari.
Puedes seguir estos ejemplos para empezar rápidamente:
"ibmensafaribody": "{\"aps\":{\"alert\":{\"title\":\"Shipment Order 1832128321 Delevered\",\"body\":\"Shipment Order 1832128321 Delevered.\",\"action\":\"View\"},\"url-args\":[\"1832128321\"]}}"
Cabecera de modalidad binaria
ce-ibmensafaribody: {"aps":{"alert":{"title":"Shipment Order 1832128321 Delevered","body":"Shipment Order 1832128321 Delevered.","action":"View"},"url-args":["1832128321"]}}
ibmenhuaweibody(cadena/json)
Este atributo es necesario si quieres enviar una notificación push a un dispositivo Huawei. Este es el cuerpo que desea enviar al servidor Push Kit Huawei, esto debe ser JSON en formato de cadena. Para más información sobre el cuerpo de Huawei, véase, Carga útil de Notificación Push de Huawei.
Puedes seguir estos ejemplos para empezar rápidamente:
"ibmenhuaweibody":"{\"message\":{\"android\":{\"notification\":{\"title\":\"New Message\",\"body\":\"Hello World\",\"click_action\":{\"type\":3}}}}}"
Cabecera de modalidad binaria
ce-ibmenhuaweibody: {"aps":{"alert":{"title":"Shipment Order 1832128321 Delevered","body":"Shipment Order 1832128321 Delevered.","action":"View"},"url-args":["1832128321"]}}
ibmenpushto(string/json)
Este atributo es obligatorio para garantizar la entrega correcta a un destino Android, FCM, APNS o Huawei.
Aquí se incluyen detalles sobre el destino al que desea enviar una notificación push. Este campo también es una cadena con formato JSON y, además, contiene el siguiente campo
user_id– Identificador de usuario que se asociará al dispositivo al que quieras dirigir tu notificacióntag- Se utiliza para enviar notificaciones sobre etiquetas registradasplatform- Puedes dirigirte a todos los dispositivos registrados por plataformas.
A continuación se indican los valores de la plataforma correspondientes a cada tipo de público objetivo.
FCM: push_androidAPNS: push_iosChrome: push_chromeFirefox: push_firefoxSafari: push_safariHuawei: push_huaweifcm_devices- Identificador exclusivo del dispositivo FCM al que desea dirigir la notificaciónapns_devices- Identificador exclusivo del dispositivo APNS al que desea dirigir la notificaciónchrome_devices- Identificador exclusivo del dispositivo web de Chrome al que desea dirigir la notificaciónfirefox_devices- Identificador exclusivo del dispositivo web de Firefox al que desea dirigir la notificaciónsafari_devices- Identificador exclusivo del dispositivo web Safari al que desea dirigir la notificaciónhuawei_devices- Identificador único del dispositivo web de Huawei al que quieres dirigir tu notificación
Ejemplo
"ibmenpushto": "{\"fcm_devices\": [\"9c75975a-37d0-3898-905d-3b5ee0d7c172\",\"C9CACDF5-6EBF-49E1-AD60-E25BA23E954C\"]}"`
"ibmenpushto": "{\"apns_devices\": [\"1c75972a-37d0-3898-905d-3b5ee0d7c172\",\"M9CACDF5-1EBF-49E1-AD60-E25BA23E954C\"]}"
"ibmenpushto": "{\"chrome_devices\": [\"2c75972a-37d0-3898-905d-3b5ee0d7c182\",\"N9CACDF5-1EBF-49E1-AD60-E25BA23E994D\"]}"
"ibmenpushto": "{\"firefox_devices\": [\"3c75972a-37d0-3898-905d-3b5ee0d7c182\",\"L9CACDF5-1EBF-49E1-AD60-E25BA23E994E\"]}"
"ibmenpushto": "{\"safari_devices\": [\"1175972a-37d0-3898-905d-3b5ee0d7c1D2\",\"Q9CACDF5-1EBF-49E1-AD60-E25BA23E994N\"]}"
"ibmenpushto": "{\"huawei_devices\": [\"1175972a-37d0-3898-905d-3b5ee0d7c1D2\",\"Q9CACDF5-1EBF-49E1-AD60-E25BA23E994N\"]}"
Se puede llegar a múltiples destinos utilizando los siguientes métodos
"ibmenpushto": "{\"fcm_devices\": [\"9c75975a-37d0-3898-905d-3b5ee0d7c172\",\"C9CACDF5-6EBF-49E1-AD60-E25BA23E954C\"],\"apns_devices\": [\"1c75972a-37d0-3898-905d-3b5ee0d7c172\",\"M9CACDF5-1EBF-49E1-AD60-E25BA23E954C\"],\"chrome_devices\": [\"2c75972a-37d0-3898-905d-3b5ee0d7c182\",\"N9CACDF5-1EBF-49E1-AD60-E25BA23E994D\"],\"firefox_devices\": [\"3c75972a-37d0-3898-905d-3b5ee0d7c182\",\"L9CACDF5-1EBF-49E1-AD60-E25BA23E994E\"],\"safari_devices\": [\"1175972a-37d0-3898-905d-3b5ee0d7c1D2\",\"Q9CACDF5-1EBF-49E1-AD60-E25BA23E994N\"]}"
Direccionamiento de notificaciones a user_ids de push.
"ibmenpushto": "{\"user_ids\": [\"ajay@accts.acmebank.com\",\"ankit@accts.acmebank.com\"]}"
Direccionamiento de notificaciones a etiquetas push.
"ibmenpushto": "{\"tags\": [\"salesTeam\",\"TechTeam\"]}"
Direccionamiento de notificaciones a plataformas.
"ibmenpushto": "{\"platforms\":[\"push_android\",\"push_ios\"]]}"
Notificaciones dirigidas a una plataforma concreta.
"ibmenpushto": "{\"platforms\":[\"push_android\"]}"
"ibmenpushto": "{\"platforms\":[\"push_ios\"]}"
"ibmenpushto": "{\"platforms\":[\"push_chrome\"]}"
"ibmenpushto": "{\"platforms\":[\"push_firefox\"]}"
"ibmenpushto": "{\"platforms\":[\"push_safari\"]}"
"ibmenpushto": "{\"platforms\":[\"push_huawei\"]}"
Cabecera de modalidad binaria
ce-ibmenpushto: "{\"user_id\": [\"ajay@accts.acmebank.com\",\"ankit@accts.acmebank.com\"]}"
archivos adjuntos(array)
Este atributo se utiliza para incluir archivos adjuntos al enviar notificaciones a destinos de correo electrónico de dominios personalizados. Cada archivo adjunto de la matriz debe incluir el contenido del archivo codificado en formato Base64, junto con metadatos como el nombre del archivo, el tipo de contenido y la disposición.
Los adjuntos de correo electrónico sólo se admiten para destinos de correo electrónico de dominio personalizado. Esta función no está disponible para los destinos de correo electrónico predeterminados de IBM Cloud.
La matriz attachments contiene objetos con las siguientes propiedades:
- contenido (cadena, obligatorio)
-
El contenido del archivo codificado en formato base64.
Asegúrese de que el contenido está correctamente codificado antes de incluirlo en la carga útil.
- filename (cadena, obligatorio)
-
El nombre del archivo tal y como lo verá el destinatario. Incluya la extensión del archivo (por ejemplo, " document.pdf ", " report.xlsx ").
- content_type (cadena, no obligatoria)
-
El tipo MIME del archivo. Algunos ejemplos comunes son:
application/pdfpara archivos PDF
- disposición (cadena, obligatorio)
-
Utilice
attachmentpara indicar que el archivo es un adjunto.
Ejemplo
"attachments": [
{
"content": "JVBERi0xLjQKJeLjz9MKMyAwIG9iago8PC9UeXBlL...",
"filename": "document.pdf",
"content_type": "application/pdf",
"disposition": "attachment"
},
{
"content": "UEsDBBQAAAAIAKt8elYAAAAAAAAAAAAAAAAJAAAA...",
"filename": "report.xlsx",
"content_type": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
"disposition": "attachment"
}
]
Cabecera de modalidad binaria
ce-attachments: [{"content":"JVBERi0xLjQKJeLjz9MKMyAwIG9iago8PC9UeXBlL...","filename":"document.pdf","content_type":"application/pdf","disposition":"attachment"}]
Notas de uso
- Los archivos adjuntos están sujetos a límites de tamaño. Asegúrese de que el tamaño total de la carga útil (incluidos todos los archivos adjuntos) no supere los 40 MB.
- Puede adjuntar un máximo de 10 archivos por notificación de correo electrónico.
- Todo el contenido del archivo debe codificarse en base64 antes de incluirlo en la carga útil.
- Se pueden incluir varios archivos adjuntos en una sola notificación añadiendo varios objetos a la matriz
attachments. - Esta función sólo está disponible cuando se envían notificaciones a destinos de correo electrónico de dominios personalizados.
- Algunas extensiones de archivo están bloqueadas por razones de seguridad. Para ver la lista completa de extensiones bloqueadas, consulta ¿Qué extensiones de archivo están bloqueadas para los adjuntos de correo electrónico?