Integrazioni

webhook (Strings)

Contenuti tradotti automaticamente dall'inglese con Phrase Language AI.

Disponibile per

  • Piani Team, Professional, Business, Enterprise e Software UI/UX

Mettiti in contatto con il reparto vendite per dubbi relativi alle licenze.

I webhook notificano eventi a servizi esterni come client di chat o altre API esterne. Un webhook può impostare un URL quando si verifica un evento specifico.

Importante

Il caricamento di file attiva solo gli eventi webhook uploads:create e uploads:processing.

Gli eventi webhook keys:creare, keys:aggiornare, translations:creare e translations:aggiornare non vengono attivati da caricamenti di file o importazioni automatizzate tramite:

È previsto un periodo di conservazione di 30 giorni per la cronologia dei webhook.

Risposta webhook

Un endpoint webhook deve restituire un codice di stato HTTP nell'intervallo 200–299 entro 5 secondi dalla ricezione di un callback. Altri codici di stato e timeout della richiesta sono considerati errori di consegna. Un webhook verrà disattivato se la consegna fallisce per più di 10 eventi consecutivi. I callback non vengono ripetuti.

Se si riceve un callback, rispondere entro il periodo di timeout della richiesta di 5 secondi. Per garantire che le applicazioni non attivino accidentalmente un timeout, rimandare l'elaborazione a dopo l'invio della risposta HTTP.

Integrità della richiesta webhook

Ogni richiesta webhook include un'intestazione X-PhraseApp-Signature che viene generata utilizzando il token di verifica webhook come segreto insieme ai dati inviati nella richiesta. Verificare l'origine della richiesta calcolando il digest HMAC del corpo della richiesta e confrontandolo con il valore nell'intestazione X-PhraseApp-Signature.

Esempi:

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

Eventi webhook

La struttura di ogni payload webhook è definita in un file di schema disponibile su https://app.phrase.com/webhook_schemas/<event_underscored_name>.json dove <event_underscored_name> corrisponde al nome dell'evento webhook con trattini bassi.

branches:create può essere accessibile tramite https://app.phrase.com/webhook_schemas/branches_create.json

Nome evento

Descrizione

branches:create

Un branch è stato creare.

branches:merge

Un branch è stato unito.

comments:create

È stato aggiunto un commentare su una chiave di traduzione.

custom_metadata_values:batch_update

Un valore di campo di metadati Personalizzato è stato aggiornato in più chiavi.

custom_metadata_values:update

Un valore di campo di metadati Personalizzato è stato aggiornato a livello di chiave.

jobs:complete

Un lavoro è stato contrassegnato come Completa.

jobs:create

Un lavoro viene creato.

jobs:locale:complete

Un impostazioni locali di un lavoro è stato contrassegnato come completato.

jobs:locale:reopened

Un impostazioni locali di un lavoro è stato riaperto.

jobs:locale:review:complete

Un impostazioni locali di un lavoro è stato revisionato e contrassegnato come Completa.

jobs:locale:review:reopen

Un impostazioni locali di un lavoro è stato revisionato e riaperto.

jobs:reopened

Un lavoro è stato riaperto.

jobs:start

Un lavoro è stato avviato.

jobs:update

Un lavoro viene aggiornato.

keys:batch_delete

Più chiavi sono state eliminate.

keys:create

Una chiave è stata creare.

keys:delete

Una chiave è stata eliminata.

keys:tags:batch_create

Sono stati aggiunti tag a più chiavi.

chiavi:tag:Crea

Sono stati aggiunti tag a una chiave.

keys:update

Una chiave è stata rinominata o modificata.

locales:create

Una nuova lingua è stata creata in un progetto.

locales:delete

Una lingua è stata eliminata.

locales:update

Una lingua è stata modificata, rinominata o riconfigurata.

project:update

Un progetto è stato modificato o riconfigurato.

releases:create

È stata creata una release OTA.

releases:delete

È stata eliminata una release OTA.

screenshots:create

È stato creato uno screenshot.

screenshots:delete

È stato eliminato uno screenshot.

screenshots:update

Uno screenshot è stato modificato o rinominato.

translations:batch_delete

Un elenco di traduzioni è stato eliminato.

translations:batch_include

Un elenco di traduzioni è stato incluso.

translations:batch_review

Un elenco di traduzioni è stato revisionato.

translations:batch_unreview

Un elenco di traduzioni non è stato revisionato.

translations:batch_unverify

Un elenco di traduzioni è stato non verificato.

translations:batch_verify

Un elenco di traduzioni è stato verificato.

translations:create

È stata aggiunta una traduzione di una chiave in una determinata lingua.

translations:deliver

Una traduzione di una chiave in una certa lingua è stata fornita da un fornitore di servizi linguistici.

translations:exclude

Una traduzione di una chiave in una certa lingua è stata Escludi.

translations:include

Una traduzione di una chiave in una certa lingua è stata inclusa.

translations:review

Una traduzione di una chiave in una certa lingua è stata revisionato.

translations:unreview

Una traduzione di una chiave in una certa lingua non è stata revisionato.

translations:unverify

Una traduzione di una chiave in una certa lingua è stata non verificato.

translations:update

Una traduzione di una chiave in una certa lingua è stata modificata.

translations:verify

Una traduzione di una chiave in una certa lingua è stata verificato.

uploads:create

Un file di impostazioni locali è stato elaborato correttamente.

uploads:processing

Un file di impostazioni locali è in fase di elaborazione.

Aggiungere un webhook

Per aggiungere un webhook, seguire questi passaggi:

  1. Dalla pagina Integrations, scorrere verso il basso fino a Webhooks e fare clic su Configure.

    Si apre la pagina Webhooks.

  2. Fare clic su Aggiungere webhook.

    Si apre la finestra Aggiungere webhook.

  3. Fornire i dettagli del webhook.

  4. Facoltativamente Include branches.

  5. Fai clic su Salvare. Il webhook specificato viene aggiunto all'elenco nella pagina Webhooks.

Un webhook può essere disattivato dal menu More di uno specifico webhook.

Testare un webhook

Per testare un webhook:

  • Dalla pagina Webhooks, Seleziona un webhook e Seleziona Send Test-notifica dal menu More.

    Viene presentato un avviso che indica che il test è riuscito.

Usare un servizio come RequestBin per acquisire i contenuti di un webhook. RequestBin fornisce un URL che raccoglie i dati della richiesta per l'ispezione.

Usare i dati del webhook

Una richiesta POST viene inviata all'URL di callback specificato ogni volta che si verifica un evento del tipo specificato. Il payload POST della richiesta è un documento codificato in JSON con i dati pertinenti per l'evento. Gli attributi event, message e sent_at saranno sempre inclusi, insieme ad attributi aggiuntivi pertinenti all'evento come utente, progetto e branch da cui è stato attivato il webhook.

Intestazioni di risposta

Le richieste HTTP effettuate all'URL di callback conterranno diverse intestazioni speciali.

  • X-PhraseApp-Event: Il tipo di evento che ha attivato il webhook.

  • X-PhraseApp-Signature: Il digest esadecimale HMAC del payload, utilizzando il segreto del webhook come chiave.

Esempio:

Content-Type: application/json
X-PhraseApp-Event: translation:create
X-PhraseApp-Signature: abc123

{
  "event": "translations:create",
  "message": "Peter translated page.help.title in fr.",
  "sent_at": "2015-01-29T09:52:53Z"   
  "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"
  }
}
Questo articolo ti è stato 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.