Les triggers Zapier s’appuient sur le système d'abonnements aux webhook de weavyL’ancrage (hook) consiste à lier un évènement webhook à une URL externe, il est donc nécessaire d’utiliser un point d’ancrage ou d’en créer un nouveau pour l'évènement souhaité, qui va envoyer les données que l’on aura défini à toutes les URL s'étant abonnées au point d’ancrage.
Dans le cas où l'évènement n’existe pas encore, il faudra donc dans un premier temps définir les données qui vont être envoyées lorsque cet évènement va être déclenché, puis placer l'évènement au bon endroit dans le code existant pour qu’il renvoie ces données à toutes les URL abonnées.
Par exemple, le trigger NewOpportunity, qui se déclenche lorsqu’une nouvelle opportunité est créée, existe déjà en standard, mais si nous avions voulu le recréer, il aurait fallu :
Créer un nouveau script serveur qui contiendra les données que l’on souhaite envoyer à chaque fois que le trigger sera déclenché.
Dans notre cas il s’agit de FuncServer_GetWebhookResponseBody_NewOpportunity (à noter que le suffixe du script correspond doit correspondre au nom du trigger). Ce script est utilisé à la fois par le webhook auquel on s’est abonné, et pour l’envoi des données via déclenchement de l'évènement, mais également par le endpoint EPT_WebhookPerformListqui est globalement un endpoint , utilisé pour récupérer des échantillons de données de test, permettant ainsi de tester à la demande les données renvoyées par le webhook sans avoir à le déclencher manuellement.Placer le trigger qui va envoyer les données au bon moment.
Dans notre cas on s’appuie sur le système de notification par datatracking afin d'être sur que le trigger soit déclenché quelle que soit l’origine de l’insertion en base de donnée. On modifie donc le script SysNotification_Deal_ParseForEach à cet endroit :Bloc de code IF( EQUALS( action, "1" ) ) THEN actionKey = "insert" ENDIF
En quelque chose de type
où la ligne 6 va appeler le script précédemment créé pour récupérer les données à envoyer, et la ligne 7 va les envoyer à toutes les URL s'étant abonné à ce trigger.Bloc de code IF( EQUALS( action, "1" ) )THEN actionKey = "insert" // "NewOportunity" webhook triggerevent. IF( EQUALS( isProject, "1" ) ) THEN webhookBody = CALL_SCRIPT( "FuncServer_GetWebhookResponseBody_NewOpportunityTriggerWebhookEvent", "<varscript>rowid</varscript>" ) EXECUTE_SCRIPT_FOREACH_ROW( "FuncServer_SendHookResponse", "sql", "SELECT triggerKey, hookUrl, '<varscript>webhookBody</varscript>' AS bodyObject FROM sw_data_webhooksubscription WHERE triggerKey = 'NewOpportunity'"NewOpportunity", rowId ) ENDIF ENDIF
Et c’est tout.
N’importe quel service s'étant abonné au trigger NewOpportunity via le endpoint EPT_WebhookSubscribe recevra ensuite les données définies à chaque fois qu’une opportunité sera créée.A noter qu’il est également possible de se désabonner via le endpoint EPT_WebhookUnsubscribe