Integrationen

Webhooks (Strings)

Inhalte werden von Phrase Language AI maschinell aus dem Englischen übersetzt.

Verfügbar für

  • Team-, Professional-, Business- und Enterprise-Pläne

Kontaktiere Vertrieb für Fragen zur Lizenzierung.

Webhooks benachrichtigen externe Dienste wie Chat-Clients oder andere externe APIs über Ereignisse. Ein Webhook kann eine URL setzen, wenn ein bestimmtes Ereignis stattfindet.

Wichtig

Datei uploads lösen nur die uploads:erstellen und uploads:Verarbeitung von Webhook Ereignissen aus.

keys:erstellen, keys:aktualisieren, übersetzungen:erstellen und übersetzen:aktualisieren Webhook Ereignisse werden nicht durch Datei uploads oder automatisierte Importe ausgelöst über:

Für den Verlauf des Webhooks gibt es eine 30-tägige Aufbewahrungsfrist.

Webhook Antwort

Ein Webhook Endpunkt muss innerhalb von 5 Sekunden nach Erhalt eines Rückrufs einen HTTP Status Code im Bereich 200–299 zurückgeben. Andere Status Codes und Anforderungs-Timeouts gelten als Lieferfehler. Ein Webhook wird deaktiviert, wenn die Lieferung für mehr als 10 aufeinanderfolgende Ereignisse fehlschlägt. Rückrufe werden nicht wiederholt.

Wenn du einen Rückruf erhältst, antworte innerhalb des 5-Sekunden-Anforderungszeitraums. Um sicherzustellen, dass Anwendungen nicht versehentlich ein Timeout auslösen, verschieben Sie die Verarbeitung bis nach dem Senden der HTTP-Antwort.

Integrität Webhook anfordern

Jede Webhook Anfrage umfasst einen X-PhraseApp-Signature Header, der unter Verwendung des Webhook Verifizierungs Tokens als Geheimnis zusammen mit den in der Anfrage gesendeten Daten erzeugt wird. Überprüfe den Ursprung der Anfrage, indem du den HMAC-Verdau des Anfragetextes berechnest und mit dem Wert im X-PhraseApp-Signature-Header vergleichst.

Beispiele:

Rubin

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

Eventname

Beschreibung

branches:create

Ein Branch wurde erstellt.

branches:merge

Ein Branch wurde zusammengeführt.

comments:create

Ein Translation Key wurde kommentiert.

custom_metadata_values:batch_update

Ein benutzerdefinierter Metadatenfeldwert wurde in mehreren Keys aktualisiert.

custom_metadata_values:update

Ein benutzerdefinierter Metadatenfeldwert wurde auf Key Ebene aktualisiert.

jobs:complete

Ein Job wurde als Abgeschlossen markiert.

jobs:create

Es wird ein Job erstellt.

jobs:locale:complete

Eine Sprache eines Jobs wurde als abgeschlossen markiert.

jobs:locale:reopened

Eine Sprache eines Jobs wurde wieder geöffnet.

jobs:locale:review:complete

Die Sprache eines Jobs wurde geprüft und als Abgeschlossen markiert.

jobs:locale:review:reopen

Eine Sprache eines Jobs wurde geprüft und wieder geöffnet.

jobs:reopened

Ein Job wurde wieder geöffnet.

jobs:start

Ein Job wurde gestartet.

jobs:update

Ein Job wird aktualisiert.

keys:batch_delete

Mehrere Keys wurden gelöscht.

keys:create

Es wurde ein Key erstellt.

keys:delete

Ein Key wurde gelöscht.

keys:update

Ein Key wurde umbenannt oder geändert.

locales:create

In einem Projekt wurde eine neue Sprache erstellt.

locales:delete

Eine Sprache wurde gelöscht.

locales:update

Eine Sprache wurde geändert, umbenannt oder neu konfiguriert.

project:update

Ein Projekt wurde geändert oder neu konfiguriert.

releases:create

Ein OTA Release wurde erstellt.

releases:delete

Ein OTA Release wurde gelöscht.

screenshots:create

Es wurde ein Screenshot erstellt.

screenshots:delete

Ein Screenshot wurde gelöscht.

screenshots:update

Ein Screenshot wurde geändert oder umbenannt.

translations:batch_delete

Eine Liste der Übersetzungen wurde gelöscht.

translations:batch_review

Eine Liste geprüfter Übersetzungen wurde erstellt.

translations:batch_unreview

Eine Liste der Übersetzungen wurde ungeprüft.

translations:batch_unverify

Eine Liste der Übersetzungen wurde nicht verifiziert.

translations:batch_verify

Eine Liste der Übersetzungen wurde überprüft.

translations:create

Es wurde eine Übersetzung eines Key in einer bestimmten Sprache hinzugefügt.

translations:deliver

Eine Übersetzung eines Keys in einer bestimmten Sprache wurde von einem Dienstleister für Sprachen geliefert.

translations:review

Eine Übersetzung eines Key in einer bestimmten Sprache wurde geprüft.

translations:unreview

Eine Übersetzung eines Key in einer bestimmten Sprache wurde nicht geprüft.

translations:unverify

Eine Übersetzung eines Key in einer bestimmten Sprache wurde nicht verifiziert verifiziert.

translations:update

Eine Übersetzung eines Key in einer bestimmten Sprache wurde bearbeitet.

translations:verify

Eine Übersetzung eines Key in einer bestimmten Sprache wurde überprüft.

uploads:create

Eine Sprachdatei wurde erfolgreich verarbeitet.

uploads:processing

Eine Sprachdatei wird gerade bearbeitet.

Webhook hinzufügen

Um einen Webhook hinzufügen, folge diesen Schritten:

  1. Scrolle auf der Seite Integrationen nach unten zu Webhooks und klicke auf Konfigurieren.

    Die Seite Webhooks öffnet sich.

  2. Klicke auf Webhook hinzufügen.

    Das Fenster Webhook hinzufügen öffnet sich.

  3. Gib Webhook Details an.

  4. Optional Branches einschließen.

  5. Klicke auf Speichern. Der angegebene Webhook wird der Liste auf der Webhooks-Seite hinzugefügt.

Ein Webhook kann über das Menü Mehr eines bestimmten Webhooks deaktiviert werden.

Testen eines Webhooks

So testen Sie einen Webhook:

  • Wähle auf der Seite Webhooks einen Webhook aus und wähle im Menü Mehr Test-Benachrichtigung senden.

    Es wird ein Hinweis angezeigt, dass der Test erfolgreich war.

Verwende eine Dienstleistung wie RequestBin, um den Inhalt eines Webhooks zu erfassen. RequestBin stellt eine URL bereit, die Anforderungsdaten zur Prüfung sammelt.

Verwendung von Webhook Daten

Jedes Mal, wenn ein Ereignis des angegebenen Typs auftritt, wird eine POST-Anfrage an die angegebene Callback-URL gesendet. Die POST Payload der Anfrage ist ein JSON-kodiertes Dokument mit relevanten Daten für das Ereignis. Die Attribute events und message werden immer enthalten, zusammen mit zusätzlichen für das Ereignis relevanten Attributen wie User, Projekt und Branch, von dem aus der Webhook ausgelöst wurde.

Antwort-Header

HTTP-Anfragen an die Callback-URL enthalten mehrere spezielle Header.

  • X-PhraseApp-Event: Die Art des Ereignisses, das den Webhook ausgelöst hat.

  • X-PhraseApp-Signatur: Der HMAC Hex-Verdau der Nutzlast, wobei das Geheimnis des Hooks als Key verwendet wird.

Beispiel:

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"
  }
}
War dieser Beitrag hilfreich?

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.