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 應用程式。應用程式需要能夠存取 Looker 實例的 API 和 Slack 的 API。如果您有 Looker 的自架實例,請務必開啟連接埠 19999 (或您的core_port
)以便存取 Looker API。
該機器人完全透過環境變數進行配置。您需要設定這些變數:
SLACK_API_KEY
(必要) – 您將在此處放置「機器人使用者 OAuth 存取權杖」。您可以在「安裝應用程式」下進入 Slack 應用程式。
LOOKER_URL
(必需)– Looker 實例的 Web URL。
LOOKER_API_BASE_URL
(必要) – Looker 實例的 API 端點。在大多數情況下,這將是網址,後面跟著: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 管理面板中找到的 Webhook 驗證令牌。只有當您使用機器人發送計劃的 Webhook 時才需要這樣做。
SLACK_SLASH_COMMAND_TOKEN
(可選) – 如果您想使用斜線命令或與 Lookerbot 互動訊息,請從應用程式設定的「基本資訊」部分提供驗證令牌。這就是機器人驗證傳入斜杠命令完整性的方式。
PORT
(可選) – 機器人 Web 伺服器將在其上運行以接受斜線命令的連接埠。預設為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 發布的視覺化圖片,請提供您從 Google Cloud 網站取得的憑證 JSON 檔案的內容。
如果您的 Looker 實例使用自簽名證書,Lookerbot 將預設拒絕連接到它。
將NODE_TLS_REJECT_UNAUTHORIZED
環境變數設定為0
將指示 Lookerbot 接受具有無效憑證的連線。在設定此變數之前,請確保您已徹底評估此操作對您的基礎架構的安全影響。
這應該只會影響 Looker 的本地部署。如果 Looker 託管您的實例,請勿設定此環境變數。
如果您希望機器人連接到 Looker 的多個實例,則可以使用LOOKERS
環境變數設定機器人。該變數應該是 JSON 物件的 JSON 數組,每個物件代表一個 Looker 實例及其身份驗證資訊。
JSON 物件應具有以下鍵:
url
應該是實例的 Web urlapiBaseUrl
應該是 API 端點clientID
應該是您希望機器人運行的使用者的 API 用戶端 IDclientSecret
應該是該 API 金鑰的秘密customCommandFolderId
是一個可選參數,表示您希望機器人用來定義自訂指令的資料夾。webhookToken
是一個可選參數。這是在 Looker 管理面板中找到的 Webhook 驗證令牌。只有當您使用機器人發送計劃的 Webhook 時才需要這樣做。以下是連接到兩個 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 " }]
設定LOOKERS
時,將忽略LOOKER_URL
、 LOOKER_API_BASE_URL
、 LOOKER_API_CLIENT_ID
、 LOOKER_API_CLIENT_SECRET
、 LOOKER_WEBHOOK_TOKEN
和LOOKER_CUSTOM_COMMAND_FOLDER_ID
變數。
運行伺服器:
yarn install
安裝依賴項yarn start
啟動機器人伺服器。伺服器將一直運行,直到您鍵入Ctrl+C
將其停止。附帶的Procfile
還允許您使用 foreman 或 node-foreman 運行應用程式。這些庫還提供了創建與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 "
}
}
}
我們建議專門為 Lookerbot 建立一個 Looker API 用戶,並使用該用戶的 API 憑證。值得記住的是,每個可以與您的 Lookerbot 對話的人都擁有該使用者的權限。如果您不希望人們透過 Slack 存取某些數據,請確保使用者無法使用 Looker 的權限機制存取該資料。
另外,請記住,當 Looker 機器人在 Slack 中回答問題時,產生的資料會移至 Slack 並託管在那裡。請務必仔細考慮允許哪些資料離開 Looker。 Slack 在其伺服器上保留聊天訊息歷史記錄,並透過其他服務推播多種類型的訊息通知。
為了允許視覺化出現在 Slack 中(如果配置為這樣做),機器人會將它們作為圖像上傳到 Amazon S3,並使用極長的隨機生成的 URL。任何擁有此 URL 的人都可以隨時存取該圖像,儘管它應該極難猜測。
如果您選擇從 S3 中刪除圖像文件,則依賴這些圖像的 Slack 訊息將為空白。
.env
的檔案中。yarn install
安裝依賴項yarn start
運行機器人歡迎提出拉取請求 - 我們很樂意協助擴展機器人的功能。
如果您在使用機器人時遇到任何問題,請提出問題,以便我們協助您解決問題!