Charge Event Notifications
Ce document décrit la spécification Event Notifications.
Introduction
Ce document décrit les détails de la charge utile pour l'envoi de notifications d'événements via des sources API dans l' Event Notifications. Les sources API vous permettent d'envoyer des événements depuis vos applications backend vers n'importe quelle destination configurée, notamment des e-mails personnalisés, des SMS personnalisés, des notifications push, des webhooks, etc.
Pour acheminer les événements vers des destinataires e-mail et SMS personnalisés, renseignez les attributs d’extension ibmendefaultlong et ibmendefaultshort dans votre charge utile. Ces champs fournissent le contenu
par défaut des messages destinés aux canaux e-mail et SMS. Pour l'envoi de notifications push, utilisez les attributs spécifiques à la destination, tels que ibmenfcmbody, ibmenapnsbody, ibmenchromebody,
et autres.
Vous pouvez consulter la charge utile des événements entrants en activant la capture des événements pour votre source. Pour plus d'informations, voir Afficher les données utiles des notifications.
Les événements provenant de sources API ne peuvent pas être acheminés vers les autres destinations de messagerie IBM et de SMS IBM.
`METHOD: POST`
`URL: /event-notifications/v1/apps/{instanceID}/notifications`
`Header: Authorization: Bearer <IAM token>`
Les événements respectent la norme Cloud Event. Vous trouverez plus d'informations sur Cloud Events ici.
Modes de transport
Event Notifications prend en charge les deux modes suivants pour effectuer des appels vers l' HTTP. Ceci est conforme à la spécification Cloud Events.
Mode binaire
Dans le mode de contenu binaire, la valeur de l'événement data est placée telle quelle dans le corps de la demande ou de la réponse HTTP. La valeur de l'attribut datacontenttype déclare son type de média dans l'en-tête
HTTP Content-Type. Tous les autres attributs d'événements sont mis en correspondance avec les en-têtes de HTTP.
Tous les noms d'attributs sont préfixés par ce- et ajoutés à l'en-tête (à l'exception de et data datacontenttype).
Le mode binaire est la méthode recommandée pour envoyer des notifications.
Mode structuré
En mode de contenu structuré, les attributs de métadonnées des événements et les données relatives à ces derniers sont placés dans le corps de la requête HTTP. Pour le mode structuré, définissez l'en-tête Content-Type sur application/cloudevents+json.
Attributs
Attributs obligatoires CE
Les attributs suivants sont obligatoires pour que la demande d'événement soit acceptée.
ID (chaîne)
Identificateur unique qui identifie chaque événement. source+id doit être unique. Le backend doit être capable de suivre de manière unique cet identifiant dans les journaux et autres enregistrements. Envoyer un identifiant unique
pour chaque notification d'envoi. Le même identifiant peut être envoyé en cas d'échec de l'envoi de la notification.
source+id est connecté au service de journalisation IBM Cloud. Grâce à ces combinaisons d' IBM, les clients peuvent suivre le parcours d'un événement d'un système à l'autre, ce qui facilite le débogage et le traçage.
Exemple
id: qwer-1234-1qsd-po94
En-tête de mode binaire
ce-id: qwer-1234-1qsd-po94
source (référence URI)
Il s'agit de l'identificateur du producteur d'événements. Un moyen d'identifier de manière unique la source de l'événement. Pour les services IBM Cloud, il s'agit du crn de l'instance de service qui produit les événements. Pour les sources d'API, il peut s'agir d'un élément avec lequel le système dorsal du producteur d'événements peut s'identifier de manière unique.
Exemple
source: com.mybank.customerbanking.accountmanagement
En-tête de mode binaire
ce-source: com.mybank.customerbanking.accountmanagement
specversion (chaîne)
Il s'agit de la version de la spécification Cloud Events actuellement prise en charge par Event Notifications. Cette valeur doit être définie sur 1.0.
Exemple
specversion:1.0
En-tête de mode binaire
ce-specversion:1.0
type (chaîne)
Décrit le type d'événement. Il se présente sous la forme <event-type-name>:<sub-type>. Ce type est défini par le producteur.
Le nom du type d'événement doit être précédé des noms DNS inversés afin que le type d'événement soit identifié de manière unique. Un même type d’événement peut provenir de deux sources différentes. Il est fortement recommandé d'utiliser
le trait d'union comme - séparateur à la place du point _.
Exemple 1
`type:com.acmebank.password:expiring-in-15-days`
Type: `com.acmebank.password`
Sub type: `expiring-in-15-days`
En-tête de mode binaire
ce-type:com.acmebank.password:expiring-in-15-days`
Exemple 2
`type:com.acmebank.password-changed`
Type: `com.acmebank.password-changed`
Sub type: N/A
En-tête en mode binaire (pour l'exemple 2)
`ce-type:com.acmebank.password-changed`
Attributs facultatifs CE
Les attributs suivants sont facultatifs, mais fortement recommandés pour tirer pleinement parti d' Event Notifications.
time (horodatage)
Horodatage UTC lorsque l'événement s'est produit. Doit être au format RFC 3339.
Exemple
time: 2022-02-10T10:51:37+00:00
En-tête de mode binaire
ce-time: 2022-02-10T10:51:37+00:00
subject (chaîne)
Il s'agit de l'objet de l'événement dans le producteur d'événements (source). Il peut donc s'agir de l'identifiant du compte dont le mot de passe est sur le point d'expirer.
Exemple
subject:ajay@accts.acmebank.com`
En-tête de mode binaire
`ce-subject:ajay@accts.acmebank.com`
datacontenttype
Définit le type MIME du contenu des données. Actuellement, seul le format application/json est pris en charge.
Exemple
`datacontenttype: application/json`
En-tête de mode binaire
`Content-Type:application/json`
données
Charge de l'événement. Peut contenir des informations qui peuvent être transmises à des destinations telles que des webhooks. Il doit s'agir d'un objet JSON valide.
N'incluez pas d'informations sensibles telles que des mots de passe, des clés API, des numéros d'identification personnelle, des informations de carte de crédit ou d'autres données confidentielles dans la charge utile. La charge utile peut être enregistrée, stockée ou transmise à diverses destinations.
Exemple
data: { "lastchanged-days": "74", "reason":"time-based"}
Mode binaire – ceci fait partie du corps de l' HTTP. Sans objet.
Attributs obligatoires de l'extension Event Notifications
Il s'agit d'attributs obligatoires pour chaque événement envoyé à Event Notifications.
ibmensourceid (chaîne)
Il s'agit de l'identifiant de la source créée dans Event Notifications. Ces documents sont disponibles dans l'interface utilisateur d' Event Notifications, dans la section Sources.
Exemple
ibmensourceid: 121313123:api
En-tête de mode binaire
ce-ibmensourceid: 121313123:api
Attributs facultatifs de l'extension Event Notifications
Il s'agit d'attributs facultatifs.
ibmenseverity (chaîne)
Certaines sources peuvent disposer du concept de gravité d'événement. Un moyen pratique de spécifier la gravité de l'événement.
Exemple
ibmenseverity:LOW
En-tête de mode binaire
`ce-ibmenseverity:LOW`
ibmendefaultshort (chaîne)
Ce message est utilisé lorsque l'événement est acheminé vers une destination nécessitant un texte lisible par l'utilisateur, mais qu'aucun attribut spécifique à cette destination n'est spécifié.
Par exemple, si n'est ibmenfcmbody pas spécifié et que l'événement est acheminé vers une destination de type Android FCM, ibmendefaultshort est utilisé comme titre de la notification (android_title).
Exemple
ibmendefaultshort: "Change password"
En-tête de mode binaire
ce-ibmendefaultshort: "Change password"
ibmendefaultlong (chaîne)
Ce message est utilisé lorsque l'événement est acheminé vers une destination nécessitant un texte lisible par l'utilisateur, mais qu'aucun attribut spécifique à cette destination n'est spécifié.
Par exemple, si n'est ibmenfcmbody pas spécifié et que l'événement est acheminé vers une destination de type Android FCM, ibmendefaultlong est utilisé comme corps de la notification (alerte).
Exemple
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."
En-tête de mode binaire
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 (chaîne/json)
Cet attribut est nécessaire si vous souhaitez envoyer une notification push à un périphérique Android. Il s'agit du corps du message que vous souhaitez envoyer au serveur FCM; celui-ci doit être au format JSON sous forme de chaîne de caractères. Pour plus d'informations sur le corps de la FCM, voir ici.
Exemple de charge utile de notification
"ibmenfcmbody": "{\"message\":{\"android\":{\"ttl\":\"86400s\",\"notification\":{\"click_action\":\"OPEN_ACTIVITY_1\"},\"data\":{\"id\":\"test_id\"}}}}"
En-tête de mode binaire
ce-ibmenfcmbody: {"message":{"android":{"ttl":"86400s","notification":{"click_action":"OPEN_ACTIVITY_1"},"data":{"id":"test_id"}}}}
ibmenapnsbody (chaîne/json)
Cet attribut est nécessaire si vous souhaitez envoyer une notification push à un périphérique iOS. Il s'agit du corps du message que vous souhaitez envoyer au serveur APNs; celui-ci doit être au format JSON sous forme de chaîne de caractères. Pour plus d'informations sur le corps des APNs, suivez cette documentation ici.
Exemple de charge utile de notification
"ibmenapnsbody": {"aps":{"alert":{"title":"Game Request","subtitle":"Five Card Draw","body":"Bob wants to play poker"},"category":"GAME_INVITATION"},"gameID":"12345678"}
Pour personnaliser vos notifications push APNs, vous pouvez définir des en-têtes APNs. Certains d'entre eux sont obligatoires pour émettre une notification si la clé est présente. Le corps requis est le suivant :
ce-ibmenapnsbody: {"aps":{"alert":{"title":"Game Request","subtitle":"Five Card Draw","body":"Bob wants to play poker"},"category":"GAME_INVITATION"},"gameID":"12345678"}
Pour plus de détails sur les en-têtes APN, voir Générer une notification à distance.
En-tête de mode binaire
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 (chaîne/json)
Cet attribut est nécessaire si vous souhaitez envoyer une notification push à un appareil Chrome. Il s'agit du corps de la requête que vous souhaitez envoyer au serveur FCM; celui-ci doit être au format JSON sous forme de chaîne de caractères. Pour plus d'informations sur le corps de chrome, voir Notification.
Vous pouvez vous inspirer des exemples suivants pour démarrer rapidement :
"ibmenchromebody": "{\"title\":\"Hello Chrome\", \"options\": {}}"
Pour personnaliser vos notifications push Chrome, vous pouvez fournir des en-têtes Chrome. Certains d'entre eux sont obligatoires pour émettre une notification si la clé est présente. L'exemple de corps est le suivant :
"ibmenchromeheaders":"{\"TTL\":100}"
En-tête de mode binaire
ce-ibmenchromebody: {"title":"Hello Chrome", "options": {}}
ce-ibmenchromeheaders: "{"TTL":100}"
ibmenfirefoxbody (chaîne/json)
Cet attribut est obligatoire si vous souhaitez envoyer une notification push à un appareil Firefox. Il s'agit du corps de la requête que vous souhaitez envoyer au serveur de notifications push d' Firefox; celui-ci doit être au format JSON sous forme de chaîne de caractères. Pour plus d'informations sur l'organisme Firefox, voir Notification.
Vous pouvez vous inspirer des exemples suivants pour démarrer rapidement :
"ibmenfirefoxbody": "{\"title\":\"Hello Firefox\", \"options\": {}}"
Pour personnaliser vos notifications push Chrome, vous pouvez fournir des en-têtes Firefox. Certains d'entre eux sont obligatoires pour émettre une notification si la clé est présente. L'exemple de corps est le suivant :
"ibmenfirefoxheaders": "{\"TTL\":100, \"Urgency\": \"low\" , \"Topic\": \"Test Firefox Notifications\"}",
En-tête de mode binaire
ce-ibmenfirefoxbody: {"title":"Hello Firefox", "options": {}}
ce-ibmenfirefoxheaders: {"TTL":100, "Urgency": "low" , "Topic": "Test Firefox Notifications"}
ibmensafaribody (chaîne/json)
Cet attribut est nécessaire si vous souhaitez envoyer une notification push à un appareil Safari. Il s'agit du corps de message que vous souhaitez envoyer au serveur de notifications push d'Apple; celui-ci doit être au format JSON sous forme de chaîne de caractères. Pour plus d'informations sur le corps de Safari, voir Configurer les notifications push de Safari.
Vous pouvez vous inspirer des exemples suivants pour démarrer rapidement :
"ibmensafaribody": "{\"aps\":{\"alert\":{\"title\":\"Shipment Order 1832128321 Delevered\",\"body\":\"Shipment Order 1832128321 Delevered.\",\"action\":\"View\"},\"url-args\":[\"1832128321\"]}}"
En-tête de mode binaire
ce-ibmensafaribody: {"aps":{"alert":{"title":"Shipment Order 1832128321 Delevered","body":"Shipment Order 1832128321 Delevered.","action":"View"},"url-args":["1832128321"]}}
ibmenhuaweibody(chaîne/json)
Cet attribut est nécessaire si vous souhaitez envoyer une notification push vers un appareil Huawei. Il s'agit du corps que vous souhaitez envoyer au serveur Huawei Push Kit, qui doit être JSON au format chaîne. Pour plus d'informations sur le corps Huawei, voir Huawei Push Notification payload.
Vous pouvez suivre ces exemples pour démarrer rapidement :
"ibmenhuaweibody":"{\"message\":{\"android\":{\"notification\":{\"title\":\"New Message\",\"body\":\"Hello World\",\"click_action\":{\"type\":3}}}}}"
En-tête de mode binaire
ce-ibmenhuaweibody: {"aps":{"alert":{"title":"Shipment Order 1832128321 Delevered","body":"Shipment Order 1832128321 Delevered.","action":"View"},"url-args":["1832128321"]}}
ibmenpushto (chaîne/json)
Cet attribut est obligatoire pour garantir la bonne transmission vers une destination Android, FCM, APNS ou Huawei.
Cette section contient des informations détaillées sur la destination vers laquelle vous souhaitez envoyer une notification push. Ce champ est également au format chaîne de caractères JSON et contient en outre le champ suivant
user_id– Identifiant utilisateur à associer à l'appareil. Où souhaitez-vous envoyer votre notification?tag– Utilisé pour envoyer des notifications sur les balises enregistréesplatform- Vous pouvez cibler tous les appareils enregistrés par plateforme.
Voici les valeurs de la plateforme correspondantes pour chaque type de public cible.
FCM: push_androidAPNS: push_iosChrome: push_chromeFirefox: push_firefoxSafari: push_safariHuawei: push_huaweifcm_devices– Identificateur unique du périphérique FCM vers lequel vous souhaitez cibler votre notificationapns_devices– Identificateur unique du périphérique APNS vers lequel vous souhaitez cibler votre notificationchrome_devices– Identificateur unique du périphérique Chrome Web vers lequel vous souhaitez cibler votre notificationfirefox_devices– Identificateur unique du périphérique Firefox Web vers lequel vous souhaitez cibler votre notificationsafari_devices– Identificateur unique du périphérique Safari Web vers lequel vous souhaitez cibler votre notificationhuawei_devices- Identifiant unique de l'appareil Web Huawei sur lequel vous souhaitez envoyer votre notification
Exemple
"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\"]}"
Il est possible de cibler plusieurs destinations en utilisant les méthodes suivantes
"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\"]}"
Ciblage des notifications sur des ID utilisateur push.
"ibmenpushto": "{\"user_ids\": [\"ajay@accts.acmebank.com\",\"ankit@accts.acmebank.com\"]}"
Ciblage des notifications sur des balises push.
"ibmenpushto": "{\"tags\": [\"salesTeam\",\"TechTeam\"]}"
Ciblage des notifications sur des plateformes.
"ibmenpushto": "{\"platforms\":[\"push_android\",\"push_ios\"]]}"
Notifications ciblant une plateforme spécifique.
"ibmenpushto": "{\"platforms\":[\"push_android\"]}"
"ibmenpushto": "{\"platforms\":[\"push_ios\"]}"
"ibmenpushto": "{\"platforms\":[\"push_chrome\"]}"
"ibmenpushto": "{\"platforms\":[\"push_firefox\"]}"
"ibmenpushto": "{\"platforms\":[\"push_safari\"]}"
"ibmenpushto": "{\"platforms\":[\"push_huawei\"]}"
En-tête de mode binaire
ce-ibmenpushto: "{\"user_id\": [\"ajay@accts.acmebank.com\",\"ankit@accts.acmebank.com\"]}"
pièces jointes(tableau)
Cet attribut est utilisé pour inclure des pièces jointes lors de l'envoi de notifications à des destinations de courrier électronique de domaines personnalisés. Chaque pièce jointe du tableau doit inclure le contenu du fichier encodé au format Base64, ainsi que des métadonnées telles que le nom du fichier, le type de contenu et la disposition.
Les pièces jointes ne sont prises en charge que pour les destinations de courrier électronique des domaines personnalisés. Cette fonction n'est pas disponible pour les destinations de courriel par défaut IBM Cloud.
Le tableau attachments contient des objets ayant les propriétés suivantes :
- contenu (chaîne, obligatoire)
-
Le contenu du fichier encodé au format base64.
Assurez-vous que le contenu est correctement encodé avant de l'inclure dans la charge utile.
- nom de fichier (chaîne, obligatoire)
-
Le nom du fichier tel qu'il apparaîtra au destinataire. Indiquez l'extension du fichier (par exemple, " document.pdf ", " report.xlsx ").
- content_type (chaîne de caractères, non obligatoire)
-
Le type MIME du fichier. Les exemples les plus courants sont les suivants :
application/pdfpour les fichiers PDF
- disposition (chaîne, obligatoire)
-
Utilisez
attachmentpour indiquer que le fichier est une pièce jointe.
Exemple
"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"
}
]
En-tête de mode binaire
ce-attachments: [{"content":"JVBERi0xLjQKJeLjz9MKMyAwIG9iago8PC9UeXBlL...","filename":"document.pdf","content_type":"application/pdf","disposition":"attachment"}]
Notes d'utilisation
- Les pièces jointes sont soumises à des limites de taille. Veillez à ce que la taille totale de votre charge utile (y compris toutes les pièces jointes) ne dépasse pas 40 Mo.
- Vous pouvez joindre un maximum de 10 fichiers par notification par courrier électronique.
- Tout le contenu du fichier doit être encodé à l'adresse base64 avant d'être inclus dans la charge utile.
- Plusieurs pièces jointes peuvent être incluses dans une seule notification en ajoutant plusieurs objets au tableau
attachments. - Cette fonction n'est disponible que lors de l'envoi de notifications à des destinations de courrier électronique de domaines personnalisés.
- Certaines extensions de fichiers sont bloquées pour des raisons de sécurité. Pour la liste complète des extensions bloquées, voir Quelles sont les extensions de fichiers bloquées pour les pièces jointes aux courriers électroniques?