Lookerbot은 Slack과 Looker를 통합하여 모든 데이터를 손쉽게 확인할 수 있습니다.
Lookerbot을 사용하면 회사의 모든 사람이 쉽게 데이터를 공유하고 질문에 즉시 답변할 수 있습니다. Lookerbot은 질문에 답하고, 알림을 보내는 등의 작업을 할 수 있습니다!
Looker 무료 평가판을 보려면 seer.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에 대한 종속성 문제가 있습니까? env로
YARN_PRODUCTION=false
적용합니다. 배포에. 자세한 내용은 heroku 건너뛰기 가지치기를 참조하세요.
봇은 간단한 Node.js 애플리케이션입니다. 애플리케이션은 Looker 인스턴스의 API와 Slack의 API에 모두 연결할 수 있어야 합니다. Looker의 자체 호스팅 인스턴스가 있는 경우 Looker API에 액세스하려면 포트 19999(또는 core_port
)를 열어야 합니다.
봇은 환경 변수를 통해 완전히 구성됩니다. 다음 변수를 설정하는 것이 좋습니다.
SLACK_API_KEY
(필수) – 여기에 "봇 사용자 OAuth 액세스 토큰"을 입력합니다. "앱 설치"에서 Slack 앱에 들어갈 수 있습니다.
LOOKER_URL
(필수) – Looker 인스턴스의 웹 URL입니다.
LOOKER_API_BASE_URL
(필수) – Looker 인스턴스의 API 엔드포인트입니다. 대부분의 경우 이는 웹 URL 뒤에 :19999/api/4.0
표시됩니다(다른 경우 19999
core_port
로 바꾸십시오).
LOOKER_API_CLIENT_ID
(필수) – 봇을 실행할 사용자의 API 클라이언트 ID입니다. 이를 위해서는 Looker에서 API 사용자 또는 기존 사용자에 대한 API 키를 생성해야 합니다.
LOOKER_API_CLIENT_SECRET
(필수) – 봇을 실행할 사용자의 API 클라이언트 암호입니다. 이를 위해서는 Looker에서 API 사용자 또는 기존 사용자에 대한 API 키를 생성해야 합니다.
LOOKER_CUSTOM_COMMAND_FOLDER_ID
(선택 사항) – 봇이 사용자 정의 명령을 정의하는 데 사용할 폴더의 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
– Slack 사용자가 데이터 작업 버튼을 사용할 수 없게 하려면 이를 false
로 설정합니다.
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 Storage를 사용하여 Lookerbot이 게시한 시각화 이미지를 저장하려면 Azure Storage 계정 이름을 제공하세요.
SLACKBOT_AZURE_CONTAINER
(선택 사항) - Microsoft Azure Storage를 사용하여 Lookerbot이 게시한 시각화 이미지를 저장하려면 사용하려는 Azure Storage 계정 내의 컨테이너 이름을 제공하세요.
AZURE_STORAGE_ACCESS_KEY
(선택 사항) - Microsoft Azure Storage를 사용하여 Lookerbot이 게시한 시각화 이미지를 저장하는 경우 제공된 Azure Storage 계정 및 컨테이너에 쓸 수 있는 액세스 키를 제공합니다.
GOOGLE_CLOUD_BUCKET
(선택사항) - Google Cloud를 사용하여 Lookerbot이 게시한 시각화 이미지를 저장하려면 버킷 이름을 제공하세요.Lookerbot이 Google Compute Engine에서 실행 중인 경우 적절한 API 범위가 설정되어 있으면 추가 정보가 필요하지 않습니다.
그렇지 않으면 자격 증명을 직접 제공할 수 있습니다.
GOOGLE_CLOUD_PROJECT
(선택사항) - Google Cloud를 사용하여 Lookerbot이 게시한 시각화 이미지를 저장하려면 프로젝트 이름을 제공하세요.
GOOGLE_CLOUD_CREDENTIALS_JSON
(선택사항) - Google Cloud를 사용하여 Lookerbot이 게시한 시각화 이미지를 저장하는 경우 Google Cloud 웹사이트에서 얻은 자격 증명 JSON 파일의 콘텐츠를 제공하세요.
Looker 인스턴스가 자체 서명된 인증서를 사용하는 경우 Lookerbot은 기본적으로 해당 인증서에 대한 연결을 거부합니다.
NODE_TLS_REJECT_UNAUTHORIZED
환경 변수를 0
으로 설정하면 Lookerbot이 유효하지 않은 인증서와의 연결을 수락하도록 지시합니다. 이 변수를 설정하기 전에 인프라에 대한 이 작업의 보안 영향을 철저히 평가했는지 확인하십시오.
이는 Looker의 온프레미스 배포에만 영향을 미칩니다. Looker가 인스턴스를 호스팅하는 경우 이 환경 변수를 설정하지 마세요.
봇이 여러 Looker 인스턴스에 연결되도록 하려면 LOOKERS
환경 변수를 사용하여 봇을 구성할 수 있습니다. 이 변수는 각각 Looker 인스턴스와 해당 인증 정보를 나타내는 JSON 객체의 JSON 배열이어야 합니다.
JSON 객체에는 다음 키가 있어야 합니다.
url
인스턴스의 웹 URL이어야 합니다.apiBaseUrl
API 엔드포인트여야 합니다.clientID
봇을 실행할 사용자의 API 클라이언트 ID여야 합니다.clientSecret
해당 API 키의 비밀이어야 합니다.customCommandFolderId
는 봇이 사용자 정의 명령을 정의하는 데 사용할 폴더를 나타내는 선택적 매개변수입니다.webhookToken
은 선택적 매개변수입니다. Looker의 관리 패널에 있는 웹훅 검증 토큰입니다. 이는 예약된 웹후크를 보내기 위해 봇을 사용하는 경우에만 필요합니다.다음은 두 개의 Looker 인스턴스에 연결되는 JSON의 예입니다.
[{ "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
사용하면 foreman 또는 node-foreman을 사용하여 앱을 실행할 수도 있습니다. 또한 이러한 라이브러리는 upstart
, supervisord
및 systemd
에서 사용할 스크립트를 생성하는 쉬운 방법을 제공합니다.
봇과 상호 작용하는 데 슬래시 명령이 필요하지 않습니다. 봇에게 직접 DM을 보내거나 다음과 같이 봇을 언급할 수 있습니다.
@looker 도움말
그리고 모든 기능을 사용해보세요.
그러나 슬래시 명령은 사용하기가 좀 더 친숙하고 Slack이 자동 완성을 허용하므로 이를 설정하는 것이 좋습니다.
/slack/receive
이므로 서버가 https://example.com
에 있는 경우 URL은 https://example.com/slack/receive
입니다.SLACK_SLASH_COMMAND_TOKEN
환경 변수를 설정합니다.봇을 사용하여 예약된 Look을 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 "
}
}
}
Lookerbot 전용 Looker API 사용자를 생성하고 해당 사용자의 API 자격 증명을 사용하는 것이 좋습니다. Lookerbot과 대화할 수 있는 모든 사람은 이 사용자의 권한을 가지고 있다는 점을 기억할 가치가 있습니다. 사람들이 Slack을 통해 액세스하는 것을 원하지 않는 데이터가 있는 경우 사용자가 Looker의 권한 부여 메커니즘을 사용하여 해당 데이터에 액세스할 수 없도록 하세요.
또한 Looker 봇이 Slack에서 질문에 답변하면 결과 데이터가 Slack으로 이동되어 이제 그곳에서 호스팅된다는 점을 명심하세요. 어떤 데이터가 Looker를 떠나도록 허용되는지 신중하게 고려하세요. Slack은 서버에 채팅 메시지 기록을 보관하고 다른 서비스를 통해 메시지에 대한 다양한 유형의 알림을 푸시합니다.
Slack에 시각화가 표시되도록 하기 위해 봇은 무작위로 생성된 매우 긴 URL을 사용하여 시각화를 Amazon S3에 이미지로 업로드합니다. 이 URL이 있는 사람은 누구나 언제든지 해당 이미지에 액세스할 수 있지만 추측하기는 매우 어렵습니다.
S3에서 이미지 파일을 제거하기로 선택한 경우 해당 이미지에 의존하는 Slack 메시지는 공백이 됩니다.
.env
라는 파일에 환경 변수를 추가합니다.yarn install
로 종속성 설치yarn start
로 봇 실행끌어오기 요청을 환영합니다. 우리는 봇의 기능을 확장하는 데 도움을 받고 싶습니다.
봇에 문제가 있는 경우 문제를 열어주시면 도움을 드릴 수 있습니다!