-
les forfaits Team, Professional, Business et Enterprise
Contactez le service commercial pour toute question relative aux licences.
Les webhooks notifient les événements à des services externes tels que des clients de chat ou d'autres API externes. Un webhook peut définir une URL lorsqu'un événement spécifique a lieu.
Important
Les uploads de fichiers ne déclenchent que les événements uploads: create
and uploads: processing
webhook .
clés:créer
, clés:mettre
à jour, traductions:créer
et traductions:mettre à jour
les événements webhook ne sont pas déclenchés par des uploads de fichiers ou des imports automatisés via:
Une période de conservation de 30 jours est prévue pour l'historique webhook.
Webhook response
Un point de terminaison webhook doit renvoyer un code statut HTTP de l'ordre de 200 à 299 dans les 5 secondes suivant la réception d'un rappel. Les autres codes statuts et les autres échéances de demande sont considérés comme des échecs de livraison. Un webhook sera désactivé si la livraison échoue pendant plus de 10 événements consécutifs. Les rappels ne sont pas répétés.
Si vous recevez un rappel, répondez dans le délai d’attente de 5 secondes. Pour s’assurer que les applications ne déclenchent pas accidentellement une expiration, reportez le traitement jusqu’à ce que la réponse HTTP ait été envoyée.
Intégrité de la demande de webhook
Chaque demande webhook comprend un en-tête X-PhraseApp-Signature
qui est généré en utilisant le jeton de vérification webhook comme secret avec les données envoyées dans la demande. Vérifier l ' origine de la demande en calculant le résumé HMAC du corps de la demande et en le comparant à la valeur indiquée dans l ' en-tête X-PhraseApp-Signature
.
Exemples :
Ruby
def verify_webhook(signatureheader) digest = OpenSSL::Digest::Digest.new('sha256') hmac = OpenSSL::HMAC.digest(digest, VERIFICATION_TOKEN, request.body) hmac = Base64.encode64(hmac).strip hmac == signatureheader end
PHP
function verify_webhook($signatureheader){ $hmac = hash_hmac('sha256', $requestBody, $verificationToken, true); $hmac = trim(base64_encode($hash)); return $hmac == $signatureheader; }
Nom de l'événement |
Description |
---|---|
|
Une branche fut créée. |
|
Une branche fut fusionnée. |
|
Un commentant une clé de traduction a été ajouté. |
|
Une valeur de champ de métadonnées personnalisée a été mise à jour dans plusieurs clés. |
|
Une valeur de champ de métadonnées personnalisée a été mise à jour au niveau de la clé. |
|
Une tâche était marquée comme Terminée. |
|
Une tâche est créée. |
|
Un paramètre régional d'une tâche était marqué comme terminé. |
|
Un paramètre régional d'une tâche a été rouvert. |
|
Un paramètre régional d'une tâche était révisé et marqué comme Terminé. |
|
Un paramètre régional d'une tâche était révisé et rouvert. |
|
Une tâche a été rouverte. |
|
Une tâche a commencé. |
|
Une tâche est mise à jour. |
|
Plusieurs clés ont été supprimées. |
|
Une clé fut créée. |
|
Une clé a été supprimée. |
|
Une clé a été renommée ou modifiée. |
|
Un projet a créé une nouvelle langue. |
|
Une version langue a été supprimée. |
|
Une version langue a été modifiée, renommée ou reconfigurée. |
|
Un projet a été modifié ou reconfiguré. |
|
Une version OTA a été créée. |
|
Une version OTA a été supprimée. |
|
Une capture d'écran a été créée. |
|
Une capture d'écran a été supprimée. |
|
Une capture d'écran a été modifiée ou renommée. |
|
Une liste des traductions a été supprimée. |
|
Une liste révisée des traductions a été établie. |
|
Une liste des traductions n'a pas été révisée. |
|
Une liste de traductions a été non vérifiée . |
|
On a vérifié une liste de traductions. |
|
Une traduction d'une clé dans une certaine langue était ajoutée. |
|
Une traduction d'une clé dans une certaine langue était livrée par un fournisseur de service langue. |
|
On a révisé une traduction d'une clé dans une certaine langue. |
|
Une traduction d'une clé dans une certaine langue était non révisée. |
|
Non vérifiée était la traduction d'une clé dans une certaine langue. |
|
Une traduction d'une clé dans une certaine langue était modifiée. |
|
On a vérifié une traduction d'une clé dans une certaine langue. |
|
Un fichier paramètres régionaux a été traité avec succès. |
|
Un fichier paramètres régionaux est en cours de traitement. |
Pour ajouter un webhook, procédez comme suit :
-
Dans la page Configurer.
, faites défiler vers et cliquez surLa page
ouvre. -
Ajouter webhook
La fenêtre
s'ouvre. -
Fournis les détails webhook.
-
-
Cliquer sur Enregistrer. La liste de la page
est ajoutée au webhook spécifié.
Un webhook peut être désactivé depuis le menu
d'un webhook spécifique.Pour tester un webhook :
-
Dans la page Envoyer notification test dans le menu .
, sélectionnez un webhook et sélectionnezUn avis est présenté indiquant que le test a réussi.
Utilisez un service tel que RequestBin pour capturer le contenu d'un webhook. RequestBin fournit une adresse URL qui recueille les données de demande pour inspection.
Une requête POST est envoyée à l'adresse URL de rappel spécifiée chaque fois qu'un événement du type spécifié se produit. La charge utile POST de la requête est un document encodé JSON avec des données pertinentes pour l"événement. Les attributs événement
et message
seront toujours inclus, ainsi que des attributs supplémentaires pertinents à l'événement tels que l'utilisateur, projet et branche à partir desquels le webhook a été déclenché.
En-têtes de réponse
Les demandes HTTP effectuées sur l'adresse URL de rappel contiendront plusieurs en-têtes spéciaux.
-
X-PhraseApp-Event
: Type d’événement à l’origine du webhook -
X-PhraseApp-Signature
: Le résumé hexagonal HMAC de la charge utile, en utilisant le secret du crochet comme clé.
Exemple :
Content-Type: application/json X-PhraseApp-Event: translation:create X-PhraseApp-Signature: abc123 { "event": "translations:create", "message": "Peter translated page.help.title in fr.", "user": { "id": "abcd1234cdef1234abcd1234cdef1234", "username": "joe.doe", "name": "Joe Doe", "email": "joe@phrase.com", "position": "Lead Developer", "created_at": "2015-01-28T09:52:53Z", "updated_at": "2015-01-28T09:52:53Z" }, "project": { "id": "abcd1234cdef1234abcd1234cdef1234", "name": "My Android Project", "main_format": "xml", "project_image_url": "http://assets.phrase.com/project.png", "account": "account", "created_at": "2015-01-28T09:52:53Z", "updated_at": "2015-01-28T09:52:53Z" }, "branch": { "name": "branch_name" }, "translation": { "id": "abcd1234cdef1234abcd1234cdef1234", "content": "My translation", "unverified": false, "excluded": false, "plural_suffix": "", "key": { "id": "abcd1234cdef1234abcd1234cdef1234", "name": "home.index.headline", "plural": false }, "locale": { "id": "abcd1234cdef1234abcd1234cdef1234", "name": "de", "code": "de-DE" }, "placeholders": [ "%{count}" ], "created_at": "2015-01-28T09:52:53Z", "updated_at": "2015-01-28T09:52:53Z" } }