Ir para o conteúdo

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

Introdução

Este padrão de design de integração envia uma mensagem formatada para um canal do Slack a partir de uma operação no Studio. A operação utiliza o conector HTTP v2 para POSTar um payload JSON em uma URL de webhook de entrada do Slack. Este padrão é comumente usado para notificar uma equipe 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 assume 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 de entrada 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:

flowchart LR A[Atividade de origem] --> B[Transformação] --> C[Atividade HTTP v2 POST]

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

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

Webhooks de entrada do Slack são apenas para postagem e enviam para o único canal para o qual o webhook foi criado. Eles não podem direcionar a 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 limita a taxa para aproximadamente uma mensagem por segundo. Para esses casos de uso avançados, utilize o conector nativo do Slack em vez disso. Ele se autentica com um token de aplicativo do Slack e fornece atividades para postar em qualquer canal ou usuário (Enviar Mensagem), pesquisar e recuperar mensagens (Pesquisar e Obter), fazer upload de arquivos (Arquivos) e procurar usuários e conversas (Usuários e Conversas).

Parte 1: Criar um webhook de entrada do Slack

  1. No seu espaço de trabalho do Slack, vá para Apps e procure por Incoming WebHooks, ou crie um aplicativo Slack em api.slack.com/apps e adicione o recurso Incoming Webhooks.

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

  3. Selecione o canal para postar 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 aba Project endpoints and connectors no painel de componentes de design.

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

  3. Nome da Conexão: Insira um nome como Slack.

  4. URL Base: Insira https://hooks.slack.com. Atividades POST individuais irão anexar o caminho do webhook.

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

  6. Clique em Test, depois clique em Save Changes.

Parte 3: Configurar a atividade POST

  1. No painel 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.

Passo 1: Insira um nome e especifique as configurações

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

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

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

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

  2. Clique em Próximo.

Etapa 2: Fornecer o esquema da solicitação

  1. Selecione Sim, Fornecer Novo Esquema.

  2. Insira o seguinte esquema JSON, que define os campos de uma carga útil 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 do Slack Block Kit. O campo text serve como uma alternativa para notificações e acessibilidade.

  3. Clique em Próximo.

Etapa 3: Fornecer 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, depois clique em Finalizado.

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

Na transformação que precede a atividade POST, mapeie o campo text do esquema da solicitação para um script que construa a string da mensagem.

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

<trans>
"Novo pedido #" + $order_id + " recebido de " + $customer_name + " no valor de $" + $order_total
</trans>

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

Dica

Para incluir uma nova linha no texto da mensagem, use "\n" na string do script. O Slack renderiza quebras de linha nas mensagens do canal.

Verificar 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 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 espaço de trabalho.