Integrações

Webhooks (Strings)

O conteúdo de toda a Central de Ajuda é traduzido automaticamente de inglês pelo Phrase Language AI.

Disponível a partir de

  • Planos Team, Professional, Business e Enterprise

Entre em contato com Comércio para perguntas de licenciamento.

Os webhooks notificam serviços externos, como clientes de bate-papo ou outras APIs externas de eventos. Um webhook pode definir uma URL quando um evento específico ocorre.

Importante

Uploads de arquivo acionam apenas os uploads:criar e uploads:processando eventos webhook.

chave:criar, chave:atualizar, traduções:criar e traduções:atualizar os eventos webhook não são acionados por uploads de arquivos ou importações automatizadas por meio de:

Há um período de retenção de 30 dias para o histórico de webhook.

Resposta webhook

Um endpoint webhook deve retornar um código de estado HTTP na escala de 200–299 no prazo de 5 segundos após receber uma chamada de retorno. Outros códigos de estado e tempo limite de solicitação são considerados erros de entrega. Um webhook será desativado se o envio falhar por mais de 10 eventos consecutivos. As chamadas de retorno não são repetidas.

Se receber uma chamada de retorno, responda dentro do tempo limite de 5 segundos para solicitação. Para garantir que os aplicativos não acionem acidentalmente um tempo limite, adiar o processamento até após o envio da resposta HTTP.

Integridade de solicitação webhook

Cada solicitação de webhook inclui um cabeçalho de X-PhraseApp-Signature que é gerado usando o token de verificação de webhook como um segredo, bem como os dados enviados na solicitação. Verifique a origem da solicitação calculando o sumário HMAC do corpo da solicitação e comparando-o com o valor no cabeçalho X-PhraseApp-Signature.

Exemplos:

Rubio

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

Eventos webhook

Nome do evento

Descrição

branches:create

Um ramo foi criado.

branches:merge

Um ramo foi mesclado.

comments:create

Um comentar em uma chave de tradução foi adicionado.

custom_metadata_values:batch_update

Um valor de campo de metadados personalizado foi atualizado em várias chaves.

custom_metadata_values:update

Um valor de campo de metadados personalizado foi atualizado ao nível da chave.

jobs:complete

Um trabalho foi marcado como Concluir.

jobs:create

Um trabalho é criado.

jobs:locale:complete

Um local de um trabalho foi marcado como concluído.

jobs:locale:reopened

Um local de um trabalho foi reaberto.

jobs:locale:review:complete

Um local de um trabalho foi revisado e marcado como Concluir.

jobs:locale:review:reopen

Um local de um trabalho foi revisado e reaberto.

jobs:reopened

Um trabalho foi reaberto.

jobs:start

Um trabalho foi iniciado.

jobs:update

Um trabalho é atualizado.

keys:batch_delete

Várias chaves foram excluídas.

keys:create

Uma chave foi criada.

keys:delete

Uma chave foi excluída.

keys:update

Uma chave foi renomeada ou alterada.

locales:create

Uma nova versão do idioma foi criada em um projeto.

locales:delete

Uma versão de idioma foi excluída.

locales:update

Uma versão de idioma foi alterada, renomeada ou reconfigurada.

project:update

Um projeto foi alterado ou reconfigurado.

releases:create

Um lançamento OTA foi criado.

releases:delete

Um lançamento OTA foi excluído.

screenshots:create

Uma captura de tela foi criada.

screenshots:delete

Uma captura de tela foi excluída.

screenshots:update

Uma captura de tela foi alterada ou renomeada.

translations:batch_delete

Uma lista de traduções foi excluída.

translations:batch_review

Uma lista de traduções foi revisada.

translations:batch_unreview

Uma lista de traduções não foi revisada.

translations:batch_unverify

Uma lista de traduções foi não verificada.

translations:batch_verify

Uma lista de traduções foi verificada.

translations:create

Foi adicionada uma tradução de uma chave em uma versão de idioma específica.

translations:deliver

Uma tradução de uma chave em uma versão de idioma específica foi fornecida por um responsável de serviços de idioma.

translations:review

Foi revisada uma tradução de uma chave em uma versão de idioma específica.

translations:unreview

Uma tradução de uma chave em uma versão de idioma específica não foi revisada.

translations:unverify

Uma tradução de uma chave em uma versão de idioma específica foi não verificada.

translations:update

Foi editada uma tradução de uma chave em uma versão de idioma específica.

translations:verify

Foi verificada uma tradução de uma chave em uma versão de idioma específica.

uploads:create

Um arquivo local foi processado.

uploads:processing

Um arquivo local está sendo processado.

Adicionar um webhook

Para adicionar um webhook, siga estes passos:

  1. Na página de Integrações role para baixo até Webhooks e clique em configurar.

    A página Webhooks é aberta.

  2. Clique em Adicionar webhook.

    A janela Adicionar webhook é aberta.

  3. Forneça detalhes do webhook.

  4. Opcionalmente, incluir ramos.

  5. Clique em Gravar. O webhook especificado está adicionado à lista na página Webhooks.

Um webhook pode ser desativado no menu Mais de um webhook específico.

Testar um webhook

Para testar um webhook:

  • Na página Webhooks, selecione um webhook e selecione enviar notificação de teste do menu Mais.

    Um aviso é apresentado indicando que o teste foi bem-sucedido.

Use um serviço como RequestBin para capturar o conteúdo de um webhook. O RequestBin fornece um URL que coleta dados de solicitação para inspecção.

Usar dados do Webhook

Uma solicitação POST é enviada ao URL de retorno especificado sempre que ocorre um evento do tipo especificado. A carga útil POST da solicitação é um documento codificado JSON com dados relevantes para o evento. Os atributos evento e mensaxe sempre serão incluídos, juntamente com atributos adicionais relevantes para o evento, como o usuário, projeto e ramo do webhook foi acionado.

Cabeçalhos de repetição

As solicitações HTTP feitas para o URL de retorno contêm vários cabeçalhos especiais.

  • X-PhraseApp-Event: O tipo de evento que acionou o webhook.

  • X-PhraseApp-Signature: O hexagrupo HMAC da carga útil, usando o segredo do gancho como a chave.

Exemplo:

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",
    "nome": "Joe Doe",
    "email": "joe@phrase.com",
    "position": "Desenvolvedor Líder",
    "created_at": "2015-01-28T09:52:53Z",
    "updated_at": "2015-01-28T09:52:53Z"
  },
  "project": {
    "id": "abcd1234cdef1234abcd1234cdef1234",
    "nome": "Meu projeto Android",
    "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": "Minha tradução",
    "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"
  }
}
Esse artigo foi útil?

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.