Ir para o conteúdo

Enviar uma notificação do Slack de uma operação do Studio no Jitterbit Studio

Introdução

Esse padrão de design de integração envia uma mensagem formatada para um canal do Slack a partir de uma operação do Studio. A operação usa o conector HTTP v2 para fazer POST de um payload JSON para uma URL de webhook recebido do Slack. Esse padrão é comumente usado para notificar um time quando um evento significativo ocorre, como o recebimento de um novo pedido, a criação de um registro ou a conclusão de uma operação com erros.

Este guia pressupõe familiaridade com a configuração de conexões e atividades HTTP v2. Para uma introdução geral, consulte Chamar uma API REST usando o conector HTTP v2.

Padrão de design

Um webhook recebido do Slack é uma URL única gerada pelo Slack que aceita uma solicitação HTTP POST contendo uma mensagem JSON. Nenhuma autenticação adicional é necessária além da própria URL do webhook.

A operação do Studio segue o padrão de transformação:

%%{init: {"themeVariables": {"lineColor": "#6b7280", "edgeLabelBackground": "#f5f5f5"}}}%% flowchart LR A[Source activity] --> B[Transformation] --> C[HTTP v2 POST activity]

A atividade de origem fornece os dados usados para construir a mensagem (por exemplo, um resultado de consulta de banco de dados, um registro do Salesforce ou uma saída de script). A transformação constrói o payload da mensagem do Slack. A atividade HTTP v2 POST envia o payload para a URL de webhook recebido do Slack.

Limitações de webhook e casos de uso avançados

Os webhooks recebidos do Slack são apenas para envio e enviam para o único canal para o qual o webhook foi criado. Eles não conseguem direcionar um canal ou usuário diferente em tempo de execução, atualizar ou encadear mensagens, fazer upload de arquivos ou ler e pesquisar mensagens, e o Slack os limita a aproximadamente uma mensagem por segundo. Para esses casos de uso avançados, use o conector Slack nativo. Ele faz autenticação com um token de app do Slack e fornece atividades para enviar para qualquer canal ou usuário (Send Message), pesquisar e recuperar mensagens (Search e Get), fazer upload de arquivos (Files) e procurar usuários e conversas (Users e Conversations).

Parte 1: Criar um webhook recebido do Slack

  1. No seu workspace do Slack, acesse Apps e pesquise por Incoming WebHooks, ou crie um app do Slack em api.slack.com/apps e adicione o recurso Incoming Webhooks.

  2. Ative os webhooks recebidos e clique em Add New Webhook to Workspace.

  3. Selecione o canal para o qual enviar e clique em Allow.

  4. Copie a URL do webhook. Ela tem o formato https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX.

    Tip

    Armazene a URL do webhook como uma variável de projeto com seu valor oculto. Isso mantém a URL fora da configuração de conexão e atividade diretamente e facilita a alteração sem editar o projeto.

Parte 2: Configurar a conexão HTTP v2

  1. No Studio, abra seu projeto e clique na guia Project endpoints and connectors (Endpoints e conectores do projeto) na paleta de componentes de design.

  2. Clique no conector HTTP v2 para abrir a configuração de conexão.

  3. Connection Name: Digite um nome como Slack.

  4. Base URL: Digite https://hooks.slack.com. As atividades POST individuais acrescentarão o caminho do webhook.

  5. Authorization: Selecione No Auth. A autenticação para webhooks recebidos do Slack é feita pela URL única do webhook, não por um cabeçalho de autorização.

  6. Clique em Test e depois em Save Changes.

Parte 3: Configurar a atividade POST

  1. Na paleta de componentes de design, expanda o endpoint HTTP v2 do Slack e arraste o tipo de atividade POST para a tela de design.

  2. Clique duas vezes na atividade para abrir sua configuração.

Etapa 1: Digite um nome e especifique as configurações

  1. Nome: Digite um nome como Post Slack Message.

  2. Caminho: Digite a parte do caminho de sua URL do webhook (tudo após hooks.slack.com), por exemplo /services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX.

    Se você armazenou a URL do webhook como uma variável de projeto, digite a URL completa aqui (por exemplo, [slack_webhook_url]). Uma URL completa substitui a URL Base da conexão.

  3. Cabeçalhos da Solicitação: Clique no ícone de adição e adicione o cabeçalho Content-Type com o valor application/json.

  4. Clique em Próximo.

Etapa 2: Forneça o esquema da solicitação

  1. Selecione Sim, Fornecer Novo Esquema.

  2. Digite o seguinte esquema JSON, que define os campos de uma carga de mensagem do Slack:

    {
      "type": "object",
      "properties": {
        "text": {
          "type": "string"
        }
      }
    }
    

    Para mensagens mais ricas com seções, botões ou blocos formatados, substitua este esquema por uma estrutura Slack Block Kit. O campo text serve como fallback para notificações e acessibilidade.

  3. Clique em Próximo.

Etapa 3: Forneça o esquema de resposta

O webhook de entrada do Slack retorna uma resposta em texto simples (ok em caso de sucesso). Nenhum esquema de resposta personalizado é necessário. Clique em Próximo e depois clique em Concluído.

Parte 4: Mapeie a mensagem em uma transformação

Na transformação que precede a atividade de POST, mapeie o campo text do esquema de solicitação para um script que constrói a sequência de mensagem.

Por exemplo, para enviar uma mensagem sobre um novo pedido, o script de transformação do campo text pode ser:

<trans>
"New order #" + $order_id + " received from " + $customer_name + " for $" + $order_total
</trans>

Onde order_id, customer_name e order_total são variáveis globais preenchidas por um script anterior ou mapeadas da atividade de origem.

Dica

Para incluir uma quebra de linha no texto da mensagem, use "\n" na sequência do script. O Slack renderiza quebras de linha em mensagens do canal.

Verifique a integração

Implante e execute a operação para testar a notificação. Verifique os logs da operação para confirmar que a atividade de POST retornou um status HTTP 200. Se os logs da operação mostrarem um status diferente de 200, verifique o caminho da URL do webhook e confirme se o aplicativo Slack ainda está instalado no workspace.