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 ユーザーが利用できるようになります。
重要
注: 以下の環境変数の一部が変更されています。これを機能し続けるには、調整が必要になる場合があります。
ボットをデプロイする最も簡単な方法は、Heraku のワンクリック デプロイ ボタンを使用することです。これにより、ボット用のサーバーがプロビジョニングされます。これにより、アプリに一意の名前を付け、Slack API キーを追加し、必要な変数をすべて設定するよう求められます (下記の「環境変数」を参照)。
環境変数が設定され、サーバーがデプロイされると、ボットを使用できるようになります。オプションでスラッシュ コマンドを構成することもできます。
トラブルシューティング
Heroku での依存関係の問題が発生しましたか?環境として
YARN_PRODUCTION=false
を適用します。展開へ。詳細については、「heroku スキップ枝刈り」を参照してください。
ボットは単純な Node.js アプリケーションです。アプリケーションは、Looker インスタンスの API と Slack の API の両方にアクセスできる必要があります。 Looker の自己ホスト型インスタンスがある場合は、Looker API にアクセスするために必ずポート 19999 (またはcore_port
) を開いてください。
ボットは完全に環境変数によって構成されます。次の変数を設定するとよいでしょう。
SLACK_API_KEY
(必須) – ここに「ボット ユーザー OAuth アクセス トークン」を配置します。 「アプリのインストール」から Slack アプリにアクセスできます。
LOOKER_URL
(必須) – Looker インスタンスの Web URL。
LOOKER_API_BASE_URL
(必須) – Looker インスタンスの API エンドポイント。ほとんどの場合、これは Web 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 の管理パネルにある 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 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
環境変数を使用してボットを構成できます。この変数は JSON オブジェクトの JSON 配列である必要があり、それぞれが Looker インスタンスとその認証情報を表します。
JSON オブジェクトには次のキーが必要です。
url
インスタンスの Web URL である必要がありますapiBaseUrl
API エンドポイントである必要がありますclientID
、ボットを実行するユーザーの API クライアント ID である必要があります。clientSecret
その API キーのシークレットである必要がありますcustomCommandFolderId
はオプションのパラメーターで、ボットがカスタム コマンドを定義するために使用するフォルダーを表します。webhookToken
オプションのパラメータです。これは、Looker の管理パネルにある Webhook 検証トークンです。これは、ボットを使用してスケジュールされた Webhook を送信する場合にのみ必要です。2 つの 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 ヘルプ
すべての機能を使用してください。
ただし、Slash コマンドは少し使いやすく、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 が接頭辞として付けられます。 (Heraku デプロイメントを使用した場合、これは選択した一意のアプリ名になります)。したがって、サーバーが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
でボットを実行するプル リクエストは大歓迎です。ボットの機能の拡張にご協力いただければ幸いです。
ボットに問題がある場合は、問題を報告してください。サポートさせていただきます。