Building a Searchbot using Slack, Zapier, and Elastic App Search | Elastic Blog
Engineering

Criando um Searchbot usando o Slack, o Zapier e o Elastic App Search

Não seria uma mão na roda criar seu próprio Searchbot que você pode consultar a partir do Slack? Imagine buscar milhares e milhares de registros de clientes, artigos, logs de servidor ou tíquetes de helpdesk de um canal do Slack. Vamos criar esse Searchbot conveniente unindo o Elastic App Search e o Slack usando o Zapier.

Não precisa escrever código!

Searchbot: montagem

Requisitos:

  • Uma conta do Elastic App Search ou uma avaliação gratuita por 14 dias. O Elastic App Search é uma caixa de ferramentas para criar experiências de busca internacionais. Você pode fazer um ajuste fino da relevância usando Weights and Boosts, Curations e Synonyms e capturar profunda análise de busca. E sabe qual é a melhor parte? Ele é criado com base no Elastic Stack.
  • Documentos do Elastic App Search. Cada nova conta é fornecida com uma amostra de mecanismo de busca com os dados do United States National Park (Parque Nacional dos Estados Unidos). Você pode usar esses dados ou indexar seus próprios documentos e adaptar o tutorial.
  • Uma conta ou uma avaliação de teste do Zapier. O Zapier é um serviço de automatização. Com ele, é possível criar o Zaps. Um Zap é um pipeline de automatização. Cada etapa em uma rede de automatização pode executar e transformar dados.
  • Cerca de 30 minutos.

Ao final, digitar “search for query” em um canal designado do Slack enviará query ao Elastic App Search como chamada à API:

Mensagem do Slack que informa sobre busca por montanhas e resultados contendo montanhas

Pegue o Slack

Faça login no Zapier e clique em Make a Zap! (Faça um Zap!)

Primeiro, precisamos criar um Trigger.

O trigger conectará o Zapier a um espaço de traballho do Slack

Busque Slack e selecione-o.

Você pode optar por um conjunto de triggers do Slack.

Gostaríamos de: “New Message Posted Anywhere” (Nova mensagem postada em qualquer lugar)

Selecionando mensagem do Zapier Slack App

Clique em Continue (Continuar). O Zapier pedirá para se autenticar com o Slack.

Depois da autenticação, associe a instância de conta ao Zap.

Informe “no” (não) como resposta a filtros de bot — não precisamos disso.

O que será necessário é uma pequena amostra de dados do Slack. Em um canal de teste no espaço de trabalho do Slack associado, digite “search for old growth”. A mensagem será disponibilizada ao Zapier durante a fase Test This Step (Teste esta etapa).

Mensagem importada do Slack

Selecione a mensagem e clique em Continue (Continuar).

Esse é o primeiro link em nossa rede de automatização — beleza!

Filtragem tranquila

A próxima etapa é configurar o excelente filtro do Zap.

No cabeçalho ADD A HELPER STEP (Adicione uma etapa de ajuda), clique em Filter (Filtrar).

Prossiga com a única opção: Only continue if… (Continue somente se...)

E preencha assim:

Criando um filtro do Zap: Text (Contains) "search for"

[Text] [Contains] "search for"

Isso ativará o Zap quando alguém digitar search for (buscar) no Slack.

E… ação!

Agora precisamos criar quatro ações para que aquilo que suceder a “search for” (buscar) seja adicionado como consulta — e que retornemos resultados bem formatados pelo App Search.

A primeira ação é eliminar o texto “search for” (buscar) da consulta que passaremos ao App Search.

Clique em Add a step (Adicionar uma etapa e selecione Action/Search (Ação/buscas).

Selecione Formatter (Formatador). É a primeira opção em BUILT-IN APPS (Aplicativos internos).

A partir daí selecione Text (Texto).

Um menu suspenso Transform (Transformar) será exibido. Clique nele, digite Replace (Substituir) e selecione-o.

Os dois campos inferiores são Find (Localizar) e Replace (Substituir).

Em Find, digite “search for” (buscar).

Deixe Replace em branco e clique em Continue (Continuar).

O formatador do Zapier

Conclua a etapa e clique em Add a Step (Adicionar uma etapa) novamente.

Webhooks

A segunda ação é a nossa chamada à API. É nesse local onde criaremos a consulta que enviamos ao App Search. Aquilo que suceder a “search for …” (buscar) será o parâmetro de consulta.

Vamos gerar a chamada à API usando Webhooks.

No menu suspenso Choose an Action App (Escolher um aplicativo de ação), digite Webhooks by Zapier e selecione-o.

No cabeçalho CREATE (Criar), selecione POST (Postar) e clique em Continue (Continuar).

Quatro campos são necessários para criar a chamada à API:

1. URL

A URL do endpoint da API é fornecida no painel do App Search. ela deve conter seu próprio Identificador de Host, como: https://host-2376rb.api.swiftype.com/api/as/v1/engines/sample-engine/search. Fique à vontade para usar a URL acima para criar seu exemplo - ela é pública.

Painel de credenciais do App Search

2. Payload Type (Tipo de carga)

O padrão é definido como Form (Formulário). Selecione Json.

3. Data (Dados)

Na primeira caixa, digite “query” (consulta) — esse é o parâmetro que incluiremos no POST. Clique no ícone ao lado da barra de entrada de valor. A partir daí, selecione os dados de teste de “search for old growth” da etapa 1:

Usando a amostra de mensagem do Slack da etapa 1

Selecione o campo Text (Texto) que contém a sequência de caracteres do exemplo de mensagem do Slack.

4. Headers (Cabeçalhos)

Na parte inferior do formulário, haverá uma seção Headers (Cabeçalhos). Na primeira caixa, digite “Authorization” (Autorização). Na caixa ao lado, digite a palavra “Bearer” seguida de sua Chave de busca pública, encontrada no menu Credenciais do painel do App Search:

Adicionando a Chave de busca pública como cabeçalho de Authorization (Autorização)

Você pode usar esta chave de demonstração pública: search-7eud55t7ecdmqzcanjsc9cqu se não tiver a sua própria.

Clique em Continue (Continuar) e execute um teste. Você deve ver um exemplo de resposta contendo dados do estacionamento do App Search Engine!

Perfeito. Assim podemos fazer uma solicitação de API. Mas agora precisamos formatar a resposta.

Automágico

Clique em Add a Step (Adicionar uma etapa).

Escolha Action/Search (Ação/busca) e procure e selecione Formatter (Formatador).

No cabeçalho CREATE (Criar), selecione a opção Utilities (Utilidades) e clique em Continue (Continuar).

Na seção Transform (Transformar), digite Line Itemizer (Itemizador de linha).

Queremos criar dois itens no cabeçalho Line-item(s) (Itens de linha) com base na saída da chamada à API na etapa 4…

  1. Title (Título): “Results Title Raw” (Título de resultados — brutos)
  2. Link: “Results NPS Link Raw” (Link NPS de resultados — brutos)

Só queremos que os nossos resultados exibam o nome de um parque nacional dos EUA e um link que contém mais informações:

Criando dois itens de linha fora da chamada à API

Teste e conclua a etapa. Depois, vamos prosseguir com a nossa terceira ação…

Etapa, formato, etapa

Clique em Add a Step (Adicionar uma etapa)...

Selecione Formatter (Formatador), Utilities (Utilitários), como antes…

Mas desta vez procure Line-Item to Text (Item de linha no texto).

Há uma caixa com o título Values (Valores), com um cabeçalho Input (Entrada) dentro dela. Clique na barra e selecione a Etapa 5, Utilities (Utilitários) e inclua ambos os itens de linha que foram criados.

Observe que a estrutura na caixa de entrada refletirá a formatação da mensagem do Slack. Queremos ter o título, um espaço, seguido de uma URL entre parênteses:

[TITLE] ([LINK])

E queremos que os resultados apareçam em uma linha separada. Para isso, na caixa abaixo do cabeçalho Separator (Cabeçalho), adicione o caractere especial: [:newline:]:

[TITLE] ([LINK])
[TITLE] ([LINK])
[TITLE] ([LINK])
[TITLE] ([LINK]) 

No Zap, a aparência é semelhante a esta:

Formatando as novas linhas adequadamente, o que muda a maneira como as respostas de API aparecem.

E agora a etapa final! Enviando os resultados de busca formatados para o Slack com chat específico.

Transmissão final

… Clique em Add a Step (Adicionar uma etapa), digite Action/Search (Ação/busca)…

Selecione Slack.

Em Create (Criar): escolha Send Channel Message (Enviar mensagem do canal) e save + continue (Salvar + Continuar).

Selecione a sua conta do Slack e clique em Continue (Continuar)…

Escolha o canal no qual o Zap funcionará: #random é uma ótima ideia, para fins de teste.

No cabeçalho Message Text (Texto da mensagem), clique na caixa e selecione a saída da etapa 6:

Selecionando o canal do Slack no qual será feita a postagem, e o conteúdo da mensagem que é a saída de toda a rede de filtro

Para dar um toque a mais, você pode atribuir ao bot o nome Searchbot e um avatar bem bonito.

name: imagem do Slackbot: APP SEARCH!

Copie o link da imagem do Elastic App Search a partir desta página de blog clicando com o botão direito da imagem a seguir, se quiser:

O logotipo estiloso do Elastic App Search

PODE APARECER, SEARCHBOT!

Depois que tudo estiver configurado, habilite o Zap:

HABILITE O ZAP!

Vá até o Slack — digite: “search for something” e experimente algumas consultas.

Imagem GIF que mostra o Slack respondendo a consultas

Parabéns! Agora você tem um Searchbot inteligente no Slack.

Resumo

Um bot Searchbot pode ser útil. Talvez você queira buscar uma base de conhecimento interna ou procurar um erro em um grande pool de logs de servidor. Qualquer que seja o caso, crie um Searchbot com base no Elastic App Search e conecte-o ao Slack com menos estresse.

Você pode começar com o App Search hoje mesmo com uma avaliação gratuita por 14 dias da nossa versão hospedada ou fazer download do beta da versão autogerenciada. Cada nova avaliação oferece uma amostra do conjunto de dados, por isso você pode experimentar antes de trazer seus próprios dados.