Slack Connector

เชื่อมต่อ Slack workspace กับ Brevo ผ่าน Tajo สำหรับการแจ้งเตือนทางการตลาดแบบเรียลไทม์ การแจ้งเตือนทีมงานเกี่ยวกับเหตุการณ์ลูกค้า และระบบอัตโนมัติเวิร์กโฟลว์ที่ทริกเกอร์จากการโต้ตอบ Slack

ภาพรวม

คุณสมบัติค่า
แพลตฟอร์มSlack
หมวดหมู่การผสานรวมแบบกำหนดเอง
ความซับซ้อนในการตั้งค่าง่าย
การผสานรวมอย่างเป็นทางการใช่
ข้อมูลที่ซิงค์ผู้ใช้ Channels ข้อความ เหตุการณ์
API Base URLhttps://slack.com/api

ฟีเจอร์

  • การแจ้งเตือนทางการตลาด - ส่งการแจ้งเตือนแบบเรียลไทม์สำหรับเหตุการณ์แคมเปญ สมาชิกใหม่ และ revenue milestones
  • การแจ้งเตือนเหตุการณ์ลูกค้า - แจ้งทีมงานเกี่ยวกับการกระทำของลูกค้าที่มีมูลค่าสูงจาก Brevo
  • ทริกเกอร์เวิร์กโฟลว์ - ใช้การโต้ตอบ Slack (คลิกปุ่ม การส่งฟอร์ม) เพื่อทริกเกอร์ระบบอัตโนมัติ Brevo
  • การกำหนดเส้นทางตาม channel - กำหนดเส้นทางการแจ้งเตือนไปยัง channels ที่เฉพาะเจาะจงตามประเภทเหตุการณ์หรือ customer segment
  • การซิงค์ผู้ใช้ - แมปผู้ใช้ Slack workspace กับผู้ติดต่อ Brevo สำหรับการสื่อสารภายใน
  • ข้อความโต้ตอบ - ส่งข้อความที่สมบูรณ์พร้อมปุ่มและการกระทำสำหรับเวิร์กโฟลว์ทีม
  • ข้อความตามกำหนดเวลา - กำหนดเวลาการแจ้งเตือนสำหรับสรุปการตลาดรายวัน/รายสัปดาห์
  • รองรับ Thread - จัดกลุ่มการแจ้งเตือนที่เกี่ยวข้องใน threads เพื่อการสื่อสารที่เป็นระเบียบ

ข้อกำหนดเบื้องต้น

ก่อนเริ่มต้น ตรวจสอบให้แน่ใจว่าคุณมี:

  1. Slack workspace ที่มีสิทธิ์ผู้ดูแลระบบ
  2. Slack app ที่สร้างที่ api.slack.com/apps
  3. Bot token ที่มี scopes ที่จำเป็น
  4. บัญชี Brevo ที่มีสิทธิ์เข้าถึง API
  5. บัญชี Tajo

การยืนยันตัวตน

Bot Token (แนะนำ)

ติดตั้ง Slack app ในพื้นที่ทำงานของคุณและใช้ bot token สำหรับการเข้าถึง API

  1. สร้าง app ที่ api.slack.com/apps
  2. เพิ่ม OAuth scopes ที่จำเป็นใต้ “OAuth & Permissions”
  3. ติดตั้ง app ในพื้นที่ทำงาน
  4. คัดลอก Bot User OAuth Token (xoxb-...)
Terminal window
curl -X POST "https://slack.com/api/chat.postMessage" \
-H "Authorization: Bearer xoxb-YOUR-BOT-TOKEN" \
-H "Content-Type: application/json" \
-d '{"channel": "C01234567", "text": "Hello from Tajo!"}'

OAuth 2.0

สำหรับการแจกจ่าย Slack integration ของคุณไปยังหลาย workspaces:

Terminal window
# Authorization URL
https://slack.com/oauth/v2/authorize?
client_id={client_id}&
scope=chat:write,channels:read,users:read&
redirect_uri={redirect_uri}
# Token exchange
curl -X POST "https://slack.com/api/oauth.v2.access" \
-d "client_id={client_id}" \
-d "client_secret={client_secret}" \
-d "code={auth_code}"

Bot Scopes ที่จำเป็น

chat:write # Send messages
channels:read # List channels
channels:history # Read channel messages
users:read # List workspace users
users:read.email # Read user email addresses
reactions:write # Add reactions to messages
files:write # Upload files

การเข้าถึงอีเมลผู้ใช้

scope users:read.email จำเป็นสำหรับการจับคู่ผู้ใช้ Slack กับผู้ติดต่อ Brevo หากไม่มี การแมปผู้ใช้จะจำกัดเพียง display names

การกำหนดค่า

การตั้งค่าพื้นฐาน

connectors:
slack:
enabled: true
bot_token: "${SLACK_BOT_TOKEN}"
signing_secret: "${SLACK_SIGNING_SECRET}"
# Notification channels
channels:
marketing: "C01234567"
sales: "C01234568"
support: "C01234569"
alerts: "C01234570"
# Event routing
notifications:
new_subscriber:
channel: marketing
template: subscriber_alert
high_value_order:
channel: sales
template: order_alert
support_ticket:
channel: support
template: ticket_alert

การแมปฟิลด์

แมปข้อมูลผู้ใช้ Slack กับแอตทริบิวต์ผู้ติดต่อ Brevo:

การแมปค่าเริ่มต้น

Parameter Type Description
profile.email required
string

อีเมลผู้ใช้ (ตัวระบุที่ไม่ซ้ำกันสำหรับการจับคู่ Brevo)

real_name optional
string

ชื่อเต็ม แยกเป็น FIRSTNAME/LASTNAME

profile.phone optional
string

แมปกับแอตทริบิวต์ SMS

profile.title optional
string

ตำแหน่งงาน

tz optional
string

เขตเวลาของผู้ใช้

is_admin optional
boolean

สถานะผู้ดูแลระบบ workspace

team_id optional
string

Team ID ของ workspace

status_text optional
string

สถานะที่กำหนดเองของผู้ใช้

เมธอด API

การส่งข้อความ

เมธอดEndpointคำอธิบาย
POSTchat.postMessageส่งข้อความไปยัง channel
POSTchat.updateอัปเดตข้อความที่มีอยู่
POSTchat.deleteลบข้อความ
POSTchat.scheduleMessageกำหนดเวลาข้อความ
POSTchat.postEphemeralส่งข้อความ ephemeral ให้ผู้ใช้

Channels

เมธอดEndpointคำอธิบาย
GETconversations.listแสดงรายการ channels
GETconversations.infoดูข้อมูล channel
GETconversations.membersแสดงรายการสมาชิก channel
GETconversations.historyดูข้อความ channel

ผู้ใช้

เมธอดEndpointคำอธิบาย
GETusers.listแสดงรายการผู้ใช้ workspace
GETusers.infoดูข้อมูลผู้ใช้
GETusers.lookupByEmailค้นหาผู้ใช้ตามอีเมล
GETusers.conversationsแสดงรายการ channels ของผู้ใช้

การโต้ตอบ

เมธอดEndpointคำอธิบาย
POSTviews.openเปิด modal view
POSTviews.updateอัปเดต modal view
POSTreactions.addเพิ่ม emoji reaction

เหตุการณ์

การแจ้งเตือน Brevo ไปยัง Slack

เหตุการณ์ทริกเกอร์การกระทำ Slack
new_subscriberผู้ติดต่อถูกสร้างใน Brevoโพสต์ไปยัง #marketing
campaign_sentส่งแคมเปญอีเมลโพสต์สรุปไปยัง #marketing
order_placedตรวจพบคำสั่งซื้อมูลค่าสูงโพสต์ไปยัง #sales พร้อมรายละเอียด
cart_abandonedตะกร้าถูกละทิ้ง 30 นาทีโพสต์ไปยัง #sales สำหรับติดตาม
ticket_createdเปิดตั๋วสนับสนุนโพสต์ไปยัง #support
unsubscribedผู้ติดต่อยกเลิกการสมัครโพสต์การแจ้งเตือนไปยัง #marketing

ทริกเกอร์ Slack ไปยัง Brevo

เหตุการณ์ Slackทริกเกอร์การกระทำ Brevo
message_actionCustom message shortcutเพิ่มผู้ติดต่อในรายการหรือทริกเกอร์ระบบอัตโนมัติ
block_actionsคลิกปุ่มในข้อความอัปเดตแอตทริบิวต์ผู้ติดต่อหรือส่งอีเมล
view_submissionส่งฟอร์ม Modalสร้างผู้ติดต่อหรือทริกเกอร์เวิร์กโฟลว์

ตัวอย่างโค้ด

เริ่มต้น Connector

import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({
apiKey: process.env.TAJO_API_KEY,
brevoApiKey: process.env.BREVO_API_KEY
});
// Connect Slack
await tajo.connectors.connect('slack', {
botToken: process.env.SLACK_BOT_TOKEN,
signingSecret: process.env.SLACK_SIGNING_SECRET
});

ส่งการแจ้งเตือนทางการตลาด

// Send a notification when a high-value order is placed
await tajo.slack.notify({
channel: 'sales',
event: 'order_placed',
data: {
customerEmail: '[email protected]',
orderValue: '$1,250.00',
products: ['Premium Widget', 'Pro Service'],
isFirstOrder: true
},
template: {
blocks: [
{
type: 'header',
text: { type: 'plain_text', text: 'New High-Value Order' }
},
{
type: 'section',
fields: [
{ type: 'mrkdwn', text: '*Customer:*\n[email protected]' },
{ type: 'mrkdwn', text: '*Amount:*\n$1,250.00' }
]
},
{
type: 'actions',
elements: [
{
type: 'button',
text: { type: 'plain_text', text: 'View in Brevo' },
url: 'https://app.brevo.com/contacts'
}
]
}
]
}
});

จัดการการโต้ตอบ Slack

import crypto from 'crypto';
app.post('/slack/interactions', async (req, res) => {
// Verify Slack request signature
const timestamp = req.headers['x-slack-request-timestamp'];
const signature = req.headers['x-slack-signature'];
const sigBasestring = `v0:${timestamp}:${req.rawBody}`;
const mySignature = 'v0=' + crypto
.createHmac('sha256', process.env.SLACK_SIGNING_SECRET)
.update(sigBasestring)
.digest('hex');
if (signature !== mySignature) {
return res.status(401).send('Unauthorized');
}
const payload = JSON.parse(req.body.payload);
// Handle button actions
if (payload.type === 'block_actions') {
await tajo.connectors.handleWebhook('slack', {
type: 'interaction',
action: payload.actions[0].action_id,
userId: payload.user.id,
payload
});
}
res.status(200).send();
});

ขีดจำกัดอัตรา

Slack API rate limits ใช้ระบบหลายระดับ:

ระดับขีดจำกัดเมธอดทั่วไป
Tier 11 คำขอ/นาทีchat.delete, conversations.kick
Tier 220 คำขอ/นาทีconversations.history, users.info
Tier 350 คำขอ/นาทีconversations.list, users.list
Tier 4100 คำขอ/นาทีchat.postMessage
พิเศษแตกต่างกันchat.postMessage ไปยัง channel เดียวกัน: 1/วินาที

ขีดจำกัดเพิ่มเติม:

  • Web API: Burst limit พร้อม short-term throttle
  • Events API: ลองส่งซ้ำ 3 ครั้ง
  • Incoming Webhooks: 1 ข้อความ/วินาทีต่อ webhook URL
  • Block Kit: สูงสุด 50 blocks ต่อข้อความ

อัตราการโพสต์ใน Channel

การโพสต์ไปยัง channel เดียวกันจำกัดประมาณ 1 ข้อความต่อวินาที Batch การแจ้งเตือนหรือใช้ threads เพื่อหลีกเลี่ยงการถูกจำกัดอัตรา

การแก้ไขปัญหา

ปัญหาทั่วไป

ปัญหาสาเหตุวิธีแก้
not_authedBot token ไม่ถูกต้องติดตั้ง app ใหม่และคัดลอก bot token ใหม่
channel_not_foundBot ไม่ได้อยู่ใน channelเชิญ bot เข้า channel เป้าหมาย
missing_scopeไม่ได้รับ scope ที่จำเป็นเพิ่ม scope และติดตั้ง app ใหม่
ไม่ได้รับเหตุการณ์ไม่ได้ตั้งค่า Event subscriptionกำหนดค่า URL Event Subscriptions
หมดเวลาการโต้ตอบการตอบสนองนาน >3 วินาทีตอบด้วย 200 ทันที ประมวลผลแบบ async

โหมด Debug

เปิดใช้งาน verbose logging:

connectors:
slack:
debug: true
log_level: verbose
log_events: true

ทดสอบการเชื่อมต่อ

Terminal window
tajo connectors test slack
# ✓ Bot token valid
# ✓ Workspace accessible
# ✓ Channels readable
# ✓ Message posting enabled
# ✓ Event subscriptions active

แนวทางปฏิบัติที่ดีที่สุด

  1. ใช้ Block Kit - สร้างข้อความที่สมบูรณ์และโต้ตอบได้ด้วย Block Kit framework ของ Slack
  2. ตอบสนองอย่างรวดเร็ว - ยืนยันการโต้ตอบภายใน 3 วินาที ประมวลผลแบบ asynchronous
  3. จัดกลุ่มข้อความที่เกี่ยวข้องใน threads - จัดกลุ่มการแจ้งเตือนที่เกี่ยวข้องใน threads เพื่อลด noise
  4. กำหนดเส้นทางตาม channel - ส่งประเภทเหตุการณ์ที่แตกต่างกันไปยัง channels ของทีมที่เหมาะสม
  5. รวมปุ่มการกระทำ - เพิ่มปุ่ม “View in Brevo” สำหรับการเข้าถึงข้อมูลลูกค้าอย่างรวดเร็ว
  6. ใช้ unfurling - แสดงตัวอย่าง rich previews สำหรับลิงก์ Brevo ที่แชร์ใน Slack

ความปลอดภัย

  • Bot Token - OAuth-scoped access token พร้อมสิทธิ์แบบละเอียด
  • การตรวจสอบลายเซ็นคำขอ - HMAC SHA-256 signature verification สำหรับคำขอขาเข้า
  • OAuth 2.0 - การอนุญาตมาตรฐานอุตสาหกรรมสำหรับการแจกจ่ายหลาย workspace
  • การเข้ารหัส TLS - การสื่อสาร API ทั้งหมดเข้ารหัสผ่าน HTTPS
  • การหมุนเวียน token - การหมุนเวียน token อัตโนมัติสำหรับความปลอดภัยที่เพิ่มขึ้น

แหล่งข้อมูลที่เกี่ยวข้อง

Subscribe to updates

developer-docs

Drop your email or phone number — we'll send you what matters next.

auto-detect
ผู้ช่วย AI

สวัสดี! ถามฉันเกี่ยวกับเอกสารได้เลย