Utilisation de l'API webhook sur l'état des documents
Vous pouvez utiliser la fonction de webhook de statut de document pour envoyer un événement de webhook à votre application externe lorsque le statut des documents ingérés devient available ou failed. L'événement webhook
vous aide à effectuer l'action suivante sur les documents indexés, sans avoir à obtenir d'abord le statut du document via l'API d'obtention des détails du document.
IBM Cloud Pak for Data lorsque vous exécutez xml-ph-0000@deepl.internal dans un environnement isolé, vous devez vous connecter à l'application externe via un proxy d'xml-ph-0001@deepl.internal IBM Software Hub Lorsque vous exécutez Discovery dans un environnement isolé, vous devez vous connecter à l'application externe via un proxy d' HTTP. Pour plus d'informations, voir Configuration d'un proxy d' HTTP s dans des environnements isolés.
Pour utiliser la fonction de webhook de statut de document, procédez comme suit:
-
Configurez l'application externe qui peut recevoir des notifications de webhook de Discovery.
Pour ce faire, vous devez enregistrer votre application externe en tant que noeud final de webhook sur une collection à l'aide des méthodes d'API
create collectionouupdate collection. Pour plus d'informations, voir Create collection ou update collection dans la référence d'API.L'application externe reçoit un événement
pingde webhook, qui indique que la création du webhook a abouti. L'application externe doit être accessible à partir d' IBM Cloud. -
Ingérez les documents dans la collection. Lorsque le statut des documents ingérés devient
availableoufailed, l'application externe reçoit l'événement de webhookdocument.status.Vous pouvez vérifier le statut des documents ingérés dans l'objet
datade l'événement de webhookdocument.status. Les paramètresdocument_idsetstatusaffichent les ID des documents ingérés et leur statut. Pour plus d'informations, voir Modèle de données de l'événementpinget Modèle de données de l'événementdocument.status.
L'image suivante montre le flux de configuration du webhook.
{: caption="configuration de la fonctionnalité webhook de l'état du documentFlux " caption-side="bottom"} configuration de la fonctionnalité webhook de l'état du document
L'image suivante montre le flux de processus de la fonction de webhook de statut de document.
Pour plus d'informations sur l'API de requête, voir Query a project API method dans la référence d'API.
Vous pouvez également vous référer à l'application webhook-doc-status-sample pour la fonction d'API webhook de statut de document. Pour afficher l'exemple d'application, vous devez avoir accès au référentiel doc-tutorial-downloads de reconnaissance.
Authentification de la demande pour la sécurité du webhook
Pour authentifier la demande webhook, vérifiez le jeton Web JSON (JWT) qui est envoyé avec la demande. Le micro-service webhook génère automatiquement un JWT et l'envoie dans l'en-tête Authorization avec chaque appel webhook. Il
est de votre responsabilité d'ajouter du code au service externe qui vérifie le JWT.
Le système peut générer un jeton JWT en fonction du sample secret que vous spécifiez et, dans l'en-tête Authorization, vous pouvez transmettre ce jeton JWT généré par le système à l'application externe. Si vous spécifiez
une valeur dans header, le microservice webhook envoie cette valeur à l'application externe au lieu du jeton JWT.
Par exemple, si vous spécifiez sample secret dans la zone Secret de l'objet Webhooks dans les API Create collection ou update collection, vous pouvez ajouter un exemple de code tel que le suivant dans 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
}
Modèle de données de l'événement ping
Les paramètres d'événement ping sont les suivants:
| Paramètre | Descriptif |
|---|---|
event |
Le nom de l'événement est ping. |
instance_id |
L'ID de l'instance Discovery. |
version |
Version de l'API Discovery au format yyyy-mm-dd. |
data |
Un objet contenant les informations relatives à l'événement :
|
created_at |
Date et heure de création de l'événement. |
Par exemple, voici un événement ping qui est envoyé à 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"
}
Modèle de données de l'événement document.status
Les paramètres d'événement document.status sont les suivants:
| Paramètre | Descriptif |
|---|---|
event |
Le nom de l'événement est document.status. |
instance_id |
L'ID d'instance de l' Discovery. |
version |
Version de l'API Discovery au format yyyy-mm-dd. |
data |
Objet avec les informations spécifiques à l'événement: project_id, collection_id et document_ids. |
status |
Le statut des documents. |
created_at |
La date et l'heure de création de l'événement. |
Par exemple, voici un événement document.status qui est envoyé à 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"
}