Integrações

Webhooks (Strings)

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

Disponível para

  • Equipe, Profissional, Negócio, Empresa e Planos de UI/UX de Software

Entre em contato com o departamento de Vendas para perguntas sobre o licenciamento.

Webhooks notificam serviços externos, como clientes de chat ou outras APIs externas sobre eventos. Um webhook pode definir uma URL quando um evento específico ocorre.

Importante

Uploads de arquivos apenas acionam os eventos de webhook uploads:create e uploads:processing.

Os eventos de webhook keys:create, keys:update, translations:create e translations:update não são acionados por uploads de arquivos ou importações automatizadas via:

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

Resposta do webhook

Um endpoint de webhook deve retornar um código de status HTTP na faixa de 200–299 dentro de 5 segundos após receber um callback. Outros códigos de status e timeouts de requisição são considerados falhas de entrega. Um webhook será desativado se a entrega falhar por mais de 10 eventos consecutivos. Callbacks não são repetidos.

Se receber um callback, responda dentro do período de timeout de requisição de 5 segundos. Para garantir que as aplicações não acionem acidentalmente um timeout, adie o processamento até que a resposta HTTP tenha sido enviada.

Integridade da requisição do webhook

Cada requisição de webhook inclui um cabeçalho X-PhraseApp-Signature que é gerado usando o token de verificação do webhook como um segredo junto com os dados enviados na requisição. Verifique a origem da requisição computando o digest HMAC do corpo da requisição e comparando-o ao valor no cabeçalho X-PhraseApp-Signature.

Exemplos:

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

Eventos de Webhook

A estrutura de cada payload de webhook é definida em um arquivo de esquema disponível em https://app.phrase.com/webhook_schemas/<event_underscored_name>.json onde <event_underscored_name> corresponde ao nome do evento de webhook com sublinhados.

branches:create pode ser acessado via https://app.phrase.com/webhook_schemas/branches_create.json

Nome do evento

Descrição

branches:create

Um ramo foi criado.

branches:merge

Um ramo foi mesclado.

comments:create

Um comentário 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 no nível da chave.

jobs:complete

Um trabalho foi marcado como completo.

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

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

chaves:tags:lote_criar

Tags foram adicionadas a várias chaves.

chaves:tags:criar

Tags foram adicionadas a uma chave.

keys:update

Uma chave foi renomeada ou alterada.

locales:create

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

locales:delete

Uma versão de idioma foi deletada.

locales:update

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

project:update

Um projeto foi alterado ou reconfigurado.

releases:create

Uma versão OTA foi criada.

releases:delete

Uma versão OTA foi deletada.

screenshots:create

Uma captura de tela foi criada.

screenshots:delete

Uma captura de tela foi deletada.

screenshots:update

Uma captura de tela foi alterada ou renomeada.

translations:batch_delete

Uma lista de traduções foi deletada.

translations:batch_include

Uma lista de traduções foi incluí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 não foi verificada.

translations:batch_verify

Uma lista de traduções foi verificada.

translations:create

Uma tradução de uma chave em uma certa versão de idioma foi adicionada.

translations:deliver

Uma tradução de uma chave em uma certa versão de idioma foi entregue por um provedor de serviços de idioma.

traduções:excluir

Uma tradução de uma chave em uma certa versão de idioma foi excluída.

traduções:incluir

Uma tradução de uma chave em uma certa versão de idioma foi incluída.

translations:review

Uma tradução de uma chave em uma certa versão de idioma foi revisada.

translations:unreview

Uma tradução de uma chave em uma certa versão de idioma não foi revisada.

translations:unverify

Uma tradução de uma chave em uma certa versão de idioma não foi verificada.

translations:update

Uma tradução de uma chave em uma certa versão de idioma foi editada.

translations:verify

Uma tradução de uma chave em uma certa versão de idioma foi verificada.

uploads:create

Um arquivo de localidade foi processado com sucesso.

uploads:processing

Um arquivo de localidade está sendo processado.

Adicionar um Webhook

Para adicionar um webhook, siga estas etapas:

  1. Na página 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 os detalhes do webhook.

  4. Opcionalmente Inclua ramos.

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

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

Teste um Webhook

Para testar um webhook:

  • Na página Webhooks, selecione um webhook e selecione Enviar Notificação de Teste no menu Mais.

    Uma notificação é apresentada indicando que o teste foi bem-sucedido.

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

Usando Dados do Webhook

Uma solicitação POST é enviada para a URL de callback especificada cada vez que um evento do tipo especificado ocorre. O payload POST da solicitação é um documento codificado em JSON com dados relevantes para o evento. Os atributos evento, mensagem e enviado_em sempre serão incluídos, junto com atributos adicionais relevantes para o evento, como o usuário, projeto e ramo de onde o webhook foi acionado.

Cabeçalhos de resposta

As solicitações HTTP feitas para a URL de callback conterão vários cabeçalhos especiais.

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

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

Exemplo:

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

{
  "event": "translations:create",
  "message": "Peter traduziu page.help.title em fr.",
  "sent_at": "2015-01-29T09:52:53Z"   
  "user": {
    "id": "abcd1234cdef1234abcd1234cdef1234",
    "username": "joe.doe",
    "name": "Joe Doe",
    "email": "joe@phrase.com",
    "posição": "Desenvolvedor Líder",
    "created_at": "2015-01-28T09:52:53Z",
    "updated_at": "2015-01-28T09:52:53Z"
  },
  "project": {
    "id": "abcd1234cdef1234abcd1234cdef1234",
    "name": "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.