Utilizzo dell'API webhook sullo stato del documento
Puoi utilizzare la funzione webhook di stato del documento per inviare un evento webhook alla tua applicazione esterna quando lo stato dei documenti inseriti diventa available o failed. L'evento webhook ti aiuta a eseguire
l'azione successiva sui documenti indicizzati, senza dover ottenere lo stato del documento prima tramite l'API Acquisisci dettagli documento.
IBM Cloud Pak for Data quando si esegue unxml-ph-0000@deepl.internalin un ambiente isolato, è necessario connettersi all'applicazione esterna tramite un proxy di tipo "xml-ph-0001@deepl.internal" IBM Software Hub Quando si esegue Discovery in un ambiente isolato, è necessario connettersi all'applicazione esterna tramite un proxy HTTP. Per ulteriori informazioni, vedere Impostazione di un proxy di HTTP in ambienti isolati.
Per utilizzare la funzione webhook di stato del documento, effettuare le seguenti operazioni:
-
Configura l'applicazione esterna che può ricevere notifiche webhook da Discovery.
Per farlo, devi registrare la tua applicazione esterna come un endpoint webhook su una raccolta utilizzando i metodi API
create collectionoupdate collection. Per ulteriori informazioni, vedi Crea raccolta o aggiorna raccolta nella guida di riferimento API.L'applicazione esterna riceve un evento webhook
ping, che notifica che il webhook è stato creato correttamente. L'applicazione esterna deve essere accessibile da IBM Cloud. -
Inserire i documenti nella raccolta. Quando lo stato dei documenti inseriti diventa
availableofailed, l'applicazione esterna riceve l'evento webhookdocument.status.Puoi controllare lo stato dei documenti inseriti nell'oggetto
datadell'evento webhookdocument.status. I parametridocument_idsestatusmostrano gli ID dei documenti inseriti e il loro stato. Per ulteriori informazioni, vedi Modello di dati dell'eventopinge Modello di dati dell'eventodocument.status.
La seguente immagine mostra il flusso di configurazione webhook.
La seguente immagine mostra il flusso del processo della funzione webhook di stato documento.
Per ulteriori informazioni sull'API di query, vedi Query di un metodo API del progetto nella guida di riferimento API.
Puoi anche fare riferimento all'applicazione webhook - doc - status - sample per la funzione API webhook dello stato del documento. Per visualizzare l'applicazione di esempio, è necessario avere accesso al repository doc - tutorial - downloads di Discovery.
Autenticazione della richiesta per la sicurezza dei webhook
Per autenticare la richiesta webhook, verificare il JWT (JSON Web Token) inviato con la richiesta. Il microservizio webhook genera automaticamente un JWT e lo invia nell'intestazione Authorization con ogni chiamata webhook. È responsabilità
dell'utente aggiungere del codice al servizio esterno che verifica il JWT.
Il sistema può generare un JWT basato sul sample secret specificato e nell'intestazione Authorization, è possibile passare questo JWT generato dal sistema all'applicazione esterna. Se specifichi un valore nel header,
il microservizio webhook invia tale valore all'applicazione esterna invece che al JWT.
Ad esempio, se specifichi sample secret nel campo Secret dell'oggetto Webhooks nelle API Create collection o update collection, potresti aggiungere il seguente codice di esempio in Node.js:
const jwt = require('jsonwebtoken');
...
const token = request.headers.authentication; // grab the "Authentication" header
try {
const decoded = jwt.verify(token, 'sample secret');
} catch(err) {
// error thrown if token is invalid
}
Modello di dati dell'evento ping
Di seguito sono riportati i parametri dell'evento ping :
| Parametro | Descrizione |
|---|---|
event |
Il nome evento è ping. |
instance_id |
L'ID istanza Discovery. |
version |
La versione API Discovery nel formato yyyy-mm-dd. |
data |
Un oggetto con le informazioni sull'evento:
|
created_at |
La data e l'ora di creazione dell'evento. |
Ad esempio, di seguito è riportato un evento ping inviato a un webhook:
POST https://example.com/webhook
Authorization: Basic YWxhZGRpbjpvcGVuc2VzYW1l
X-Global-Transaction-ID: 5144bb45-dc81-402c-a045-249fd1318515
Content-Type: application/json
{
"event": "ping",
"version": "2023-03-31",
"instance_id": "1a5d4916-6097-4150-977a-ca897226565c",
"data": {
"url": "https://example.com/webhook",
"events": [
"document.status"
],
"metadata": {
"project_id": "02a803f9-c814-4fcb-a764-e01e3d4dd002",
"collection_id": "f41ae858-0ca9-d0ed-0000-01890118cc5b"
}
},
"created_at": "2023-08-16T08:34:46.000Z"
}
Modello di dati dell'evento document.status
Di seguito sono riportati i parametri dell'evento document.status :
| Parametro | Descrizione |
|---|---|
event |
Il nome evento è document.status. |
instance_id |
L'ID istanza Discovery. |
version |
La versione API Discovery nel formato yyyy-mm-dd. |
data |
Un oggetto con le informazioni specifiche dell'evento: project_id, collection_id e document_ids. |
status |
Lo stato dei documenti. |
created_at |
La data e l'ora in cui l'evento è stato creato. |
Ad esempio, di seguito è riportato un evento document.status inviato a un webhook:
POST https://example.com/webhook
Authorization: Basic YWxhZGRpbjpvcGVuc2VzYW1l
X-Global-Transaction-ID: 5144bb45-dc81-402c-a045-249fd1318515
Content-Type: application/json
{
"event": "document.status",
"version": "2023-03-31",
"instance_id": "1a5d4916-6097-4150-977a-ca897226565c",
"data": {
"project_id": "02a803f9-c814-4fcb-a764-e01e3d4dd002",
"collection_id": "f41ae858-0ca9-d0ed-0000-01890118cc5b",
"document_ids": [
"1a5d4916-6097-4150-977a-ca897226565b",
"2a5d4916-6097-4150-977a-ca897226565b"
],
"status": "available"
},
"created_at": "2023-08-16T08:34:46.000Z"
}