Payload Event Notifications

Questo documento illustra le specifiche di Event Notifications.

Introduzione

Questo documento descrive i dettagli del payload per l'invio di notifiche di eventi utilizzando le sorgenti API in Event Notifications. Le origini API possono essere utilizzate per inviare eventi dalle applicazioni di backend. È possibile utilizzare questo documento per inviare notifiche Push dal backend aziendale.

È possibile visualizzare il payload delle notifiche in arrivo attivando l'opzione Memorizza notifiche per la sorgente. Per ulteriori informazioni, vedere Visualizzazione dei payload delle notifiche.

Gli eventi provenienti da sorgenti API non possono essere indirizzati alle destinazioni e-mail IBM e SMS IBM.

`METHOD: POST`
`URL: /event-notifications/v1/apps/{instanceID}/notifications`
`Header: Authorization: Bearer <IAM token>`

Gli eventi aderiscono allo standard Cloud Event. Puoi trovare ulteriori informazioni su Cloud Events qui.

Mezzi di trasporto

Event Notifications supporta le due modalità seguenti per effettuare chiamate su HTTP. Questo è conforme alla specifica Cloud Events.

Modalità binaria

Nella modalità a contenuto binario, il valore dell'evento data viene inserito nel corpo della richiesta o della risposta di HTTP così com'è. Il valore dell'attributo datacontenttype dichiara il suo tipo di supporto nell'intestazione HTTP Content-Type. Tutti gli altri attributi degli eventi sono mappati alle intestazioni di HTTP.

Tutti i nomi attributo hanno il prefisso ce- e vengono aggiunti all'intestazione (tranne data e datacontenttype).

La modalità binaria è quella consigliata per l'invio delle notifiche.

Modalità strutturata

Nella modalità di contenuto strutturato, gli attributi dei metadati dell'evento e i dati dell'evento sono inseriti nel corpo della richiesta HTTP. Per la modalità strutturata, impostare l'intestazione Content-Type su application/cloudevents+json.

Attributi

Attributi obbligatori CE

I seguenti attributi sono obbligatori per accettare la richiesta di evento.

ID (stringa)

Un identificativo univoco che identifica ciascun evento. source+id deve essere univoco. Il backend deve essere in grado di tracciare in modo univoco questo ID nei log e in altri record. Invia un ID univoco per ogni notifica di invio. Lo stesso ID può essere inviato in caso di mancato invio della notifica.

source+id è registrato nel servizio di registrazione IBM Cloud. Utilizzando questa combinazione, i clienti di IBM sono in grado di tracciare il movimento degli eventi da un sistema all'altro e di aiutare il debug e il tracciamento.

Esempio
id: qwer-1234-1qsd-po94
Intestazione modalità binaria
ce-id: qwer-1234-1qsd-po94

origine (riferimento URI)

Questo è l'identificativo del produttore dell'evento. Un modo per identificare in modo univoco l'origine dell'evento. Per i servizi IBM Cloud si tratta del crn dell'istanza del servizio che produce gli eventi. Per le origini API può essere qualcosa con cui il backend del produttore dell'evento può identificarsi in modo univoco.

Esempio
source: com.mybank.customerbanking.accountmanagement
Intestazione modalità binaria
ce-source: com.mybank.customerbanking.accountmanagement

specversion (stringa)

È la versione della specifica Cloud Events attualmente supportata da Event Notifications. Questo valore deve essere impostato su " 1.0 ".

Esempio
specversion:1.0
Intestazione modalità binaria
ce-specversion:1.0

type (stringa)

Descrive il tipo di evento. È nel formato <event-type-name>:<sub-type>. Questo tipo è definito dal produttore.

Il nome del tipo di evento deve essere preceduto dai nomi DNS inversi in modo che il tipo di evento sia identificato in modo univoco. Lo stesso tipo di evento può essere prodotto da due origini diverse. Si consiglia di utilizzare il trattino - come separatore invece di _.

Esempio 1
`type:com.acmebank.password:expiring-in-15-days`
Type: `com.acmebank.password`
Sub type: `expiring-in-15-days`
Intestazione modalità binaria
ce-type:com.acmebank.password:expiring-in-15-days`
Esempio 2
`type:com.acmebank.password-changed`
Type: `com.acmebank.password-changed`
Sub type: N/A
Intestazione modalità binaria (per l'esempio 2)
`ce-type:com.acmebank.password-changed`

Attributi facoltativi CE

I seguenti attributi sono opzionali ma altamente raccomandati per trarre il massimo vantaggio da Event Notifications.

ora (timestamp)

Data / ora UTC in cui si è verificato l'evento. Deve essere nel formato RFC 3339.

Esempio
time: 2022-02-10T10:51:37+00:00
Intestazione modalità binaria
ce-time: 2022-02-10T10:51:37+00:00

subject (stringa)

Questo è l'oggetto dell'evento nel produttore dell'evento (origine). Quindi, questo può essere l'ID account della password che sta per scadere.

Esempio
subject:ajay@accts.acmebank.com`
Intestazione modalità binaria
`ce-subject:ajay@accts.acmebank.com`

tipo di dato

Definisce il tipo MIME del contenuto dei dati. Attualmente è supportato solo "application/json".

Esempio
`datacontenttype: application/json`
Intestazione modalità binaria
`Content-Type:application/json`

dati

Il payload dell'evento. Può contenere informazioni che possono essere trasmesse a destinazioni come i webhook. Deve essere un oggetto JSON valido.

Non includere nel payload informazioni sensibili come password, chiavi API, numeri di identificazione personale, informazioni sulle carte di credito o altri dati riservati. Il carico utile può essere registrato, memorizzato o trasmesso a varie destinazioni.

Esempio
data: { "lastchanged-days": "74", "reason":"time-based"}

Modalità binaria - fa parte del corpo HTTP N/A.

Attributi obbligatori dell'estensione Event Notifications

Questi sono attributi obbligatori per ciascun evento inviato a Event Notifications.

ibmensourceid (stringa)

Questo è l'ID dell'origine creato in Event Notifications. È disponibile nell'IU Event Notifications nella sezione "Sources".

Esempio
ibmensourceid: 121313123:api
Intestazione modalità binaria
ce-ibmensourceid: 121313123:api

Attributi facoltativi dell'estensione Event Notifications

Questi sono attributi facoltativi.

ibmenseverity (Stringa)

Alcune origini possono avere il concetto di severità Evento. Quindi viene fornito un modo pratico per specificare una severità dell'evento.

Esempio
ibmenseverity:LOW
Intestazione modalità binaria
`ce-ibmenseverity:LOW`

ibmendefaultshort (Stringa)

Questo messaggio viene utilizzato nel caso in cui l'evento instradato a una destinazione che richiede un testo leggibile, ma non è specificato un attributo specifico della destinazione.

Ad esempio, se ibmenfcmbody non è specificato e l'evento viene instradato alla destinazione di tipo FCM Android, ibmendefaultshort viene utilizzato come titolo di notifica (android_title).

Esempio
ibmendefaultshort: "Change password"
Intestazione modalità binaria
ce-ibmendefaultshort: "Change password"

ibmendefaultlong (Stringa)

Questo messaggio viene utilizzato nel caso in cui l'evento instradato a una destinazione che richiede un testo leggibile, ma non è specificato un attributo specifico della destinazione.

Ad esempio, se ibmenfcmbody non è specificato e l'evento viene instradato alla destinazione di tipo FCM Android, ibmendefaultlong viene utilizzato come corpo della notifica (avviso).

Esempio
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."
Intestazione modalità 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 (stringa/json)

Questo attributo è necessario se si vuole inviare una notifica push a un dispositivo Android. Questo è il corpo che si vuole inviare al server FCM; deve essere JSON in formato stringa. Per ulteriori informazioni sull'organismo FCM, vedere qui.

Esempio di carico di notifica
"ibmenfcmbody": "{\"message\":{\"android\":{\"ttl\":\"86400s\",\"notification\":{\"click_action\":\"OPEN_ACTIVITY_1\"},\"data\":{\"id\":\"test_id\"}}}}"
Intestazione modalità binaria
ce-ibmenfcmbody: {"message":{"android":{"ttl":"86400s","notification":{"click_action":"OPEN_ACTIVITY_1"},"data":{"id":"test_id"}}}}

ibmenapnsbody (stringa/json)

Questo attributo è necessario se si vuole inviare una notifica push a un dispositivo iOS. Questo è il corpo che si vuole inviare al server APN; deve essere JSON in formato stringa. Per ulteriori informazioni sul corpo degli APN, seguire questa documentazione qui.

Esempio di carico di notifica
"ibmenapnsbody": {"aps":{"alert":{"title":"Game Request","subtitle":"Five Card Draw","body":"Bob wants to play poker"},"category":"GAME_INVITATION"},"gameID":"12345678"}

Per personalizzare le tue notifiche push APNs, puoi fornire le intestazioni APNs. Alcuni di essi sono obbligatori per consegnare una notifica se la chiave è presente. Il corpo richiesto è il seguente:

ce-ibmenapnsbody: {"aps":{"alert":{"title":"Game Request","subtitle":"Five Card Draw","body":"Bob wants to play poker"},"category":"GAME_INVITATION"},"gameID":"12345678"}

Per maggiori dettagli sulle intestazioni APN, vedere Generazione di una notifica remota.

Intestazione modalità 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 (stringa/json)

Questo attributo è necessario se si vuole inviare una notifica push a un dispositivo chrome. Questo è il corpo che si vuole inviare al server FCM; deve essere JSON in formato stringa. Per ulteriori informazioni sul corpo cromato, vedere Notifica.

Puoi seguire questi esempi per un rapido avvio:

"ibmenchromebody": "{\"title\":\"Hello Chrome\", \"options\": {}}"

Per personalizzare le tue notifiche di push chrome, puoi fornire intestazioni chrome. Alcuni di essi sono obbligatori per consegnare una notifica se la chiave è presente. Il corpo di esempio è il seguente:

"ibmenchromeheaders":"{\"TTL\":100}"
Intestazione modalità binaria
ce-ibmenchromebody: {"title":"Hello Chrome", "options": {}}
ce-ibmenchromeheaders: "{"TTL":100}"

ibmenfirefoxbody (stringa/json)

Questo attributo è necessario se si vuole inviare una notifica push a un dispositivo Firefox. Questo è il corpo che si vuole inviare al server Firefox Push; deve essere JSON in formato stringa. Per ulteriori informazioni sull'organismo Firefox, vedere Notifica.

Puoi seguire questi esempi per un rapido avvio:

"ibmenfirefoxbody": "{\"title\":\"Hello Firefox\", \"options\": {}}"

Per personalizzare le tue notifiche di push chrome, puoi fornire le intestazioni Firefox. Alcuni di essi sono obbligatori per consegnare una notifica se la chiave è presente. Il corpo di esempio è il seguente:

"ibmenfirefoxheaders": "{\"TTL\":100, \"Urgency\": \"low\" , \"Topic\": \"Test Firefox Notifications\"}",
Intestazione modalità binaria
ce-ibmenfirefoxbody: {"title":"Hello Firefox", "options": {}}
ce-ibmenfirefoxheaders: {"TTL":100, "Urgency": "low" , "Topic": "Test Firefox Notifications"}

ibmensafaribody (stringa/json)

Questo attributo è necessario se si vuole inviare una notifica push a un dispositivo Safari. Questo è il corpo che si vuole inviare a Apple Push Notification Server; deve essere JSON in formato stringa. Per ulteriori informazioni sul corpo di Safari, vedere Configurazione delle notifiche push di Safari.

Puoi seguire questi esempi per un rapido avvio:

"ibmensafaribody": "{\"aps\":{\"alert\":{\"title\":\"Shipment Order 1832128321 Delevered\",\"body\":\"Shipment Order 1832128321 Delevered.\",\"action\":\"View\"},\"url-args\":[\"1832128321\"]}}"
Intestazione modalità binaria
ce-ibmensafaribody: {"aps":{"alert":{"title":"Shipment Order 1832128321 Delevered","body":"Shipment Order 1832128321 Delevered.","action":"View"},"url-args":["1832128321"]}}

ibmenhuaweibody(string/json)

Questo attributo è necessario se si vuole inviare una notifica push a un dispositivo Huawei. Questo è il corpo che si vuole inviare al server Huawei Push Kit; deve essere JSON in formato stringa. Per ulteriori informazioni sul corpo di Huawei, vedere il payload di Huawei Push Notification.

È possibile seguire questi esempi per un avvio rapido:

"ibmenhuaweibody":"{\"message\":{\"android\":{\"notification\":{\"title\":\"New Message\",\"body\":\"Hello World\",\"click_action\":{\"type\":3}}}}}"
Intestazione modalità binaria
ce-ibmenhuaweibody: {"aps":{"alert":{"title":"Shipment Order 1832128321 Delevered","body":"Shipment Order 1832128321 Delevered.","action":"View"},"url-args":["1832128321"]}}

ibmenpushto (stringa/json)

Questo attributo è obbligatorio per la consegna a una destinazione Android, FCM, APNS o Huawei.

Contiene i dettagli della destinazione a cui si vuole inviare una notifica push. Questo campo è anche il formato stringa di JSON e contiene inoltre il seguente campo

  • user_id- Userid da associare al dispositivo. in cui si vuole indirizzare la notifica
  • tag- Questo viene utilizzato per inviare notifiche sulle tag registrate
  • platform- È possibile utilizzare come destinazione tutti i dispositivi registrati per piattaforme.

Di seguito sono riportati i corrispondenti valori di piattaforma per ciascun tipo di destinazione.

  • FCM: push_android
  • APNS: push_ios
  • Chrome: push_chrome
  • Firefox: push_firefox
  • Safari: push_safari
  • Huawei: push_huawei
  • fcm_devices- Identificativo univoco del dispositivo FCM a cui vuoi indirizzare la tua notifica
  • apns_devices- Identificativo univoco del dispositivo APNS a cui vuoi indirizzare la tua notifica
  • chrome_devices- Identificativo univoco del dispositivo Web Chrome in cui si desidera indirizzare la notifica
  • firefox_devices- Identificativo univoco del dispositivo Web Firefox a cui si desidera indirizzare la notifica
  • safari_devices- Identificativo univoco del dispositivo Web Safari in cui si desidera indirizzare la notifica
  • huawei_devices- Identificatore univoco del dispositivo Huawei Web a cui si vuole indirizzare la notifica
Esempio
"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\"]}"

Più destinazioni possono essere indirizzate utilizzando i metodi seguenti

"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\"]}"

Notifiche di destinazione per il push di user_ids.

"ibmenpushto": "{\"user_ids\": [\"ajay@accts.acmebank.com\",\"ankit@accts.acmebank.com\"]}"

Notifiche di destinazione per il push delle tag.

"ibmenpushto": "{\"tags\": [\"salesTeam\",\"TechTeam\"]}"

Notifiche mirate alle piattaforme.

"ibmenpushto": "{\"platforms\":[\"push_android\",\"push_ios\"]]}"

Notifiche mirate a una piattaforma specifica.

"ibmenpushto": "{\"platforms\":[\"push_android\"]}"
"ibmenpushto": "{\"platforms\":[\"push_ios\"]}"
"ibmenpushto": "{\"platforms\":[\"push_chrome\"]}"
"ibmenpushto": "{\"platforms\":[\"push_firefox\"]}"
"ibmenpushto": "{\"platforms\":[\"push_safari\"]}"
"ibmenpushto": "{\"platforms\":[\"push_huawei\"]}"
Intestazione modalità binaria
ce-ibmenpushto: "{\"user_id\": [\"ajay@accts.acmebank.com\",\"ankit@accts.acmebank.com\"]}"

allegati(array)

Questo attributo viene utilizzato per includere gli allegati dei file quando si inviano notifiche a destinazioni e-mail di dominio personalizzate. Ogni allegato nell'array deve includere il contenuto del file codificato nel formato Base64, insieme a metadati quali il nome del file, il tipo di contenuto e la disposizione.

Gli allegati e-mail sono supportati solo per le destinazioni e-mail con dominio personalizzato. Questa funzione non è disponibile per le destinazioni e-mail predefinite di IBM Cloud.

L'array attachments contiene oggetti con le seguenti proprietà:

contenuto (stringa, obbligatorio)

Il contenuto del file è codificato nel formato base64.

Assicurarsi che il contenuto sia codificato correttamente prima di includerlo nel payload.

nome del file (stringa, obbligatorio)

Il nome del file come apparirà al destinatario. Includere l'estensione del file (ad esempio, " document.pdf ", " report.xlsx ").

content_type (stringa, non obbligatorio)

Il tipo MIME del file. Esempi comuni sono:

  • application/pdf per i file PDF
disposizione (stringa, obbligatorio)

Utilizzare attachment per indicare che il file è un allegato.

Esempio
"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"
  }
]
Intestazione modalità binaria
ce-attachments: [{"content":"JVBERi0xLjQKJeLjz9MKMyAwIG9iago8PC9UeXBlL...","filename":"document.pdf","content_type":"application/pdf","disposition":"attachment"}]
Note d'utilizzo
  • Gli allegati sono soggetti a limiti di dimensione. Assicuratevi che la dimensione totale del carico utile (compresi tutti gli allegati) non superi i 40 MB.
  • È possibile allegare un massimo di 10 file per ogni notifica e-mail.
  • Tutti i contenuti dei file devono essere codificati in base64 prima di essere inclusi nel payload.
  • È possibile includere più allegati in una singola notifica aggiungendo più oggetti all'array attachments.
  • Questa funzione è disponibile solo quando si inviano notifiche a destinazioni e-mail di dominio personalizzate.
  • Alcune estensioni di file sono bloccate per motivi di sicurezza. Per l'elenco completo delle estensioni bloccate, vedere Quali estensioni di file sono bloccate per gli allegati e-mail?