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
เป็นสภาพแวดล้อม เพื่อการปรับใช้ ดูการตัดแต่งกิ่ง heroku สำหรับรายละเอียดเพิ่มเติม
บอทเป็นแอปพลิเคชัน Node.js ที่เรียบง่าย แอปพลิเคชันจะต้องสามารถเข้าถึงทั้ง API ของอินสแตนซ์ Looker และ API ของ Slack หากคุณมีอินสแตนซ์ Looker ที่โฮสต์ด้วยตนเอง อย่าลืมเปิดพอร์ต 19999 (หรือ core_port
ของคุณ) เพื่อเข้าถึง Looker API
บอทได้รับการกำหนดค่าทั้งหมดผ่านตัวแปรสภาพแวดล้อม คุณจะต้องตั้งค่าตัวแปรเหล่านี้:
SLACK_API_KEY
(จำเป็น) - นี่คือที่ที่คุณจะใส่ "โทเค็นการเข้าถึง OAuth ของผู้ใช้ Bot" คุณสามารถเข้าไปที่แอป Slack ใต้ "ติดตั้งแอป"
LOOKER_URL
(จำเป็น) – URL เว็บของอินสแตนซ์ Looker ของคุณ
LOOKER_API_BASE_URL
(จำเป็น) – ตำแหน่งข้อมูล API ของอินสแตนซ์ Looker ของคุณ ในกรณีส่วนใหญ่ นี่จะเป็น URL ของเว็บที่ตามด้วย :19999/api/4.0
(แทนที่ 19999
ด้วย core_port
ของคุณหากแตกต่าง)
LOOKER_API_CLIENT_ID
(จำเป็น) – รหัสไคลเอ็นต์ API สำหรับผู้ใช้ที่คุณต้องการให้บอททำงาน สิ่งนี้จำเป็นต้องสร้างผู้ใช้ API หรือคีย์ API สำหรับผู้ใช้ที่มีอยู่ใน Looker
LOOKER_API_CLIENT_SECRET
(จำเป็น) – รหัสลับไคลเอ็นต์ API สำหรับผู้ใช้ที่คุณต้องการให้บอททำงาน สิ่งนี้จำเป็นต้องสร้างผู้ใช้ API หรือคีย์ API สำหรับผู้ใช้ที่มีอยู่ใน Looker
LOOKER_CUSTOM_COMMAND_FOLDER_ID
(ไม่บังคับ) – ID ของโฟลเดอร์ที่คุณต้องการให้บอทใช้เพื่อกำหนดคำสั่งที่กำหนดเอง อ่านเกี่ยวกับการใช้คำสั่งแบบกำหนดเองในศูนย์ช่วยเหลือของ Looker
LOOKER_WEBHOOK_TOKEN
(ไม่บังคับ) – โทเค็นการตรวจสอบความถูกต้องของ webhook ที่พบในแผงผู้ดูแลระบบของ Looker สิ่งนี้จำเป็นเฉพาะในกรณีที่คุณใช้บ็อตเพื่อส่ง Webhook ที่กำหนดเวลาไว้
SLACK_SLASH_COMMAND_TOKEN
(ไม่บังคับ) – หากคุณต้องการใช้คำสั่งเครื่องหมายทับหรือข้อความโต้ตอบกับ Lookerbot ให้ระบุโทเค็นการยืนยันจากส่วน "ข้อมูลพื้นฐาน" ของการตั้งค่าแอป นี่คือวิธีที่บอทจะตรวจสอบความสมบูรณ์ของคำสั่งสแลชที่เข้ามา
PORT
(ทางเลือก) – พอร์ตที่เว็บเซิร์ฟเวอร์บอทจะทำงานเพื่อยอมรับคำสั่งเครื่องหมายทับ ค่าเริ่มต้นคือ 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 ให้ระบุเนื้อหาของไฟล์ JSON ของข้อมูลรับรองที่คุณได้รับจากเว็บไซต์ Google Cloud
หากอินสแตนซ์ Looker ของคุณใช้ใบรับรองที่ลงนามด้วยตนเอง Lookerbot จะปฏิเสธที่จะเชื่อมต่อกับใบรับรองดังกล่าวตามค่าเริ่มต้น
การตั้งค่าตัวแปรสภาพแวดล้อม NODE_TLS_REJECT_UNAUTHORIZED
เป็น 0
จะสั่งให้ Lookerbot ยอมรับการเชื่อมต่อกับใบรับรองที่ไม่ถูกต้อง โปรดตรวจสอบให้แน่ใจว่าคุณได้ประเมินผลกระทบด้านความปลอดภัยของการดำเนินการนี้สำหรับโครงสร้างพื้นฐานของคุณอย่างละเอียดก่อนที่จะตั้งค่าตัวแปรนี้
สิ่งนี้จะส่งผลต่อการปรับใช้ Looker ภายในองค์กรเท่านั้น อย่าตั้งค่าตัวแปรสภาพแวดล้อมนี้หาก Looker โฮสต์อินสแตนซ์ของคุณ
หากคุณต้องการให้บอทเชื่อมต่อกับ Looker หลายอินสแตนซ์ คุณสามารถกำหนดค่าบอทด้วยตัวแปรสภาพแวดล้อม LOOKERS
ได้ ตัวแปรนี้ควรเป็นอาร์เรย์ JSON ของออบเจ็กต์ JSON โดยแต่ละรายการเป็นตัวแทนของอินสแตนซ์ Looker และข้อมูลการตรวจสอบสิทธิ์
ออบเจ็กต์ JSON ควรมีคีย์ต่อไปนี้:
url
ควรเป็น URL เว็บของอินสแตนซ์apiBaseUrl
ควรเป็นจุดสิ้นสุดของ APIclientID
ควรเป็น ID ไคลเอ็นต์ API สำหรับผู้ใช้ที่คุณต้องการให้บอททำงานclientSecret
ควรเป็นความลับสำหรับคีย์ API นั้นcustomCommandFolderId
เป็นพารามิเตอร์ทางเลือก ซึ่งแสดงถึงโฟลเดอร์ที่คุณต้องการให้บอตใช้เพื่อกำหนดคำสั่งที่กำหนดเองwebhookToken
เป็นพารามิเตอร์ทางเลือก เป็นโทเค็นการตรวจสอบความถูกต้องของเว็บฮุคที่พบในแผงผู้ดูแลระบบของ Looker สิ่งนี้จำเป็นเฉพาะในกรณีที่คุณใช้บ็อตเพื่อส่ง Webhook ที่กำหนดเวลาไว้นี่คือตัวอย่าง JSON ที่เชื่อมต่อกับอินสแตนซ์ Looker สองรายการ:
[{ "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
ที่รวมไว้จะช่วยให้คุณสามารถเรียกใช้แอปโดยใช้โฟร์แมนหรือโหนดโฟร์แมนได้ ไลบรารีเหล่านี้ยังจัดเตรียมวิธีง่ายๆ ในการสร้างสคริปต์เพื่อใช้กับ upstart
, supervisord
และ systemd
ไม่จำเป็นต้องใช้คำสั่ง Slash เพื่อโต้ตอบกับบอท คุณสามารถ DM บอทได้โดยตรงหรือพูดถึงบอทเช่น:
@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 templating ในคำจำกัดความของการดำเนินการเพื่อจำกัดการเข้าถึงสำหรับผู้ใช้บางราย อีกทางหนึ่ง คุณสามารถปิดใช้งานปุ่มการดำเนินการทั้งหมดได้ด้วยตัวแปรการกำหนดค่าบอท LOOKERBOT_DATA_ACTIONS_IN_MESSAGES
มีการกำหนดค่าเพิ่มเติมอย่างรวดเร็วซึ่งจำเป็นต่อการใช้ Data Actions จาก 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 "
}
}
}
เราขอแนะนำให้สร้างผู้ใช้ Looker API สำหรับ Lookerbot โดยเฉพาะ และใช้ข้อมูลรับรอง API ของผู้ใช้รายนั้น โปรดทราบว่า ทุกคนที่สามารถพูดคุยกับ Lookerbot ของคุณได้นั้นได้รับอนุญาตจากผู้ใช้รายนี้ หากมีข้อมูลที่คุณไม่ต้องการให้ผู้อื่นเข้าถึงผ่าน Slack ตรวจสอบให้แน่ใจว่าผู้ใช้ไม่สามารถเข้าถึงได้โดยใช้กลไกการอนุญาตของ Looker
นอกจากนี้ โปรดทราบว่าเมื่อบอต Looker ตอบคำถามใน Slack ข้อมูลผลลัพธ์จะย้ายไปยัง Slack และขณะนี้จะโฮสต์อยู่ที่นั่น โปรดพิจารณาอย่างรอบคอบว่าข้อมูลใดบ้างที่ได้รับอนุญาตให้ออกจาก Looker Slack จะเก็บประวัติข้อความแชทไว้บนเซิร์ฟเวอร์และส่งออกการแจ้งเตือนหลายประเภทเกี่ยวกับข้อความผ่านบริการอื่น ๆ
เพื่อให้การแสดงภาพปรากฏใน Slack หากกำหนดค่าให้ทำเช่นนั้น บอทจะอัปโหลดเป็นรูปภาพไปยัง Amazon S3 พร้อมด้วย URL ที่สร้างขึ้นแบบสุ่มที่ยาวมาก ใครก็ตามที่มี URL นี้สามารถเข้าถึงรูปภาพนั้นได้ตลอดเวลา แม้ว่าจะคาดเดาได้ยากก็ตาม
หากคุณเลือกที่จะลบไฟล์รูปภาพออกจาก S3 ข้อความ Slack ที่ใช้รูปภาพเหล่านั้นจะว่างเปล่า
.env
ที่ฐานของ repoyarn install
yarn start
ยินดีรับคำขอดึง - เรายินดีที่จะช่วยขยายฟังก์ชันการทำงานของบอท
หากคุณมีปัญหากับบอท โปรดเปิดปัญหาเพื่อให้เราสามารถช่วยเหลือคุณได้!