Ingeniería

Creación de un bot de búsqueda con Slack, Zapier y Elastic App Search

Sería muy útil poder crear tu propio bot de búsqueda y enviarle consultas desde Slack, ¿no? Imagínate cómo sería buscar a través de miles y miles de registros de clientes, artículos, registros de servidor o tickets de Helpdesk, todo desde un canal de Slack. Para crear un bot de búsqueda tan útil, entrelazaremos Elastic App Search y Slack mediante Zapier.

¡Sin codificación!

Bot de búsqueda: Ensamblado

Necesitaremos:

  • Una cuenta de Elastic App Search o [una prueba gratuita de 14 días] (https://www.elastic.co/es/cloud/app-search-service). Elastic App Search es una caja de herramientas que permite crear experiencias de búsqueda de clase mundial. Puedes ajustar la relevancia usando [Pesos y Refuerzos] (https://swiftype.com/documentation/app-search/guides/relevance-tuning), [Curaciones] (https://swiftype.com/documentation/app-search/guides/curations) y [Sinónimos] (https://swiftype.com/documentation/app-search/guides/synonyms), y capturar analíticas de búsqueda profundas. ¿Lo mejor de todo? Está basado en el Elastic Stack.
  • Documentos de Elastic App Search. Cada nueva cuenta viene con un campo de motor de búsqueda de muestra con datos de un Parque Nacional de los Estados Unidos. Puedes usar esos datos o [indexar tus propios documentos] (https://swiftype.com/documentation/app-search/guides/indexing-documents) y adaptar el tutorial.
  • Una cuenta o una versión de prueba de Zapier. Zapier es un servicio de automatización. A través de él, puedes crear Zaps. Un Zap es un pipeline de automatización. Cada paso en una cadena de automatización puede transformar datos y realizar acciones a través de ellos.
  • Unos 30 minutos.

Al finalizar, si escribes "search for query" dentro de un canal de Slack designado, se enviará la query a Elastic App Search como una llamada de API:

Un mensaje en Slack que dice buscar montañas y resultados que contienen montañas

Toma el relevo con Slack

Inicia sesión en Zapier y haz clic en Make a Zap!

En primer lugar, tenemos que crear un desencadenante.

El desencadenante conectará Zapier con un espacio de trabajo en Slack.

Busca Slack y luego selecciónalo.

Puedes elegir entre varios desencadenantes de Slack.

Vamos a elegir: "New Message Posted Anywhere".

Selección de un mensaje de la app de Zapier en Slack

Haz clic en Continue. Zapier te pedirá autenticarte con Slack.

Una vez que te hayas autenticado, asocia la instancia de la cuenta con el Zap.

Indica que no hay que responder a los filtros de bot, no lo necesitaremos.

Lo que necesitaremos es una pequeña muestra de datos de Slack. Dentro de un canal de prueba en el espacio de trabajo asociado de Slack, escribe "search for old growth". El mensaje se pondrá a disposición de Zapier durante la fase Test This Step.

Un mensaje importado de Slack

Selecciona el mensaje y haz clic en Continue.

Este es el primer eslabón en nuestra cadena de automatización ¡Excelente!

Filtración suave

El siguiente paso es configurar el único [filtro de Zap] (https://zapier.com/help/filter/).

Debajo del encabezado ADD A HELPER STEP, haz clic en Filter.

Continúa con la opción: Only continue if….

Y luego complétala así:

Creación de un filtro de Zap: El texto (contiene) "search for"

[Text] [Contains] "search for"

Esto activará el Zap cuando alguien escriba search for dentro de Slack.

Y… ¡acción!

Ahora necesitamos crear cuatro acciones para que cada elemento que siga al comando "search for" se añada como una consulta, de manera que obtengamos resultados bien formateados de App Search.

La primera acción es eliminar el texto "search for" de la consulta de búsqueda que le pasaremos a App Search.

Haz clic en Add a step y luego selecciona Action/Search.

Selecciona Formatter. Es la primera opción debajo de BUILT-IN APPS.

A continuación, selecciona Text.

Aparecerá un menú desplegable Transform. Haz clic y escribe Replace y selecciónalo.

Los últimos dos campos son Find y Replace.

Dentro de Find, escribe "search for".

Deja Replace en blanco y haz clic en Continue.

La opción "Dar formato" de Zapier

Completa este paso y vuelve a hacer clic en Add a Step.

Capitán Webhook

La segunda acción es nuestra llamada de API. Aquí es donde crearemos la consulta que le enviaremos a App Search. Cualquier elemento que siga a la frase "search for…" es el parámetro de consulta.

Generaremos la llamada de API mediante Webhooks.

Dentro del menú desplegable Choose an Action App escribe Webhooks by Zapier y selecciónalo.

Debajo del encabezado CREATE, selecciona POST y haz clic en Continue.

Se requieren cuatro campos para crear la llamada de API:

1. URL

La URL del punto de conexión de la API se proporciona dentro del dashboard de App Search. Debe contener tu propio identificador de host, como: https://host-2376rb.api.swiftype.com/api/as/v1/engines/sample-engine/search. Si quieres, puedes usar la URL anterior para crear tu ejemplo, ya que es pública.

El dashboard de credenciales de App Search

2. Tipo de carga

Predeterminado como formulario. Selecciona Json.

3. Datos

Dentro de la primera casilla, ingresa "query"; este es el parámetro que incluiremos dentro del POST. Haz clic en el ícono que se encuentra junto a la barra de entrada de valor. Desde allí, selecciona los datos de prueba de "search for old growth" del paso 1:

Uso de los datos de muestra del mensaje de Slack del paso 1

Selecciona el campo Text que contiene la cadena del mensaje de Slack de ejemplo.

4. Encabezados

Al final del formulario, hay una sección Headers. En la primera casilla, escribe "Authorization". En la casilla que está al lado, ingresa la palabra "Bearer" seguida de tu clave de búsqueda pública, que se encuentra dentro del menú Credentials del dashboard de App Search:

Adición de la clave de búsqueda pública como encabezado de autorización

Si no tienes tu propia clave, puedes usar esta clave pública de prueba: search-7eud55t7ecdmqzcanjsc9cqu.

Haz clic en Continue y luego ejecuta una prueba. Deberías ver un ejemplo de respuesta que contiene datos del parque proporcionados por el motor de búsqueda de App Search.

Genial, ahora podemos hacer una solicitud de API. Ahora necesitamos darle formato a la respuesta.

Automágico

Haz clic en Add a Step.

Selecciona Action/Search y luego busca y selecciona Formatter.

Debajo del encabezado CREATE, selecciona la opción Utilities y haz clic en Continue.

En la sección Transform, escribe Line Itemizer.

Queremos crear dos elementos debajo del encabezado Line-item(s) basado en el resultado de la llamada de API en el paso 4...

  1. Título: "Título de resultados sin procesar"
  2. Enlace: "Enlace de resultados de NPS sin procesar"

Solo queremos que nuestros resultados muestren el nombre de un parque nacional estadounidense y un enlace que contenga más información:

Creación de dos elementos de línea fuera de la llamada de API

Prueba y completa el paso. Ahora, nuestra tercera acción...

Paso, formato, paso

Haz clic en Add a Step.

Selecciona Formatter y luego Utilities, como antes...

Pero esta vez busca Line-Item to Text.

Hay una casilla llamada Values, con un encabezado de Input. Haz clic dentro de la barra, luego selecciona el paso 5, Utilities, y extrae los dos elementos de línea que se crearon.

Ten en cuenta que la estructura dentro de la casilla de entrada reflejará el formato del mensaje de Slack. Debe tener un título y un espacio, seguido de una URL entre paréntesis:

[TITLE] ([LINK])

Y queremos que los resultados aparezcan en una línea separada. Para ello, en la casilla que se encuentra debajo del encabezado Separator, agrega el carácter especial: [:nueva línea:]:

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

Dentro del Zap, se verá así:

Formato correcto de las nuevas líneas, lo que cambia la forma en que aparecen las respuestas de la API

Y ahora, el último paso. Enviaremos los resultados de búsqueda a un chat específico de Slack.

Transmisión final

Haz clic en Add a step y escribe Action/Search...

Selecciona Slack.

Debajo de Create: Selecciona Send Channel Message y luego haz clic en save + continue.

Selecciona tu cuenta de Slack y haz clic en Continue

Elige el canal en el que funcionará Zap: #random es una buena opción para realizar pruebas.

Debajo del encabezado Message Text, haz clic en la casilla, y luego selecciona la salida del paso 6:

Selección del canal de Slack en el que publicarás y el contenido del mensaje que será la salida de toda la cadena de filtros

Para que sea más personalizado, puedes darle un nombre al bot de búsqueda y proporcionarle un avatar atractivo.

name: Imagen de Slackbot: APP SEARCH!

Copia el enlace de imagen de Elastic App Search desde este blog haciendo clic derecho en la siguiente imagen, si lo deseas:

El hermoso logotipo de Elastic App Search

BOT DE BÚSQUEDA, ¡LEVÁNTATE Y ANDA!

Una vez que todo esté configurado, habilita el Zap:

¡HABILITA EL ZAP!

Ingresa a Slack y escribe: "search for something" y haz un par de consultas.

Un GIF que muestra cómo Slack responde consultas

¡Felicitaciones! Ahora tienes un bot de búsqueda inteligente en Slack.

Resumen

Un bot de búsqueda puede ser muy útil. Es posible que quieras buscar en una base de conocimientos interna o buscar un error en un grupo grande de registros de servidor. Cualquiera que sea el caso, crea un bot de búsqueda basado en Elastic App Search y conéctate a Slack sin complicaciones.

Puedes comenzar hoy con App Search con una [versión de prueba gratuita de 14 días] (https://www.elastic.co/es/cloud/app-search-service) de nuestra versión alojada o [descargar la versión beta] (https://www.elastic.co/es/downloads/app-search) de la versión autoadministrada. Cada nueva versión de prueba incluye un conjunto de datos de muestra, por lo que puedes experimentar antes de comenzar a usar tus propios datos.