Integrações

Webhooks (Cordas)

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

Disponível para

  • Planos Team, Professional, Business e Enterprise

Entre em contato com o departamento de vendas para dúvidas sobre licenciamento.

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.

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

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

Resposta Webhook

Um ponto de extremidade webhook deve retornar um código de status HTTP no intervalo de 200 a 299 dentro de 5 segundos após o recebimento de um retorno de chamada. Outros códigos de status e tempos limite de solicitação são considerados falhas de entrega. Um webhook será desativado se a entrega falhar por mais de 10 eventos consecutivos. Os retornos de chamada não se repetem.

Se receber um retorno de chamada, responda dentro do período de tempo limite da solicitação de 5 segundos. Para garantir que os aplicativos não acionem acidentalmente um tempo limite, adie o processamento até depois que a resposta HTTP for enviada.

Integridade da solicitação Webhook

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

Exemplos:

Rubi

def verify_webhook(cabeçalho de assinatura)
  digest = OpenSSL::Digest::Digest.new('sha256')
  hmac = OpenSSL::HMAC.digest(digest, VERIFICATION_TOKEN, request.body)
  hmac = Base64.encode64(hmac).strip
  hmac == SignatureHeader
fim

PHP

função 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

localidades:criar

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

localidades:atualização

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

localidades:excluir

Uma versão de idioma foi excluída.

uploads:criar

Um arquivo de localidade foi carregado.

uploads:processamento

Um arquivo de localidade foi processado.

chaves:criar

Uma chave foi criada.

chaves:atualização

Uma chave foi renomeada ou alterada.

chaves:excluir

Uma chave foi excluída.

keys:batch_delete

Várias chaves foram excluídas.

traduções:criar

Foi adicionada uma tradução de uma chave em uma versão em determinado idioma.

traduções:atualização

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

traduções:entregar

Uma tradução de uma chave numa determinada versão linguística foi fornecida por um prestador de serviços linguísticos.

traduções:revisão

A tradução de uma chave em uma versão em determinado idioma foi revisada.

traduções:não revisão

A tradução de uma chave em uma versão em determinado idioma não foi revisada.

comentários:criar

Um comentário sobre uma chave de tradução foi adicionado.

empregos:criar

Cria-se um emprego.

trabalhos:completo

Um trabalho foi marcado como concluído.

trabalhos:início

Um trabalho foi iniciado.

vagas:reabertas

Uma vaga foi reaberta.

trabalhos:atualização

Um trabalho é atualizado.

trabalhos:localidade:completo

Uma localidade de um trabalho foi marcada como concluída.

trabalhos:localidade:reaberto

Um local de trabalho foi reaberto.

trabalhos:localidade:revisão:concluído

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

trabalhos:localidade:revisão:reabrir

Um local de trabalho foi revisado e reaberto.

capturas de tela:criar

Uma captura de tela foi criada.

capturas de tela:atualizar

Uma captura de tela foi alterada ou renomeada.

capturas de tela:excluir

Uma captura de tela foi excluída.

ramificações:criar

Uma ramificação foi criada.

ramificações:mesclagem

Uma ramificação foi fundida.

versões:criar

Uma versão OTA foi criada.

versões:excluir

Uma versão OTA foi excluída.

traduções:batch_review

Uma lista de traduções foi revisada.

translations:batch_unreview

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

Adicionar um Webhook

Para adicionar um webhook, execute 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 detalhes do webhook.

  4. Opcionalmente, Incluir ramificações.

  5. Clique em Salvar. O webhook especificado é 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 no 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. RequestBin fornece uma URL que coleta dados de solicitação para inspeção.

Usando dados Webhook

Uma solicitação POST é enviada para a URL de retorno de chamada especificada sempre que ocorre um evento do tipo especificado. A carga POST da solicitação é um documento codificado em JSON com dados relevantes para o evento. O evento de atributos e a mensagem sempre serão incluídos, juntamente com atributos adicionais relevantes para o evento, como o usuário, o projeto e a ramificação a partir dos quais o webhook foi acionado.

Cabeçalhos de resposta

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

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

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

Exemplo:

Tipo de conteúdo: application/json
X-PhraseApp-Event: tradução:criar
X-PhraseApp-Assinatura: abc123

{
  "event": "translations:create",
  "message": "Pedro traduziu page.help.title em fr.",
  "user": {
    "id": "abcd1234cdef1234abcd1234cdef1234",
    "username": "joe.doe",
    "name": "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",
    "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.