ThingWorx Flow > Création de déclencheurs et gestion des déclencheurs > Création et appel d'un processus avec un déclencheur webhook
Création et appel d'un processus avec un déclencheur webhook
Utilisez le déclencheur webhook pour démarrer des processus à partir de systèmes externes. Le déclencheur webhook fournit une URL qui peut être invoquée par d'autres systèmes pour appeler le serveur ThingWorx afin de démarrer le processus.
Ajout d'un webhook
Pour ajouter un déclencheur webhook à un processus, procédez comme suit :
1. Ouvrez le processus dans lequel vous souhaitez ajouter le déclencheur webhook.
2. Cliquez sur , puis sur , ou double-cliquez sur . La fenêtre Déclencheur s'ouvre.
3. Sélectionnez Webhook. La fenêtre de configuration du webhook s'ouvre.
L'URL à utiliser pour exécuter le processus apparaît dans le champ URL.
4. Cochez la case Asynchrone pour exécuter le webhook de manière asynchrone.
Lorsqu'un webhook s'exécute en mode asynchrone, l'appel au webhook renvoie immédiatement les données et n'attend pas la fin de l'exécution du processus.
5. Dans la section Entrées, cliquez sur AJOUTER pour spécifier les paramètres d'entrée à transmettre au processus lors de l'appel du webhook. Pour chaque paramètre, saisissez les informations suivantes :
a. Nom : nom du paramètre d'entrée.
b. Description : description du paramètre d'entrée.
c. Type de base : type de base du paramètre d'entrée.
Pour ajouter d'autres paramètres d'entrée, cliquez sur Ajouter. Vous pouvez également cliquer sur pour supprimer des paramètres d'entrée que vous avez ajoutés.
6. Cliquez sur Terminé.
Une fois que vous avez défini un déclencheur webhook dans votre processus, vous pouvez définir un paramètre de retour depuis le processus. Le système externe peut obtenir et traiter les résultats de l'exécution du processus. Assurez-vous de définir le déclencheur webhook de sorte qu'il s'exécute en mode synchrone pour que le système externe récupère le paramètre de retour.
Pour définir le paramètre de retour, procédez comme suit :
1. Cliquez sur , puis sur , ou double-cliquez sur . La fenêtre Sortie s'ouvre.
2. Sélectionnez le Type de base des données à renvoyer.
3. Dans le champ Données, mappez une sortie de la dernière action du processus pour renvoyer une valeur au webhook.
4. Cliquez sur TERMINE.
Appel d'un webhook
Après avoir défini un webhook sur un processus, utilisez l'URL du webhook pour lancer l'exécution du processus. Utilisez une requête HTTP avec le mécanisme standard pour appeler les API REST ThingWorx.
La table suivante fournit des informations sur la configuration de la requête HTTP :
Composante de la requête HTTP
Valeur
Méthode
POST
En-têtes
Accept: application/json
Content-Type: application/json
Authorization: Basic <nom d'utilisateur/mot de passe codés>
ou
appkey: <votre clé d'application prédéfinie>
* 
Pour vous assurer que votre authentification webhook arrive à expiration, PTC recommande d'utiliser une clé d'application avec la date et l'heure d'expiration appropriées.
Corps
application/json : charge utile JSON avec des entrées pour le processus, où les noms doivent correspondre aux noms des paramètres d'entrée spécifiés sur le déclencheur webhook.
Par exemple, si le processus est défini avec un webhook, les deux paramètres d'entrée suivants,
Nom : "param1", Type : "STRING"
Nom "param2", Type : "XML"
et renvoie une sortie STRING, alors la charge utile JSON dans le corps de la requête HTTP est la suivante :
{"param1": "This is a string parameter", "param2": "<xml><field1>helloworld</field1></xml>"}
Pour les tests, vous pouvez appeler des processus qui possèdent des webhooks à l'aide d'un outil tel que Postman or curl. L'exemple suivant permet d'appeler un déclencheur webhook :
curl --request POST \
--url https://<server>/Thingworx/Things/FlowThing/Services/webhook_flow \
--header 'Accept: application/json' \
--header 'Authorization: Basic <encoded_user_name_password>'
--header 'Content-Type: application/json' \
--header 'cache-control: no-cache' \
--data '{ "param1": "This is a string parameter", "param2": "<xml><field>helloworld</field></xml>"}
Si le webhook est configuré pour s'exécuter en mode asynchrone, la requête d'appel du webhook renvoie immédiatement des données, et aucune donnée du processus n'est renvoyée dans la réponse HTTP.
Si le webhook est configuré pour s'exécuter en mode synchrone, la requête d'appel du webhook n'est pas exécutée tant que le processus n'est pas terminé, et les données du processus sont renvoyées dans la réponse HTTP. Le format de réponse est conforme aux conventions d'appel de services ThingWorx et est déterminé par l'en-tête Accept dans la requête HTTP.
Dans ce cas, la réponse est au format JSON comme suit :
{
"dataShape": {
"fieldDefinitions": {
"result": {
"name": "result",
"description": "result",
"baseType": "STRING",
"ordinal": 0,
"aspects": {}
}
}
},
"rows": [
{
"result": "<workflow result here>"
}
]
}