Lookerbot integra Slack y Looker para poner todos tus datos al alcance de tu mano.
Con Lookerbot, todos los miembros de su empresa pueden compartir datos fácilmente y responder preguntas al instante. ¡Lookerbot puede responder preguntas, enviar alertas y más!
Para obtener una prueba gratuita de Looker, visite looker.com/free-trial.
Puede encontrar información detallada sobre cómo interactuar con Lookerbot en el Centro de ayuda de Looker.
s3:PutObjectAcl
y s3:PutObject
.channels:read
chat:write:bot
files:write:user
team:read
users:read
commands
(si planea configurar comandos de barra diagonal)xoxb-
.De forma predeterminada, las aplicaciones de Slack son internas de tu equipo. No "distribuya" su aplicación Slack; eso la pondrá a disposición de todos los usuarios de Slack en el mundo.
Importante
Tenga en cuenta: algunas de las variables de entorno siguientes han cambiado. Es posible que tengas que ajustarlos para que esto siga funcionando.
La forma más rápida de implementar el bot es usar el botón de implementación con un solo clic de Heroku, que proporcionará un servidor para su bot. Esto le pedirá que le dé a la aplicación un nombre único, agregue la clave API de Slack y configure todas las variables requeridas (consulte "Variables de entorno" a continuación).
Una vez que se hayan configurado las variables de entorno y se haya implementado el servidor, ¡el bot debería estar listo para funcionar! Opcionalmente, también puede configurar comandos de barra diagonal.
Solución de problemas
¿Ves problemas de dependencia en heroku? Aplicar
YARN_PRODUCTION=false
como entorno. al despliegue. Consulte poda omitida de heroku para obtener más detalles.
El bot es una sencilla aplicación Node.js. La aplicación debe poder acceder tanto a la API de su instancia de Looker como a la API de Slack. Si tiene una instancia autohospedada de Looker, asegúrese de abrir el puerto 19999 (o su core_port
) para acceder a la API de Looker.
El bot se configura completamente a través de variables de entorno. Querrá configurar estas variables:
SLACK_API_KEY
(obligatorio): aquí es donde colocará el "Token de acceso OAuth del usuario del bot". Puedes acceder a la aplicación Slack en "Instalar aplicación".
LOOKER_URL
(obligatorio): la URL web de su instancia de Looker.
LOOKER_API_BASE_URL
(obligatorio): el punto final API de su instancia de Looker. En la mayoría de los casos, esta será la URL web seguida de :19999/api/4.0
(reemplace 19999
con su core_port
si es diferente).
LOOKER_API_CLIENT_ID
(obligatorio): el ID del cliente API para el usuario con el que desea que se ejecute el bot. Esto requiere crear un usuario API o una clave API para un usuario existente en Looker.
LOOKER_API_CLIENT_SECRET
(obligatorio): el secreto del cliente API para el usuario con el que desea que se ejecute el bot. Esto requiere crear un usuario API o una clave API para un usuario existente en Looker.
LOOKER_CUSTOM_COMMAND_FOLDER_ID
(opcional): el ID de una carpeta que desea que el bot use para definir comandos personalizados. Lea sobre el uso de comandos personalizados en el Centro de ayuda de Looker.
LOOKER_WEBHOOK_TOKEN
(opcional): el token de validación del webhook que se encuentra en el panel de administración de Looker. Esto solo es necesario si estás utilizando el bot para enviar webhooks programados.
SLACK_SLASH_COMMAND_TOKEN
(opcional): si desea utilizar comandos de barra o mensajes interactivos con Lookerbot, proporcione el token de verificación de la sección "Información básica" de la configuración de la aplicación. Así es como el bot verificará la integridad de los comandos de barra diagonal entrantes.
PORT
(opcional): el puerto en el que se ejecutará el servidor web del bot para aceptar comandos de barra diagonal. El valor predeterminado es 3333
.
Si desea colocar estas variables de configuración en el sistema de archivos, también puede colocarlas en un archivo .env
en la raíz del proyecto. Las variables de entorno tendrán prioridad sobre la configuración .env
si ambas están presentes.
Hay un par de variables de entorno que se pueden utilizar para modificar el comportamiento:
LOOKER_SLACKBOT_LOADING_MESSAGES
: configúrelo en false
para deshabilitar la publicación de mensajes de carga.
LOOKERBOT_DATA_ACTIONS_IN_MESSAGES
: configúrelo en false
para deshabilitar la disponibilidad de botones de acción de datos para los usuarios de Slack.
SLACKBOT_S3_BUCKET
(opcional): si desea utilizar Lookerbot para publicar imágenes de visualización, proporcione un nombre de depósito de Amazon S3.
SLACKBOT_S3_BUCKET_REGION
(opcional): si desea utilizar Lookerbot para publicar imágenes de visualización, proporcione una región de depósito de Amazon S3. El valor predeterminado es us-east-1
.
AWS_ACCESS_KEY_ID
(opcional): si desea utilizar Lookerbot para publicar imágenes de visualización, proporcione una clave de acceso de Amazon S3 que pueda escribir en el depósito proporcionado.
AWS_SECRET_ACCESS_KEY
(opcional): si desea utilizar Lookerbot para publicar imágenes de visualización, proporcione una clave de acceso secreta de Amazon S3 que pueda escribir en el depósito proporcionado.
AZURE_STORAGE_ACCOUNT
(opcional): si desea utilizar Microsoft Azure Storage para almacenar imágenes de visualización publicadas por Lookerbot, proporcione el nombre de su cuenta de Azure Storage.
SLACKBOT_AZURE_CONTAINER
(opcional): si desea utilizar Microsoft Azure Storage para almacenar imágenes de visualización publicadas por Lookerbot, proporcione el nombre del contenedor dentro de su cuenta de Azure Storage que desea utilizar.
AZURE_STORAGE_ACCESS_KEY
(opcional): si utiliza Microsoft Azure Storage para almacenar imágenes de visualización publicadas por Lookerbot, proporcione una clave de acceso que pueda escribir en la cuenta y el contenedor de Azure Storage proporcionados.
GOOGLE_CLOUD_BUCKET
(opcional): si desea utilizar Google Cloud para almacenar imágenes de visualización publicadas por Lookerbot, proporcione el nombre de su depósito.Si Lookerbot se ejecuta en Google Compute Engine, no debería ser necesaria más información si se configuran los alcances de API adecuados.
De lo contrario, puedes proporcionar las credenciales directamente:
GOOGLE_CLOUD_PROJECT
(opcional): si desea utilizar Google Cloud para almacenar imágenes de visualización publicadas por Lookerbot, proporcione el nombre de su proyecto.
GOOGLE_CLOUD_CREDENTIALS_JSON
(opcional): si utiliza Google Cloud para almacenar imágenes de visualización publicadas por Lookerbot, proporcione el contenido del archivo JSON de credenciales que obtuvo del sitio web de Google Cloud.
Si su instancia de Looker utiliza un certificado autofirmado, Lookerbot se negará a conectarse a él de forma predeterminada.
Establecer la variable de entorno NODE_TLS_REJECT_UNAUTHORIZED
en 0
le indicará a Lookerbot que acepte conexiones con certificados no válidos. Asegúrese de haber evaluado minuciosamente las implicaciones de seguridad de esta acción para su infraestructura antes de configurar esta variable.
Esto solo debería afectar las implementaciones locales de Looker. No establezca esta variable de entorno si Looker aloja su instancia.
Si desea que el bot se conecte a varias instancias de Looker, puede configurar el bot con la variable de entorno LOOKERS
. Esta variable debe ser una matriz JSON de objetos JSON, cada uno de los cuales representa una instancia de Looker y su información de autenticación.
Los objetos JSON deben tener las siguientes claves:
url
debe ser la URL web de la instancia.apiBaseUrl
debería ser el punto final de la APIclientID
debe ser el ID de cliente API para el usuario con el que desea que se ejecute el bot.clientSecret
debería ser el secreto de esa clave APIcustomCommandFolderId
es un parámetro opcional que representa una carpeta que desea que el bot use para definir comandos personalizados.webhookToken
es un parámetro opcional. Es el token de validación del webhook que se encuentra en el panel de administración de Looker. Esto solo es necesario si estás utilizando el bot para enviar webhooks programados.A continuación se muestra un JSON de ejemplo que se conecta a dos instancias de Looker:
[{ "url" : " https://me.looker.com " , "apiBaseUrl" : " https://me.looker.com:19999/api/4.0 " , "clientId" : " abcdefghjkl " , "clientSecret" : " abcdefghjkl " },{ "url" : " https://me-staging.looker.com " , "apiBaseUrl" : " https://me-staging.looker.com:19999/api/4.0 " , "clientId" : " abcdefghjkl " , "clientSecret" : " abcdefghjkl " }]
Las variables LOOKER_URL
, LOOKER_API_BASE_URL
, LOOKER_API_CLIENT_ID
, LOOKER_API_CLIENT_SECRET
, LOOKER_WEBHOOK_TOKEN
y LOOKER_CUSTOM_COMMAND_FOLDER_ID
se ignoran cuando se establece LOOKERS
.
Para ejecutar el servidor:
yarn install
para instalar dependenciasyarn start
para iniciar el servidor bot. El servidor se ejecutará hasta que escriba Ctrl+C
para detenerlo. El Procfile
incluido también le permitirá ejecutar la aplicación usando Foreman o Node-Foreman. Estas bibliotecas también proporcionan formas sencillas de crear scripts para usar con upstart
, supervisord
y systemd
.
Los comandos de barra diagonal no son necesarios para interactuar con el bot. Puedes enviar un mensaje de texto al bot directamente o mencionarlo como:
@looker ayuda
y utilizar todas las funciones.
Sin embargo, los comandos Slash son un poco más fáciles de usar y permiten que Slack se complete automáticamente, por lo que probablemente querrás configurarlos.
/slack/receive
, por lo que si su servidor está en https://example.com
, la URL sería https://example.com/slack/receive
.SLACK_SLASH_COMMAND_TOKEN
.Puedes usar el bot para enviar looks programados a Slack.
/slack/post/channel/my-channel-name
/slack/post/group/my-channel-name
/slack/post/dm/myusername
Estas URL tienen el prefijo de la URL de su servidor. (Si utilizó la implementación de Heroku, este será el nombre único de la aplicación que eligió). Entonces, si su servidor está en https://example.com
y desea publicar en un canal llamado data-science
, la URL sería https://example.com/slack/post/channel/data-science
.
LOOKER_WEBHOOK_TOKEN
esté configurada correctamente con el mismo token de verificación que se encuentra en el panel de administración de Looker.De forma predeterminada, las acciones de datos simples aparecerán en Slack para visualizaciones de un solo valor. Actualmente no se admiten acciones de datos que tengan formularios.
Esto se puede desactivar por acción mediante el uso de plantillas de Liquid en la definición de acción para restringir el acceso a ciertos usuarios. Como alternativa, los botones de acción se pueden desactivar por completo con la variable de configuración del bot LOOKERBOT_DATA_ACTIONS_IN_MESSAGES
.
Hay una configuración adicional rápida que se necesita para usar Acciones de datos de Slack:
/slack/action
, por lo que si su servidor está en https://example.com
, la URL de solicitud sería https://example.com/slack/action
.El servidor de bots también implementa puntos finales para permitirle enviar fácilmente acciones de datos a Slack.
A continuación se muestra un ejemplo de algunas acciones de datos que podría implementar en su LookML. (Reemplace https://example.com
con el nombre de host de su bot).
Para hacer uso de esto, deberá asegurarse de que la variable de entorno LOOKER_WEBHOOK_TOKEN
esté configurada correctamente en el mismo token de verificación que se encuentra en el panel de administración de Looker, al igual que con los datos de programación.
dimension : value {
sql : CONCAT (${first_name}, ' ' , ${last_name}) ;;
# Let user choose a Slack channel to send to
action : {
label : " Send to Slack Channel "
url : " https://example.com/data_actions "
form_url : " https://example.com/data_actions/form "
param : {
name : " message "
value : " :signal_strength: I sent a value from Slack: {{rendered_value}} "
}
}
# Send to a particular Slack channel with a preset message
action : {
label : " Ping Channel "
url : " https://example.com/data_actions "
param : {
name : " message "
value : " :signal_strength: I sent a value from Slack: {{rendered_value}} "
}
param : {
name : " channel "
value : " #alerts "
}
}
# Ask the user for a message to send to a particular channel
action : {
label : " Ask a Question "
url : " https://example.com/data_actions "
form_param : {
name : " message "
default : " Something seems wrong... (add details) "
}
param : {
name : " channel "
value : " #alerts "
}
}
}
Sugerimos crear un usuario de API de Looker específicamente para Lookerbot y utilizar las credenciales de API de ese usuario. Vale la pena recordar que todos los que pueden hablar con tu Lookerbot tienen los permisos de este usuario . Si hay datos a los que no desea que las personas accedan a través de Slack, asegúrese de que el usuario no pueda acceder a ellos mediante los mecanismos de permisos de Looker.
Además, tenga en cuenta que cuando el bot Looker responde preguntas en Slack, los datos resultantes se trasladan a Slack y ahora se alojan allí . Asegúrese de considerar cuidadosamente qué datos pueden salir de Looker. Slack conserva el historial de mensajes de chat en sus servidores y envía muchos tipos de notificaciones sobre mensajes a través de otros servicios.
Para permitir que las visualizaciones aparezcan en Slack, si está configurado para hacerlo, el bot las carga como imágenes en Amazon S3 con una URL extremadamente larga generada aleatoriamente. Cualquiera que tenga esta URL puede acceder a esa imagen en cualquier momento, aunque debería ser extremadamente difícil de adivinar.
Si elige eliminar los archivos de imagen de S3, los mensajes de Slack que dependían de esas imágenes estarán en blanco.
.env
en la base del repositorio.yarn install
yarn start
Las solicitudes de extracción son bienvenidas; nos encantaría recibir ayuda para ampliar la funcionalidad del bot.
Si tiene algún problema con el bot, abra un problema para que podamos ayudarlo.