Integrace

Webhooky (Strings)

Obsah je strojově přeložen z angličtiny s použitím Phrase Language AI.

K dispozici pro

  • edice Team, Professional, Business a Enterprise

S dotazy ohledně licencí se obraťte na prodejní oddělení.

Webhooky oznamují události externím službám, jako jsou chatovací klienty nebo externí API. Webhook může nastavit URL pro konkrétní událost.

Důležité

Nahrání souborů spouští pouze události webhooku uploads:create a uploads:processing.

Události keys:create, keys:update, translations:create a translations:update se nespouštějí nahráním souborů nebo automatickými importy prostřednictvím:

Pro historii webhooků je stanovena 30denní lhůta uchovávání.

Odpověď webhooku

Koncový bod webhooku musí do 5 sekund od přijetí zpětného volání vrátit stavový kód HTTP v rozsahu 200–299. Ostatní stavové kódy a vypršení časového limitu požadavku se považují za selhání. Webhook bude deaktivován, pokud se doručení nezdaří u více než 10 po sobě jdoucích událostí. Volání se neopakují.

Pokud obdržíte zpětné volání, odpovězte do 5sekundového časového limitu požadavku. Aby aplikace náhodou nespustily vypršení časového limitu, odložte zpracování na dobu po odeslání odpovědi HTTP.

Integrita požadavku webhooků

Každý požadavek webhooku obsahuje hlavičku X-PhraseApp-Signature, která je vygenerována s využitím ověřovacího tokenu webhooku v podobě secretu spolu s daty zaslanými v požadavku. Ověřte původ požadavku výpočtem digestu HMAC těla požadavku a jeho porovnáním s hodnotou v hlavičce X-PhraseApp-Signature.

Příklady:

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

Události webhooku

Název události

Popis

branches:create

Byla vytvořena větev.

branches:merge

Větev byla sloučena.

comments:create

Byl přidán komentář k překladovému klíči.

custom_metadata_values:batch_update

Hodnota pole vlastních metadat byla aktualizována ve více klíčích.

custom_metadata_values:update

Na úrovni klíče byla aktualizována hodnota pole vlastních metadat.

jobs:complete

Zakázka byla označena jako Dokončená.

jobs:create

Je vytvořena zakázka.

jobs:locale:complete

Kód jazyka zakázky byl označen jako dokončený.

jobs:locale:reopened

Kód jazyka zakázky byl znovu otevřen.

jobs:locale:review:complete

Kód jazyka zakázky byl zkontrolován a označen jako Dokončený.

jobs:locale:review:reopen

Kód jazyka zakázky byl zkontrolován a znovu otevřen.

jobs:reopened

Zakázka byla znovu otevřena.

jobs:start

Zakázka byla zahájena.

jobs:update

Zakázka byla aktualizována.

keys:batch_delete

Několik klíčů bylo odstraněno.

keys:create

Byl vytvořen klíč.

keys:delete

Klíč byl odstraněn.

keys:update

Klíč byl přejmenován nebo změněn.

locales:create

V projektu byla vytvořena nová verze jazyka.

locales:delete

Verze jazyka byla odstraněna.

locales:update

Verze jazyka byla změněna, přejmenována nebo překonfigurována.

project:update

Projekt byl změněn nebo rekonfigurován.

releases:create

Bylo vytvořeno vydání OTA.

releases:delete

Vydání OTA bylo odstraněno.

screenshots:create

Byl vytvořen snímek obrazovky.

screenshots:delete

Snímek obrazovky byl odstraněn.

screenshots:update

Snímek obrazovky byl změněn nebo přejmenován.

translations:batch_delete

Seznam překladů byl odstraněn.

translations:batch_review

Seznam překladů byl zkontrolován.

translations:batch_unreview

Seznam překladů nebyl zkontrolován.

translations:batch_unverify

Seznam překladů byl neověřen.

translations:batch_verify

Seznam překladů byl ověřen.

translations:create

Byl přidán překlad klíče v určité jazykové verzi.

translations:deliver

Překlad klíče do určitého jazyka byl zajištěn poskytovatelem jazykových služeb.

translations:review

Byl zkontrolováno překlad klíč v určité jazykové verzi.

translations:unreview

Překlad klíče v určité jazykové verzi byl převeden na nezkontrolovaný.

translations:unverify

Překlad klíče v určité jazykové verzi byl přeceden na neověřený.

translations:update

Byl upraven překlad klíče v určité jazykové verzi.

translations:verify

Byl ověřen překlad klíče v určité jazykové verzi.

uploads:create

Byl úspěšně zpracován soubor kódu jazyka.

uploads:processing

Zpracovává se soubor kódu jazyka.

Přidat webhook

Chcete-li přidat webhook, postupujte takto:

  1. Na stránce Integrace přejděte dolů na webhooky a klikněte na Konfigurovat.

    Otevře se stránka webhooků.

  2. Klikněte na Přidat webhook.

    Otevře se okno Přidat webhook.

  3. Zadejte podrobnosti o webhooku.

  4. Volitelně Zahrňte větve.

  5. Klikněte na Uložit. Zadaný webhook se přidá do seznamu na stránce Webhooky.

Webhook lze deaktivovat z nabídky Více konkrétního webhooku.

Vyzkoušet webhook

Testování webhooku:

  • Na stránce webhooků vyberte webhook a z nabídky Více vyberte Odeslat zkušební oznámení.

    Je zobrazeno oznámení, že test byl úspěšný.

K zachycení obsahu webhooku použijte službu, jako je RequestBin. RequestBin poskytuje URL, která shromažďuje údaje o požadavcích ke kontrole.

Používání webhooků

Požadavek POST je odeslán na zadanou návratovou URL vždy, když dojde k události zadaného typu. Payload požadavku POST je kódovaný v JSON a obsahuje relevantní data pro danou událost. Atributy event a message budou vždy uvedeny spolu s dalšími atributy souvisejícími s událostí, jako je user, project a branch, ze kterých byl webhook spuštěn.

Hlavičky odpovědi

HTTP požadavky zaslané na návratovou URL budou obsahovat několik speciálních hlaviček.

  • X-PhraseApp-Event: Typ události, která webhook spustila.

  • X-PhraseApp-Signature: Hexadecimální digest HMAC datového obsahu s použitím secret hooku jako klíče.

Příklad:

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"
  }
}
Byl pro vás tento článek užitečný?

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.