Slack Bağlayıcısı
Gerçek zamanlı pazarlama bildirimleri, müşteri olaylarına ilişkin ekip uyarıları ve Slack etkileşimleriyle tetiklenen iş akışı otomasyonu için Slack çalışma alanınızı Tajo üzerinden Brevo’ya bağlayın.
Genel Bakış
| Özellik | Değer |
|---|---|
| Platform | Slack |
| Kategori | Özel Entegrasyon |
| Kurulum Karmaşıklığı | Kolay |
| Resmi Entegrasyon | Evet |
| Senkronize Edilen Veri | Kullanıcılar, Kanallar, Mesajlar, Olaylar |
| API Temel URL | https://slack.com/api |
Özellikler
- Pazarlama uyarıları - Kampanya olayları, yeni aboneler ve gelir kilometre taşları için gerçek zamanlı bildirimler gönderin
- Müşteri olay bildirimleri - Brevo’dan yüksek değerli müşteri eylemleri hakkında ekipleri uyarın
- İş akışı tetikleyicileri - Brevo otomasyonlarını tetiklemek için Slack etkileşimlerini (düğme tıklamaları, form gönderimleri) kullanın
- Kanal tabanlı yönlendirme - Olay türüne veya müşteri segmentine göre bildirimleri belirli kanallara yönlendirin
- Kullanıcı senkronizasyonu - Dahili iletişim için Slack çalışma alanı kullanıcılarını Brevo kişileriyle eşleştirin
- Etkileşimli mesajlar - Ekip iş akışları için düğmeler ve eylemler içeren zengin mesajlar gönderin
- Planlı mesajlar - Günlük/haftalık pazarlama özetleri için bildirimler planlayın
- İş parçacığı desteği - Düzenli iletişim için ilgili bildirimleri iş parçacıklarında gruplayın
Ön Koşullar
Başlamadan önce şunlara sahip olduğunuzdan emin olun:
- Yönetici erişimi olan bir Slack çalışma alanı
- api.slack.com/apps adresinde oluşturulmuş bir Slack uygulaması
- Gerekli kapsamları olan bir bot belirteci
- API erişimi olan bir Brevo hesabı
- Bir Tajo hesabı
Kimlik Doğrulama
Bot Belirteci (Önerilen)
Slack uygulamasını çalışma alanınıza yükleyin ve API erişimi için bot belirtecini kullanın.
- api.slack.com/apps adresinde uygulama oluşturun
- “OAuth & Permissions” altında gerekli OAuth kapsamlarını ekleyin
- Uygulamayı çalışma alanına yükleyin
- Bot User OAuth Token’ı kopyalayın (
xoxb-...)
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 entegrasyonunuzu birden fazla çalışma alanına dağıtmak için:
# Yetkilendirme URL'sihttps://slack.com/oauth/v2/authorize? client_id={client_id}& scope=chat:write,channels:read,users:read& redirect_uri={redirect_uri}
# Belirteç değişimicurl -X POST "https://slack.com/api/oauth.v2.access" \ -d "client_id={client_id}" \ -d "client_secret={client_secret}" \ -d "code={auth_code}"Gerekli Bot Kapsamları
chat:write # Mesaj gönderchannels:read # Kanalları listelechannels:history # Kanal mesajlarını okuusers:read # Çalışma alanı kullanıcılarını listeleusers:read.email # Kullanıcı e-posta adreslerini okureactions:write # Mesajlara tepki eklefiles:write # Dosya yükleKullanıcı E-posta Erişimi
users:read.email kapsamı, Slack kullanıcılarını Brevo kişileriyle eşleştirmek için gereklidir. Bu kapsam olmadan kullanıcı eşleştirme yalnızca görünen adlarla sınırlı olacaktır.
Yapılandırma
Temel Kurulum
connectors: slack: enabled: true bot_token: "${SLACK_BOT_TOKEN}" signing_secret: "${SLACK_SIGNING_SECRET}"
# Bildirim kanalları channels: marketing: "C01234567" sales: "C01234568" support: "C01234569" alerts: "C01234570"
# Olay yönlendirme notifications: new_subscriber: channel: marketing template: subscriber_alert high_value_order: channel: sales template: order_alert support_ticket: channel: support template: ticket_alertAlan Eşleştirme
Slack kullanıcı verilerini Brevo kişi özniteliklerine eşleyin:
Varsayılan Eşleştirmeler
| Parameter | Type | Description |
|---|---|---|
profile.email required | string | Kullanıcı e-postası (Brevo eşleştirmesi için benzersiz tanımlayıcı) |
real_name optional | string | Tam ad, FIRSTNAME/LASTNAME olarak bölünür |
profile.phone optional | string | SMS özniteliğine eşlenir |
profile.title optional | string | İş unvanı |
tz optional | string | Kullanıcı saat dilimi |
is_admin optional | boolean | Çalışma alanı yönetici durumu |
team_id optional | string | Çalışma alanı takım kimliği |
status_text optional | string | Kullanıcı özel durumu |
API Yöntemleri
Mesajlaşma
| Yöntem | Uç Nokta | Açıklama |
|---|---|---|
POST | chat.postMessage | Bir kanala mesaj gönder |
POST | chat.update | Mevcut bir mesajı güncelle |
POST | chat.delete | Bir mesajı sil |
POST | chat.scheduleMessage | Bir mesaj planla |
POST | chat.postEphemeral | Kullanıcıya geçici mesaj gönder |
Kanallar
| Yöntem | Uç Nokta | Açıklama |
|---|---|---|
GET | conversations.list | Kanalları listele |
GET | conversations.info | Kanal bilgisini al |
GET | conversations.members | Kanal üyelerini listele |
GET | conversations.history | Kanal mesajlarını al |
Kullanıcılar
| Yöntem | Uç Nokta | Açıklama |
|---|---|---|
GET | users.list | Çalışma alanı kullanıcılarını listele |
GET | users.info | Kullanıcı bilgisini al |
GET | users.lookupByEmail | E-posta ile kullanıcı bul |
GET | users.conversations | Kullanıcı kanallarını listele |
Etkileşimler
| Yöntem | Uç Nokta | Açıklama |
|---|---|---|
POST | views.open | Bir modal görünüm aç |
POST | views.update | Bir modal görünümü güncelle |
POST | reactions.add | Emoji tepkisi ekle |
Olaylar
Brevo’dan Slack’e Bildirimler
| Olay | Tetikleyici | Slack Eylemi |
|---|---|---|
new_subscriber | Brevo’da kişi oluşturuldu | #marketing’e gönder |
campaign_sent | E-posta kampanyası gönderildi | Özet #marketing’e gönder |
order_placed | Yüksek değerli sipariş algılandı | Ayrıntılarla #sales’e gönder |
cart_abandoned | Sepet 30 dk terk edildi | Takip için #sales’e gönder |
ticket_created | Destek bileti açıldı | #support’a gönder |
unsubscribed | Kişi aboneliği iptal etti | #marketing’e uyarı gönder |
Slack’ten Brevo’ya Tetikleyiciler
| Slack Olayı | Tetikleyici | Brevo Eylemi |
|---|---|---|
message_action | Özel mesaj kısayolu | Kişiyi listeye ekle veya otomasyon tetikle |
block_actions | Mesajda düğme tıklaması | Kişi özniteliğini güncelle veya e-posta gönder |
view_submission | Modal form gönderildi | Kişi oluştur veya iş akışı tetikle |
Kod Örnekleri
Bağlayıcıyı Başlatma
import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({ apiKey: process.env.TAJO_API_KEY, brevoApiKey: process.env.BREVO_API_KEY});
// Slack'i bağlaawait tajo.connectors.connect('slack', { botToken: process.env.SLACK_BOT_TOKEN, signingSecret: process.env.SLACK_SIGNING_SECRET});Pazarlama Bildirimleri Gönderme
// Yüksek değerli bir sipariş verildiğinde bildirim gönderawait tajo.slack.notify({ channel: 'sales', event: 'order_placed', data: { 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: '*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 Etkileşimlerini İşleme
import crypto from 'crypto';
app.post('/slack/interactions', async (req, res) => { // Slack istek imzasını doğrula 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);
// Düğme eylemlerini işle 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();});Hız Sınırları
Slack API hız sınırları katmanlı bir sistem kullanır:
| Katman | Sınır | Yaygın Yöntemler |
|---|---|---|
| Katman 1 | dakikada 1 istek | chat.delete, conversations.kick |
| Katman 2 | dakikada 20 istek | conversations.history, users.info |
| Katman 3 | dakikada 50 istek | conversations.list, users.list |
| Katman 4 | dakikada 100 istek | chat.postMessage |
| Özel | Değişir | Aynı kanala chat.postMessage: saniyede 1 |
Ek sınırlar:
- Web API: Kısa süreli kısıtlamayla patlama sınırı
- Events API: 3 denemeye kadar teslimat yeniden denemeleri
- Incoming Webhooks: Webhook URL’si başına saniyede 1 mesaj
- Block Kit: Mesaj başına maksimum 50 blok
Kanal Gönderme Oranı
Aynı kanala gönderim yaklaşık olarak saniyede 1 mesajla sınırlıdır. Hız sınırlamasını önlemek için bildirimleri toplu işleyin veya iş parçacıkları kullanın.
Sorun Giderme
Yaygın Sorunlar
| Sorun | Neden | Çözüm |
|---|---|---|
not_authed | Geçersiz bot belirteci | Uygulamayı yeniden yükleyin ve yeni bot belirtecini kopyalayın |
channel_not_found | Bot kanalda değil | Botu hedef kanala davet edin |
missing_scope | Gerekli kapsam verilmemiş | Kapsamı ekleyin ve uygulamayı yeniden yükleyin |
| Olay alınmıyor | Olay aboneliği ayarlanmamış | Event Subscriptions URL’sini yapılandırın |
| Etkileşim zaman aşımı | Yanıt >3 saniye | Hemen 200 ile yanıt verin, eşzamansız işleyin |
Hata Ayıklama Modu
Ayrıntılı günlük kaydını etkinleştirin:
connectors: slack: debug: true log_level: verbose log_events: trueBağlantı Testi
tajo connectors test slack# ✓ Bot belirteci geçerli# ✓ Çalışma alanı erişilebilir# ✓ Kanallar okunabilir# ✓ Mesaj gönderme etkin# ✓ Olay abonelikleri aktifEn İyi Uygulamalar
- Block Kit kullanın - Slack’in Block Kit çerçevesiyle zengin, etkileşimli mesajlar oluşturun
- Hızlı yanıt verin - Etkileşimleri 3 saniye içinde onaylayın, eşzamansız işleyin
- İlgili mesajları iş parçacığına alın - Gürültüyü azaltmak için ilgili bildirimleri iş parçacıklarında gruplayın
- Kanala göre yönlendirin - Farklı olay türlerini uygun ekip kanallarına gönderin
- Eylem düğmeleri ekleyin - Müşteri verilerine hızlı erişim için “View in Brevo” düğmeleri ekleyin
- Açılımı uygulayın - Slack’te paylaşılan Brevo bağlantıları için zengin önizlemeler gösterin
Güvenlik
- Bot Belirteci - Ayrıntılı izinlere sahip OAuth kapsamlı erişim belirteci
- İstek imzalama - Gelen istekler için HMAC SHA-256 imza doğrulaması
- OAuth 2.0 - Çoklu çalışma alanı dağıtımı için endüstri standardı yetkilendirme
- TLS şifreleme - Tüm API iletişimi HTTPS ile şifrelenir
- Belirteç rotasyonu - Gelişmiş güvenlik için otomatik belirteç rotasyonu