Intégrations

Webhooks (Strings)

Le contenu est traduit de l’anglais par Phrase Language AI.

Disponible pour

  • 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;
}

Webhook Events

Nom de l'événement

Description

branches:create

Une branche fut créée.

branches:merge

Une branche fut fusionnée.

comments:create

Un commentant une clé de traduction a été ajouté.

custom_metadata_values:batch_update

Une valeur de champ de métadonnées personnalisée a été mise à jour dans plusieurs clés.

custom_metadata_values:update

Une valeur de champ de métadonnées personnalisée a été mise à jour au niveau de la clé.

jobs:complete

Une tâche était marquée comme Terminée.

jobs:create

Une tâche est créée.

jobs:locale:complete

Un paramètre régional d'une tâche était marqué comme terminé.

jobs:locale:reopened

Un paramètre régional d'une tâche a été rouvert.

jobs:locale:review:complete

Un paramètre régional d'une tâche était révisé et marqué comme Terminé.

jobs:locale:review:reopen

Un paramètre régional d'une tâche était révisé et rouvert.

jobs:reopened

Une tâche a été rouverte.

jobs:start

Une tâche a commencé.

jobs:update

Une tâche est mise à jour.

keys:batch_delete

Plusieurs clés ont été supprimées.

keys:create

Une clé fut créée.

keys:delete

Une clé a été supprimée.

keys:update

Une clé a été renommée ou modifiée.

locales:create

Un projet a créé une nouvelle langue.

locales:delete

Une version langue a été supprimée.

locales:update

Une version langue a été modifiée, renommée ou reconfigurée.

project:update

Un projet a été modifié ou reconfiguré.

releases:create

Une version OTA a été créée.

releases:delete

Une version OTA a été supprimée.

screenshots:create

Une capture d'écran a été créée.

screenshots:delete

Une capture d'écran a été supprimée.

screenshots:update

Une capture d'écran a été modifiée ou renommée.

translations:batch_delete

Une liste des traductions a été supprimée.

translations:batch_review

Une liste révisée des traductions a été établie.

translations:batch_unreview

Une liste des traductions n'a pas été révisée.

translations:batch_unverify

Une liste de traductions a été non vérifiée .

translations:batch_verify

On a vérifié une liste de traductions.

translations:create

Une traduction d'une clé dans une certaine langue était ajoutée.

translations:deliver

Une traduction d'une clé dans une certaine langue était livrée par un fournisseur de service langue.

translations:review

On a révisé une traduction d'une clé dans une certaine langue.

translations:unreview

Une traduction d'une clé dans une certaine langue était non révisée.

translations:unverify

Non vérifiée était la traduction d'une clé dans une certaine langue.

translations:update

Une traduction d'une clé dans une certaine langue était modifiée.

translations:verify

On a vérifié une traduction d'une clé dans une certaine langue.

uploads:create

Un fichier paramètres régionaux a été traité avec succès.

uploads:processing

Un fichier paramètres régionaux est en cours de traitement.

Ajouter un Webhook

Pour ajouter un webhook, procédez comme suit :

  1. Dans la page Intégrations, faites défiler vers Webhooks et cliquez sur Configurer.

    La page Webhooks s'ouvre.

  2. Ajouter webhook

    La fenêtre Ajouter webhook s'ouvre.

  3. Fournis les détails webhook.

  4. Inclure des branches

  5. Cliquer sur Enregistrer. La liste de la page Webhooks est ajoutée au webhook spécifié.

Un webhook peut être désactivé depuis le menu Plus d'un webhook spécifique.

Tester un webhook

Pour tester un webhook :

  • Dans la page Webhooks, sélectionnez un webhook et sélectionnez Envoyer notification test dans le menu Plus.

    Un 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.

Utiliser Webhook Data

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"
  }
}
Cet article vous a-t-il été utile ?

Sorry about that! In what way was it not helpful?

The article didn’t address my problem.
I couldn’t understand the article.
The feature doesn’t do what I need.
Other reason.

Note that feedback is provided anonymously so we aren't able to reply to questions.
If you'd like to ask a question, submit a request to our Support team.
Thank you for your feedback.