Lookerbot integriert Slack und Looker, damit Sie alle Ihre Daten immer zur Hand haben.
Mit Lookerbot kann jeder in Ihrem Unternehmen problemlos Daten austauschen und Fragen sofort beantworten. Lookerbot kann Fragen beantworten, Benachrichtigungen senden und mehr!
Eine kostenlose Testversion von Looker finden Sie unter looker.com/free-trial.
Detaillierte Informationen zur Interaktion mit Lookerbot finden Sie im Looker-Hilfecenter.
s3:PutObjectAcl
und s3:PutObject
.channels:read
chat:write:bot
files:write:user
team:read
users:read
commands
(wenn Sie Slash-Befehle konfigurieren möchten)xoxb-
beginnen.Standardmäßig sind Slack-Apps teamintern. „Verteilen“ Sie Ihre Slack-App nicht – sonst steht sie allen Slack-Benutzern auf der Welt zur Verfügung.
Wichtig
Bitte beachten Sie: Einige der folgenden Umgebungsvariablen haben sich geändert. Möglicherweise müssen Sie sie anpassen, damit dies weiterhin funktioniert.
Der schnellste Weg, den Bot bereitzustellen, ist die Verwendung der Ein-Klick-Bereitstellungsschaltfläche von Heroku, die einen Server für Ihren Bot bereitstellt. Dadurch werden Sie aufgefordert, der App einen eindeutigen Namen zu geben, den Slack-API-Schlüssel hinzuzufügen und alle erforderlichen Variablen zu konfigurieren (siehe „Umgebungsvariablen“ unten).
Sobald die Umgebungsvariablen festgelegt und der Server bereitgestellt wurde, sollte der Bot einsatzbereit sein! Optional können Sie auch Slash-Befehle konfigurieren.
Fehlerbehebung
Sehen Sie Abhängigkeitsprobleme bei Heroku? Wenden Sie
YARN_PRODUCTION=false
als Umgebung an. zum Einsatz. Weitere Einzelheiten finden Sie unter Heroku-Sprungbeschneiden.
Der Bot ist eine einfache Node.js-Anwendung. Die Anwendung muss sowohl die API Ihrer Looker-Instanz als auch die API von Slack erreichen können. Wenn Sie über eine selbst gehostete Instanz von Looker verfügen, müssen Sie unbedingt Port 19999 (oder Ihren core_port
) öffnen, um auf die Looker-API zuzugreifen.
Der Bot wird vollständig über Umgebungsvariablen konfiguriert. Sie möchten diese Variablen einrichten:
SLACK_API_KEY
(erforderlich) – Hier legen Sie das „Bot User OAuth Access Token“ ab. In die Slack-App gelangen Sie unter „App installieren“.
LOOKER_URL
(erforderlich) – Die Web-URL Ihrer Looker-Instanz.
LOOKER_API_BASE_URL
(erforderlich) – Der API-Endpunkt Ihrer Looker-Instanz. In den meisten Fällen ist dies die Web-URL, gefolgt von :19999/api/4.0
(ersetzen Sie 19999
durch Ihren core_port
, falls dieser anders ist).
LOOKER_API_CLIENT_ID
(erforderlich) – Die API-Client-ID für den Benutzer, unter dem der Bot ausgeführt werden soll. Dazu ist die Erstellung eines API-Benutzers oder eines API-Schlüssels für einen vorhandenen Benutzer in Looker erforderlich.
LOOKER_API_CLIENT_SECRET
(erforderlich) – Das API-Client-Geheimnis für den Benutzer, unter dem der Bot ausgeführt werden soll. Dazu ist die Erstellung eines API-Benutzers oder eines API-Schlüssels für einen vorhandenen Benutzer in Looker erforderlich.
LOOKER_CUSTOM_COMMAND_FOLDER_ID
(optional) – Die ID eines Ordners, den der Bot zum Definieren benutzerdefinierter Befehle verwenden soll. Lesen Sie im Looker-Hilfecenter mehr über die Verwendung benutzerdefinierter Befehle.
LOOKER_WEBHOOK_TOKEN
(optional) – Das Webhook-Validierungstoken, das im Admin-Panel von Looker gefunden wird. Dies ist nur erforderlich, wenn Sie den Bot zum Senden geplanter Webhooks verwenden.
SLACK_SLASH_COMMAND_TOKEN
(optional) – Wenn Sie Slash-Befehle oder interaktive Nachrichten mit Lookerbot verwenden möchten, stellen Sie das Verifizierungstoken aus dem Abschnitt „Grundlegende Informationen“ der App-Einstellungen bereit. Auf diese Weise überprüft der Bot die Integrität eingehender Slash-Befehle.
PORT
(optional) – Der Port, auf dem der Bot-Webserver ausgeführt wird, um Slash-Befehle zu akzeptieren. Der Standardwert ist 3333
.
Wenn Sie diese Konfigurationsvariablen stattdessen im Dateisystem ablegen möchten, können Sie sie auch in einer .env
Datei im Stammverzeichnis des Projekts platzieren. Umgebungsvariablen haben Vorrang vor .env
-Einstellungen, wenn beide vorhanden sind.
Es gibt einige Umgebungsvariablen, die zur Optimierung des Verhaltens verwendet werden können:
LOOKER_SLACKBOT_LOADING_MESSAGES
– Setzen Sie dies auf false
um das Posten von Ladenachrichten zu deaktivieren.
LOOKERBOT_DATA_ACTIONS_IN_MESSAGES
– Setzen Sie dies auf false
um die Bereitstellung von Datenaktionsschaltflächen für Slack-Benutzer zu deaktivieren.
SLACKBOT_S3_BUCKET
(optional) – Wenn Sie Lookerbot zum Posten von Visualisierungsbildern verwenden möchten, geben Sie einen Amazon S3-Bucket-Namen an.
SLACKBOT_S3_BUCKET_REGION
(optional) – Wenn Sie Lookerbot zum Posten von Visualisierungsbildern verwenden möchten, stellen Sie eine Amazon S3-Bucket-Region bereit. Standardmäßig ist us-east-1
.
AWS_ACCESS_KEY_ID
(optional) – Wenn Sie Lookerbot zum Posten von Visualisierungsbildern verwenden möchten, stellen Sie einen Amazon S3-Zugriffsschlüssel bereit, der in den bereitgestellten Bucket schreiben kann.
AWS_SECRET_ACCESS_KEY
(optional) – Wenn Sie Lookerbot zum Posten von Visualisierungsbildern verwenden möchten, stellen Sie einen geheimen Amazon S3-Zugriffsschlüssel bereit, der in den bereitgestellten Bucket schreiben kann.
AZURE_STORAGE_ACCOUNT
(optional) – Wenn Sie Microsoft Azure Storage zum Speichern von von Lookerbot geposteten Visualisierungsbildern verwenden möchten, geben Sie den Namen Ihres Azure Storage-Kontos an.
SLACKBOT_AZURE_CONTAINER
(optional) – Wenn Sie Microsoft Azure Storage zum Speichern von von Lookerbot geposteten Visualisierungsbildern verwenden möchten, geben Sie den Namen des Containers in Ihrem Azure Storage-Konto an, den Sie verwenden möchten.
AZURE_STORAGE_ACCESS_KEY
(optional) – Wenn Sie Microsoft Azure Storage zum Speichern von von Lookerbot geposteten Visualisierungsbildern verwenden, stellen Sie einen Zugriffsschlüssel bereit, der in das bereitgestellte Azure Storage-Konto und den bereitgestellten Container schreiben kann.
GOOGLE_CLOUD_BUCKET
(optional) – Wenn Sie Google Cloud zum Speichern von von Lookerbot geposteten Visualisierungsbildern verwenden möchten, geben Sie den Namen Ihres Buckets an.Wenn Lookerbot auf Google Compute Engine läuft, sollten keine weiteren Informationen erforderlich sein, wenn die entsprechenden API-Bereiche eingerichtet sind.
Andernfalls können Sie die Anmeldeinformationen direkt angeben:
GOOGLE_CLOUD_PROJECT
(optional) – Wenn Sie Google Cloud zum Speichern von von Lookerbot geposteten Visualisierungsbildern verwenden möchten, geben Sie den Namen Ihres Projekts an.
GOOGLE_CLOUD_CREDENTIALS_JSON
(optional) – Wenn Sie Google Cloud zum Speichern von von Lookerbot geposteten Visualisierungsbildern verwenden, geben Sie den Inhalt der JSON-Datei mit Anmeldeinformationen an, die Sie von der Google Cloud-Website erhalten haben.
Wenn Ihre Looker-Instanz ein selbstsigniertes Zertifikat verwendet, weigert sich Lookerbot standardmäßig, eine Verbindung zu ihr herzustellen.
Wenn Sie die Umgebungsvariable NODE_TLS_REJECT_UNAUTHORIZED
auf 0
setzen, wird Lookerbot angewiesen, Verbindungen mit ungültigen Zertifikaten zu akzeptieren. Bitte stellen Sie sicher, dass Sie die Sicherheitsauswirkungen dieser Aktion auf Ihre Infrastruktur gründlich geprüft haben, bevor Sie diese Variable festlegen.
Dies sollte sich nur auf lokale Bereitstellungen von Looker auswirken. Legen Sie diese Umgebungsvariable nicht fest, wenn Looker Ihre Instanz hostet.
Wenn Sie möchten, dass der Bot eine Verbindung zu mehreren Instanzen von Looker herstellt, können Sie den Bot mit der Umgebungsvariablen LOOKERS
konfigurieren. Diese Variable sollte ein JSON-Array von JSON-Objekten sein, die jeweils eine Looker-Instanz und ihre Authentifizierungsinformationen darstellen.
Die JSON-Objekte sollten die folgenden Schlüssel haben:
url
sollte die Web-URL der Instanz seinapiBaseUrl
sollte der API-Endpunkt seinclientID
sollte die API-Client-ID für den Benutzer sein, unter dem der Bot ausgeführt werden sollclientSecret
sollte das Geheimnis für diesen API-Schlüssel seincustomCommandFolderId
ist ein optionaler Parameter, der einen Ordner darstellt, den der Bot zum Definieren benutzerdefinierter Befehle verwenden soll.webhookToken
ist ein optionaler Parameter. Es handelt sich um das Webhook-Validierungstoken, das Sie im Admin-Bereich von Looker finden. Dies ist nur erforderlich, wenn Sie den Bot zum Senden geplanter Webhooks verwenden.Hier ist ein JSON-Beispiel, das eine Verbindung zu zwei Looker-Instanzen herstellt:
[{ "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 " }]
Die Variablen LOOKER_URL
, LOOKER_API_BASE_URL
, LOOKER_API_CLIENT_ID
, LOOKER_API_CLIENT_SECRET
, LOOKER_WEBHOOK_TOKEN
und LOOKER_CUSTOM_COMMAND_FOLDER_ID
werden ignoriert, wenn LOOKERS
festgelegt ist.
So führen Sie den Server aus:
yarn install
zum Installieren von Abhängigkeitenyarn start
zum Starten des Bot-Servers. Der Server läuft, bis Sie Ctrl+C
drücken, um ihn zu stoppen. Mit der enthaltenen Procfile
können Sie die App auch mit Foreman oder Node-Foreman ausführen. Diese Bibliotheken bieten auch einfache Möglichkeiten zum Erstellen von Skripten zur Verwendung mit upstart
, supervisord
und systemd
.
Für die Interaktion mit dem Bot sind keine Slash-Befehle erforderlich. Sie können dem Bot direkt eine DM senden oder ihn wie folgt erwähnen:
@looker-Hilfe
und alle Funktionen nutzen.
Allerdings sind Slash-Befehle etwas benutzerfreundlicher und ermöglichen Slack die automatische Vervollständigung, sodass Sie diese wahrscheinlich einrichten möchten.
/slack/receive
. Wenn sich Ihr Server also unter https://example.com
befindet, lautet die URL https://example.com/slack/receive
.SLACK_SLASH_COMMAND_TOKEN
fest.Mit dem Bot können Sie geplante Looks an Slack senden.
/slack/post/channel/my-channel-name
/slack/post/group/my-channel-name
/slack/post/dm/myusername
Diesen URLs wird die URL Ihres Servers vorangestellt. (Wenn Sie die Heroku-Bereitstellung verwendet haben, ist dies der eindeutige App-Name, den Sie gewählt haben.) Wenn sich Ihr Server also unter https://example.com
befindet und Sie auf einem Kanal namens data-science
posten möchten, lautet die URL https://example.com/slack/post/channel/data-science
.
LOOKER_WEBHOOK_TOKEN
ordnungsgemäß auf dasselbe Überprüfungstoken eingestellt ist, das im Looker-Administrationsbereich zu finden ist.Standardmäßig werden in Slack einfache Datenaktionen für Einzelwertvisualisierungen angezeigt. Datenaktionen mit Formularen werden derzeit nicht unterstützt.
Dies kann für jede einzelne Aktion deaktiviert werden, indem Liquid-Templates in der Aktionsdefinition verwendet werden, um den Zugriff auf bestimmte Benutzer zu beschränken. Alternativ können die Aktionsschaltflächen mit der Bot-Konfigurationsvariablen LOOKERBOT_DATA_ACTIONS_IN_MESSAGES
vollständig deaktiviert werden.
Für die Verwendung von Data Actions von Slack ist eine kurze zusätzliche Konfiguration erforderlich:
/slack/action
. Wenn sich Ihr Server also unter https://example.com
befindet, lautet die Anforderungs-URL https://example.com/slack/action
.Der Bot-Server implementiert auch Endpunkte, um Ihnen das einfache Senden von Datenaktionen an Slack zu ermöglichen.
Hier ist ein Beispiel für einige Datenaktionen, die Sie in Ihrem LookML implementieren könnten. (Ersetzen Sie https://example.com
durch den Hostnamen Ihres Bots.)
Um dies nutzen zu können, müssen Sie sicherstellen, dass die Umgebungsvariable LOOKER_WEBHOOK_TOKEN
ordnungsgemäß auf denselben Verifizierungstoken gesetzt ist, der im Looker-Admin-Bereich zu finden ist, genau wie bei den Planungsdaten.
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 "
}
}
}
Wir empfehlen, einen Looker-API-Benutzer speziell für Lookerbot zu erstellen und die API-Anmeldeinformationen dieses Benutzers zu verwenden. Denken Sie daran, dass jeder, der mit Ihrem Lookerbot kommunizieren kann, über die Berechtigungen dieses Benutzers verfügt . Wenn Sie nicht möchten, dass andere über Slack auf Daten zugreifen, stellen Sie mithilfe der Berechtigungsmechanismen von Looker sicher, dass der Benutzer nicht darauf zugreifen kann.
Bedenken Sie außerdem, dass, wenn der Looker-Bot Fragen in Slack beantwortet, die resultierenden Daten in Slack verschoben und nun dort gehostet werden . Überlegen Sie sich sorgfältig, welche Daten Looker verlassen dürfen. Slack speichert den Chat-Nachrichtenverlauf auf seinen Servern und sendet viele Arten von Benachrichtigungen über Nachrichten über andere Dienste.
Damit Visualisierungen in Slack angezeigt werden können, lädt der Bot sie bei entsprechender Konfiguration als Bilder mit einer extrem langen, zufällig generierten URL in Amazon S3 hoch. Jeder mit dieser URL kann jederzeit auf das Bild zugreifen, obwohl es äußerst schwierig sein dürfte, es zu erraten.
Wenn Sie sich dafür entscheiden, die Bilddateien aus S3 zu entfernen, sind die Slack-Nachrichten, die auf diesen Bildern basieren, leer.
.env
an der Basis des Repositorys hinzu.yarn install
yarn start
ausPull-Requests sind willkommen – wir würden uns über Hilfe bei der Erweiterung der Funktionalität des Bots freuen.
Wenn Sie Probleme mit dem Bot haben, öffnen Sie bitte ein Problem, damit wir Ihnen helfen können!