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
运行机器人欢迎提出拉取请求 - 我们很乐意帮助扩展机器人的功能。
如果您在使用机器人时遇到任何问题,请提出问题,以便我们帮助您解决问题!