Lookerbot интегрирует Slack и Looker, чтобы все ваши данные были у вас под рукой.
С помощью Lookerbot каждый в вашей компании может легко обмениваться данными и мгновенно отвечать на вопросы. Lookerbot может отвечать на вопросы, отправлять оповещения и многое другое!
Чтобы получить бесплатную пробную версию Looker, перейдите на сайт Looker.com/free-trial.
Подробную информацию о том, как взаимодействовать с Lookerbot, можно найти в Справочном центре Looker.
s3:PutObjectAcl
и s3:PutObject
.channels:read
chat:write:bot
files:write:user
team:read
users:read
commands
(если вы планируете настраивать слэш-команды)xoxb-
.По умолчанию приложения Slack являются внутренними для вашей команды. Не «распространяйте» свое приложение Slack — это сделает его доступным для всех пользователей Slack в мире.
Важный
Обратите внимание: некоторые из приведенных ниже переменных среды изменились. Возможно, вам придется их настроить, чтобы эта функция продолжала работать.
Самый быстрый способ развернуть бота — использовать кнопку развертывания Heroku одним щелчком мыши, которая предоставит сервер для вашего бота. Вам будет предложено дать приложению уникальное имя, добавить ключ Slack API и настроить все необходимые переменные (см. «Переменные среды» ниже).
После установки переменных среды и развертывания сервера бот должен быть готов к работе! Вы также можете дополнительно настроить слэш-команды.
Поиск неисправностей
Видите проблемы с зависимостью от Heroku? Примените
YARN_PRODUCTION=false
как env. к развертыванию. Более подробную информацию см. в разделе «Пропуск обрезки Heroku».
Бот представляет собой простое приложение Node.js. Приложение должно иметь возможность доступа как к API вашего экземпляра Looker, так и к API Slack. Если у вас есть собственный экземпляр Looker, обязательно откройте порт 19999 (или ваш core_port
), чтобы получить доступ к API Looker.
Бот полностью настраивается через переменные среды. Вы захотите настроить эти переменные:
SLACK_API_KEY
(обязательно) — сюда вы поместите «Токен доступа OAuth пользователя бота». Вы можете войти в приложение Slack в разделе «Установить приложение».
LOOKER_URL
(обязательно) – URL-адрес вашего экземпляра Looker.
LOOKER_API_BASE_URL
(обязательно) – конечная точка API вашего экземпляра Looker. В большинстве случаев это будет URL-адрес веб-сайта, за которым следует :19999/api/4.0
(замените 19999
на свой core_port
, если он отличается).
LOOKER_API_CLIENT_ID
(обязательно) — идентификатор клиента API для пользователя, от имени которого вы хотите, чтобы бот работал. Для этого необходимо создать пользователя API или ключ API для существующего пользователя в Looker.
LOOKER_API_CLIENT_SECRET
(обязательно) — секрет клиента API для пользователя, от имени которого вы хотите, чтобы бот работал. Для этого необходимо создать пользователя API или ключ API для существующего пользователя в Looker.
LOOKER_CUSTOM_COMMAND_FOLDER_ID
(необязательно) — идентификатор папки, которую бот будет использовать для определения пользовательских команд. Прочтите об использовании пользовательских команд в Справочном центре Looker.
LOOKER_WEBHOOK_TOKEN
(необязательно) — токен проверки веб-перехватчика, найденный в панели администратора Looker. Это необходимо только в том случае, если вы используете бота для отправки запланированных веб-перехватчиков.
SLACK_SLASH_COMMAND_TOKEN
(необязательно) — если вы хотите использовать косую черту или интерактивные сообщения с Lookerbot, предоставьте токен подтверждения из раздела «Основная информация» настроек приложения. Так бот будет проверять целостность входящих слэш-команд.
PORT
(необязательно) — порт, на котором веб-сервер бота будет работать для приема команд с косой чертой. По умолчанию 3333
.
Если вы хотите вместо этого поместить эти переменные конфигурации в файловую систему, вы также можете поместить их в файл .env
в корне проекта. Переменные среды будут иметь приоритет над настройками .env
, если они оба присутствуют.
Есть пара переменных среды, которые можно использовать для настройки поведения:
LOOKER_SLACKBOT_LOADING_MESSAGES
— установите для этого параметра значение false
, чтобы отключить публикацию сообщений о загрузке.
LOOKERBOT_DATA_ACTIONS_IN_MESSAGES
— установите для этого параметра значение false
, чтобы отключить доступ к кнопкам действий с данными для пользователей Slack.
SLACKBOT_S3_BUCKET
(необязательно) — если вы хотите использовать Lookerbot для публикации изображений визуализации, укажите имя корзины Amazon S3.
SLACKBOT_S3_BUCKET_REGION
(необязательно) — если вы хотите использовать Lookerbot для публикации изображений визуализации, укажите регион корзины Amazon S3. По умолчанию us-east-1
.
AWS_ACCESS_KEY_ID
(необязательно). Если вы хотите использовать Lookerbot для публикации изображений визуализации, укажите ключ доступа Amazon S3, который может выполнять запись в предоставленную корзину.
AWS_SECRET_ACCESS_KEY
(необязательно). Если вы хотите использовать Lookerbot для публикации изображений визуализации, предоставьте секретный ключ доступа Amazon S3, который может выполнять запись в предоставленную корзину.
AZURE_STORAGE_ACCOUNT
(необязательно) — если вы хотите использовать хранилище Microsoft Azure для хранения изображений визуализации, опубликованных Lookerbot, укажите имя своей учетной записи хранения Azure.
SLACKBOT_AZURE_CONTAINER
(необязательно) — если вы хотите использовать хранилище Microsoft Azure для хранения изображений визуализации, опубликованных Lookerbot, укажите имя контейнера в своей учетной записи хранения Azure, который вы хотите использовать.
AZURE_STORAGE_ACCESS_KEY
(необязательно) — если вы используете хранилище Microsoft Azure для хранения изображений визуализации, опубликованных Lookerbot, укажите ключ доступа, который может выполнять запись в предоставленную учетную запись хранения Azure и контейнер.
GOOGLE_CLOUD_BUCKET
(необязательно). Если вы хотите использовать Google Cloud для хранения изображений визуализации, опубликованных Lookerbot, укажите имя своего сегмента.Если Lookerbot работает на Google Compute Engine, дополнительная информация не требуется, если настроены соответствующие области API.
В противном случае вы можете предоставить учетные данные напрямую:
GOOGLE_CLOUD_PROJECT
(необязательно). Если вы хотите использовать Google Cloud для хранения изображений визуализации, опубликованных Lookerbot, укажите название вашего проекта.
GOOGLE_CLOUD_CREDENTIALS_JSON
(необязательно). Если вы используете Google Cloud для хранения изображений визуализации, опубликованных Lookerbot, укажите содержимое JSON-файла учетных данных, который вы получили с веб-сайта Google Cloud.
Если ваш экземпляр Looker использует самозаверяющий сертификат, Lookerbot по умолчанию откажется к нему подключаться.
Установка для переменной среды NODE_TLS_REJECT_UNAUTHORIZED
значения 0
будет указывать Lookerbot принимать соединения с недействительными сертификатами. Прежде чем устанавливать эту переменную, убедитесь, что вы тщательно оценили последствия этого действия для безопасности вашей инфраструктуры.
Это должно повлиять только на локальное развертывание Looker. Не устанавливайте эту переменную среды, если ваш экземпляр размещен на Looker.
Если вы хотите, чтобы бот подключался к нескольким экземплярам Looker, вы можете настроить его с помощью переменной среды LOOKERS
. Эта переменная должна представлять собой JSON-массив объектов JSON, каждый из которых представляет экземпляр Looker и его информацию для аутентификации.
Объекты JSON должны иметь следующие ключи:
url
должен быть веб-адресом экземпляраapiBaseUrl
должен быть конечной точкой API.clientID
должен быть идентификатором клиента API для пользователя, от имени которого вы хотите, чтобы бот работал.clientSecret
должен быть секретом этого ключа API.customCommandFolderId
— необязательный параметр, представляющий папку, которую бот будет использовать для определения пользовательских команд.webhookToken
— необязательный параметр. Это токен проверки веб-перехватчика, который можно найти в панели администратора Looker. Это необходимо только в том случае, если вы используете бота для отправки запланированных веб-перехватчиков.Вот пример JSON, который подключается к двум экземплярам 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 " }]
Переменные LOOKER_URL
, LOOKER_API_BASE_URL
, LOOKER_API_CLIENT_ID
, LOOKER_API_CLIENT_SECRET
, LOOKER_WEBHOOK_TOKEN
и LOOKER_CUSTOM_COMMAND_FOLDER_ID
игнорируются, если установлен LOOKERS
.
Чтобы запустить сервер:
yarn install
для установки зависимостейyarn start
для запуска сервера бота. Сервер будет работать до тех пор, пока вы не нажмете Ctrl+C
чтобы остановить его. Включенный Procfile
также позволит вам запустить приложение с помощью мастера или узла-бригадира. Эти библиотеки также предоставляют простые способы создания сценариев для использования с upstart
, supervisord
и systemd
.
Слэш-команды для взаимодействия с ботом не требуются. Вы можете написать боту напрямую или упомянуть его, например:
@looker, помощь
и использовать весь функционал.
Однако команды Slash немного удобнее в использовании и позволяют Slack выполнять автозаполнение, поэтому вы, вероятно, захотите их настроить.
/slack/receive
, поэтому, если ваш сервер находится по адресу https://example.com
, URL-адрес будет https://example.com/slack/receive
.SLACK_SLASH_COMMAND_TOKEN
.Вы можете использовать бота для отправки запланированных Looks в Slack.
/slack/post/channel/my-channel-name
/slack/post/group/my-channel-name
/slack/post/dm/myusername
Эти URL-адреса имеют префикс URL-адреса вашего сервера. (Если вы использовали развертывание Heroku, это будет выбранное вами уникальное имя приложения). Итак, если ваш сервер находится по адресу https://example.com
и вы хотите публиковать сообщения на канале data-science
, URL-адрес будет https://example.com/slack/post/channel/data-science
.
LOOKER_WEBHOOK_TOKEN
правильно установлен тот же токен проверки, который находится в панели администратора Looker.По умолчанию простые действия с данными отображаются в Slack для визуализации одного значения. Действия с данными, имеющие формы, в настоящее время не поддерживаются.
Это можно отключить для каждого действия, используя шаблон Liquid в определении действия, чтобы ограничить доступ определенным пользователям. Кроме того, кнопки действий можно полностью отключить с помощью переменной конфигурации бота LOOKERBOT_DATA_ACTIONS_IN_MESSAGES
.
Для использования действий с данными из Slack необходима быстрая дополнительная настройка:
/slack/action
, поэтому, если ваш сервер находится по адресу https://example.com
, URL-адрес запроса будет https://example.com/slack/action
.Бот-сервер также реализует конечные точки, позволяющие легко отправлять действия с данными в Slack.
Вот пример нескольких действий с данными, которые вы можете реализовать в LookML. (Замените https://example.com
именем хоста вашего бота.)
Чтобы использовать это, вам необходимо убедиться, что для переменной среды LOOKER_WEBHOOK_TOKEN
правильно установлен тот же токен проверки, который находится в панели администратора Looker, как и в случае с данными планирования.
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 "
}
}
}
Мы предлагаем создать пользователя Looker API специально для Lookerbot и использовать учетные данные API этого пользователя. Стоит помнить, что каждый, кто может общаться с вашим Lookerbot, имеет права этого пользователя . Если есть данные, к которым вы не хотите, чтобы люди имели доступ через Slack, убедитесь, что пользователь не может получить к ним доступ с помощью механизмов разрешений Looker.
Также имейте в виду, что когда бот Looker отвечает на вопросы в Slack, полученные данные перемещаются в Slack и теперь размещаются там . Обязательно внимательно продумайте, каким данным разрешено покидать Looker. Slack сохраняет историю сообщений чата на своих серверах и отправляет множество типов уведомлений о сообщениях через другие службы.
Чтобы визуализации появлялись в Slack, если это настроено, бот загружает их в виде изображений в Amazon S3 с помощью чрезвычайно длинного, случайно сгенерированного URL-адреса. Любой, у кого есть этот URL-адрес, может получить доступ к этому изображению в любое время, хотя угадать его будет чрезвычайно сложно.
Если вы решите удалить файлы изображений из S3, сообщения Slack, основанные на этих изображениях, будут пустыми.
.env
в основе репозитория.yarn install
yarn start
Запросы на включение приветствуются — нам бы хотелось получить помощь в расширении функциональности бота.
Если у вас возникли проблемы с ботом, пожалуйста, создайте проблему, чтобы мы могли вам помочь!