Slack entegrasyonunu kurma
Bu kılavuz, Slack’i bir Control Center çalışma alanına nasıl bağlayacağınızı gösterir: uygulamayı Control Center’ın oluşturmasına izin vererek ya da uygulamayı kendiniz oluşturarak.
Rehberli bir ilk deneme için bkz. Slack’i çalışma alanınıza bağlayın.
Önkoşullar
Bölüm başlığı “Önkoşullar”- Control Center çalışma alanında
ownerveyaadminrolü — bir sohbet uygulaması bağlamak, çalışma alanı ayarlarında bir değişikliktir - Slack çalışma alanında uygulama oluşturma ve yükleme izni
- Genel erişime açık hiçbir şey gerekmez: bağlantı dışa doğrudur (Socket Mode), bu yüzden sunucunun gelen bağlantı noktasına, tünele veya alan adına ihtiyacı yoktur
Uygulamayı edinmenin üç yolu
Bölüm başlığı “Uygulamayı edinmenin üç yolu”| Yol | Sizin sağladığınız | Control Center’ın yaptığı |
|---|---|---|
| Rehberli | Bir uygulama yapılandırma jetonu (xoxe-…) |
Uygulamayı doğru kapsamlarla, olaylarla, Socket Mode ile ve slash komutuyla oluşturur; Slack’in API’sinin olmadığı iki adımı size bırakır |
| Slack içinde oluştur | Hiçbir şey | Slack’i aynı yapılandırma önceden doldurulmuş halde açar; bir çalışma alanı seçip onaylarsınız |
| Elle | Bitmiş uygulamanın token’ları | Bunları doğrular ve bağlanır |
Rehberli yol, uygulamayı Control Center’dan yönetilebilir bırakan tek yoldur; Sohbet botunu özelleştirme bağlantısını mümkün kılan da budur. Slack içinde oluştur ile yapılmış bir uygulama, bağlantı iletişim kutusuna bir yapılandırma jetonu yapıştırılarak daha sonra yönetilen bir uygulamaya yükseltilebilir.
Bilinçli olarak “Control Center’ın Slack uygulamasını yükle” diye bir düğme yoktur. Dağıtılmış bir Slack uygulamasını yüklemek paylaşılan bir istemci sırrı gerektirir (Slack’te PKCE yoktur) ve Socket Mode, bir uygulamanın olaylarını bağlantıları arasında rastgele dağıtır — yani tek bir paylaşılan uygulama, çalışma alanınızın iletilerini başka kişilerin sunucularına iletirdi. Bu yüzden her çalışma alanı kendi uygulamasına sahiptir ve bu üç yol, bunun size ne kadar az iş çıkardığıyla ilgilidir.
Seçenek A: uygulamayı Control Center oluştursun
Bölüm başlığı “Seçenek A: uygulamayı Control Center oluştursun”- api.slack.com/apps adresinde bir uygulama yapılandırma jeton çifti oluşturun ve yenileme jetonunu (
xoxe-…) kopyalayın - Control Center’da Ayarlar → Çalışma alanı → Genel bölümüne gidin ve Sohbet köprüleri kartına kaydırın
- Slack bloğunda Uygulamayı benim için oluştur’a tıklayın
- Jetonu yapıştırın, uygulama adını, bot adını, açıklamaları ve slash komutunu ayarlayın, ardından Uygulama oluştur’a tıklayın
- İletişim kutusunun gösterdiği iki kalan adımı izleyin; her biri Slack’e açılan bir bağlantıdır:
- Basic Information → App-Level Tokens:
connections:writekapsamıyla bir jeton oluşturun (xapp-…) - Install App: çalışma alanına yükleyin ve Bot User OAuth Token’ı (
xoxb-…) kopyalayın
- Basic Information → App-Level Tokens:
- Kimlik bilgilerini yapıştır’a tıklayın ve Bağlan ile devam edin
Yapılandırma jetonu her kullanımda rotasyona uğrar. Control Center rotasyona uğramış değeri ilerledikçe saklar, böylece onu bir daha yapıştırmanız gerekmez.
Seçenek B: Slack içinde önceden doldurulmuş olarak oluşturun
Bölüm başlığı “Seçenek B: Slack içinde önceden doldurulmuş olarak oluşturun”Aynı uygulama, yapılandırma jetonu yok — Slack kendi oluşturma ekranını, manifestin tamamı önceden doldurulmuş halde sunar.
- Control Center’da Ayarlar → Çalışma alanı → Genel bölümüne gidin ve Sohbet köprüleri kartına kaydırın
- Slack bloğunda Uygulamayı benim için oluştur’a tıklayın
- Uygulama adını, bot adını, açıklamaları ve slash komutunu ayarlayın — bunlar bağlantıyla birlikte taşınır
- Slack içinde oluştur’a tıklayın. Tarayıcınız, yapılandırma önceden doldurulmuş olarak Slack’in uygulama oluşturma sayfasını açar
- Slack çalışma alanını seçin ve onaylayın. Kapsamlar, olaylar, Socket Mode ve slash komutu zaten doğrudur
- Control Center’a döndüğünüzde, iletişim kutusunun gösterdiği iki kalan adımı izleyin:
- Basic Information → App-Level Tokens:
connections:writekapsamıyla bir jeton oluşturun (xapp-…) - Install App: çalışma alanına yükleyin ve Bot User OAuth Token’ı (
xoxb-…) kopyalayın
- Basic Information → App-Level Tokens:
- Kimlik bilgilerini yapıştır’a tıklayın ve Bağlan ile devam edin
Slack hangi uygulamayı oluşturduğunu bildirmez, bu yüzden Control Center uygulama kimliğini öğrenemez ve 6. adımdaki bağlantılar doğrudan o uygulamaya değil, uygulama listenize gider. Botu özelleştir için bir yapılandırma jetonu gerekir.
Seçenek C: uygulamayı kendiniz oluşturun
Bölüm başlığı “Seçenek C: uygulamayı kendiniz oluşturun”api.slack.com/apps adresinde bir uygulama oluşturun, ardından aşağıdaki gibi ayarlayın.
Socket Mode: etkinleştirin ve her istek URL’sini boş bırakın. Slack, hem Socket Mode hem de webhook teslimi isteyen bir manifesti reddeder.
Bot token kapsamları (OAuth & Permissions):
app_mentions:readassistant:writechannels:historychat:writecommandsgroups:historyim:historyusers:readusers:read.emailOlay abonelikleri (bot olayları):
app_home_openedapp_mentionmessage.channelsmessage.groupsmessage.immessage.channels ve message.groups, zaten köprülenmiş bir Slack dizisi içindeki bir yanıtın çalışmasını sağlar. Bunlar olmadan yalnızca ilk etiketleme ulaşır.
Slash komutu: /cc (herhangi bir ad işe yarar — köprü, en son hangi komutla çağrıldıysa onu kullanır).
App Home: Messages sekmesini etkinleştirin ve yazılabilir bırakın, böylece üyeler bota DM gönderebilir.
Token’lar: connections:write ile bir uygulama düzeyi token oluşturun, ardından uygulamayı yükleyin ve bot kullanıcı OAuth token’ını kopyalayın.
Bağlan
Bölüm başlığı “Bağlan”- Ayarlar → Çalışma alanı → Genel bölümüne gidin ve Sohbet köprüleri kartına kaydırın
- Slack bloğunda Slack bağla’ya tıklayın
- Alanları doldurun:
| Alan | Değer | Slack’te bulunduğu yer |
|---|---|---|
| Bot kullanıcı OAuth token’ı | xoxb-… |
OAuth & Permissions → Bot User OAuth Token |
| Uygulama düzeyi token | xapp-… |
Basic Information → App-Level Tokens (connections:write) |
| Uygulama yapılandırma yenileme jetonu (isteğe bağlı) | xoxe-… |
api.slack.com/apps üzerindeki uygulama yapılandırma jeton çifti |
Her değerin ön eki, herhangi bir şey gönderilmeden önce iki tarafta da denetlenir, bu yüzden yanlış kutuya yapıştırılan bir değer iki durumda da aynı cümleyle reddedilir.
- Bağlan’a tıklayın
Control Center, bot token’ını herhangi bir şey saklamadan önce Slack’in auth.test çağrısıyla doğrular; böylece bir yazım hatası, sessizce hiç çalışmayan bir sokete dönüşmek yerine size bildirilir. Uygulama düzeyi token yalnızca soket açılarak kanıtlanabilir, bu yüzden hatalı bir token biraz sonra aynı satırda bir bağlantı hatası olarak görünür.
İsteğe bağlı uygulama yapılandırma jetonu olmadan bağlantı sorunsuz çalışır — yalnızca botu Control Center’dan düzenleyemezsiniz.
Bağlanmanın yaptıkları
Bölüm başlığı “Bağlanmanın yaptıkları”- Kimlik bilgilerini çalışma alanının kendi dizininde, veritabanının yanında, yalnızca sahibinin okuyabileceği şekilde saklar. Bunlar hiçbir zaman bir istemciye geri gitmez
- Bu çalışma alanı için tek bir Socket Mode bağlantısı açar ve etiketlemeleri, Slack dizi yanıtlarını, DM’leri ve slash komutlarını almaya başlar
- Daha önce köprülenmiş her Slack dizisini yeniden etkinleştirir, böylece yeniden bağlanma var olan konuşmaları ortada bırakmak yerine sürdürür
- Sohbet uygulaması olmayan çalışma alanları için hiçbir maliyeti yoktur: soket yok, zamanlayıcı yok, trafik yok
Doğrulama
Bölüm başlığı “Doğrulama”Slack satırı bir durum etiketi gösterir: Canlı, Bağlanıyor…, Bağlantı hatası (yanında Slack’in kendi hatasıyla) veya Bağlı değil. Uçtan uca denetlemek için:
- Slack’te botu bir kanala davet edin:
/invite @your-bot-name - Onu bir istekle etiketleyin
- Bir Slack dizi yanıtı görünür ve Control Center’da buna karşılık gelen bir alan açılır
Köprüyü kullanmak isteyen her üye daha sonra kendi hesabını bağlar — bkz. Slack hesabınızı bağlama.
Slack’te bir yanıtın görünümü
Bölüm başlığı “Slack’te bir yanıtın görünümü”Akış halinde gelen sözcüklerin üstünde, her adım için bir satır içeren tek bir gruplanmış kart bulunur. Kurulum, başlığı Working on it… konumundan Cloning … konumuna, oradan Starting the agent… konumuna geçen tek bir satırdır. Akıl yürütme bir Thinking… satırı ekler; bu adım bittiğinde satırda kısa bir düşünce görünebilir. Her araç kendi satırıdır (Read lib/main.dart). Yanıt, kartın altında sıradan metin olarak gelir. Kart, tur bittiğinde tamamlandı durumuna, çalışma başarısız olduğunda, kesintiye uğradığında veya tur sınırına takıldığında hata durumuna geçer.
Kart, bot etiketlemeyi kabul ettiği anda başlar — Working on it… — böylece çalışma alanı hâlâ oluşturulurken Slack dizisi sessiz kalmaz. Bir Slack kanalındaki ilk etiketlemeniz konuşmayı oluşturur; bu da ajanın çalıştığı depoları klonlar, dolayısıyla o kurulum satırı önce Cloning acme/widgets…, sonra Setting up Reviewer…, sonra Starting the agent… okunur ve ajan gerçekten akıl yürütmeye başlayınca bir Thinking… satırı gelir. Büyük bir depoda bu ilk kurulum bir süre alır; kart, sizi yok saymak yerine çalıştığını anlamanızın yoludur. Aynı Slack dizisindeki sonraki etiketlemeler yine Working on it… ile açılır, ardından çalışma alanı zaten var olduğu için klonlama adımlarını atlar.
Akıl yürütme, bir metin duvarı ve araç çıktısı olarak asla Control Center’dan çıkmaz — Thinking… satırındaki düşünce bir transkript değil, kısa bir satırdır. Karttaki View in Control Center, tam konuşmayı masaüstü uygulamasında açar — bağlantı, tarayıcıyı uygulamaya devreden kendi Control Center sunucunuza gider.
Tıkladığınızda hiçbir şey olmuyorsa, iletiyi gönderen sunucuya tıkladığınız makineden erişilemiyordur (örneğin yalnızca loopback’te çalışan bir sunucuya telefondan tıklamak) ya da orada Control Center çalışmıyordur. Erişilebilir adresi olmayan bir sunucu, hiçbir yere çıkmayan bir düğme yerine düğmesiz bir kart gönderir.
Token rotasyonu
Bölüm başlığı “Token rotasyonu”Yeni değeri bağlantı iletişim kutusuna yeniden yapıştırın ve Bağlan’a tıklayın. Bağlanmak, bu çalışma alanı için çalışmakta olan bağlantıyı ne olursa olsun değiştirir, böylece soket yeni kimlik bilgileriyle yeniden kurulur.
İki zorunlu token her bağlanmada mevcut olmalıdır. İsteğe bağlı uygulama yapılandırma jetonu, kutuyu boş bıraktığınızda saklanan değerini korur; böylece bir bot token’ını rotasyona sokmak, uygulamayı düzenleme olanağını size hiçbir zaman kaybettirmez.
Bağlantıyı kesme
Bölüm başlığı “Bağlantıyı kesme”Slack satırındaki Bağlantıyı kes’e tıklayın (yalnızca yöneticiler). Soket kapanır ve kimlik bilgileri unutulur.
Alan ve kullanıcı bağlantıları bilinçli olarak korunur: aynı uygulamayı yeniden bağlamak, köprülenmiş her Slack dizisini geri getirir. Bunlar çalışma alanı kapsamlı satırlardır, bu yüzden çalışma alanını silmek onları zaten kaldırır.
Sorun giderme
Bölüm başlığı “Sorun giderme”Satır “Bağlantı hatası” diyor
Bölüm başlığı “Satır “Bağlantı hatası” diyor”Etiketin yanında gösterilen hatayı okuyun. Reddedilen bir kimlik bilgisi (invalid_auth, not_authed, token_revoked, account_inactive) nihaidir — köprü yeniden denemeyi bırakır ve yeni token’ları bekler, çünkü iptal edilmiş bir token’ı sonsuza dek yeniden denemek size yalnızca hız sınırı kazandırır. Token’ları bağlantı iletişim kutusuna yeniden yapıştırın.
Bir missing_scope hatası, uygulamanın köprünün gerektirdiğinden daha az kapsamla yüklendiği anlamına gelir. Eksik kapsamı ekleyin, uygulamayı Slack’te yeniden yükleyin, ardından yeniden bağlanın.
Geçici olan her şey (düşen bir soket, bir Slack aksaklığı) 30 saniyeyle sınırlanmış üstel geri çekilmeyle kendiliğinden yeniden bağlanır ve Slack’in rutin soket rotasyonu bu geri çekilmeyi artırmaz.
Bot bir etiketlemeyi yanıtlamıyor
Bölüm başlığı “Bot bir etiketlemeyi yanıtlamıyor”- Bot kanalda mı? Slack, kanal iletilerini yalnızca üye olan uygulamalara teslim eder.
/invite @your-bot-namekomutunu çalıştırın - Bağlı mısınız? Bağlı olmayan bir üye, o Slack dizisinde nasıl bağlanacağını açıklayan bir yanıt alır. Bkz. Slack hesabınızı bağlama
- Yazma yetkisi olan bir rolle çalışma alanının üyesi misiniz? Bir
viewerveyaguest’e rolünün salt okunur olduğu söylenir. Köprü, kime ait olduğunu belirleyemediği biri adına asla iş başlatmaz - Çalışma alanında hiç ajan var mı? Ajan yoksa ileti saklanır ama yanıtlayacak kimse yoktur
Bir kanalda yanıtlıyor ama düz iletileri yok sayıyor
Bölüm başlığı “Bir kanalda yanıtlıyor ama düz iletileri yok sayıyor”Bu amaçlanmıştır. Bir DM’in dışında köprü yalnızca botu etiketleyen bir iletiye veya zaten sahip olduğu bir Slack dizisi içindeki bir yanıta işlem yapar. Geri kalan her şey başkalarının konuşmasıdır.
Yanıtlar akış yerine tek büyük ileti olarak geliyor
Bölüm başlığı “Yanıtlar akış yerine tek büyük ileti olarak geliyor”Satır, “Bu Slack uygulamasında canlı akış kapalı — yanıtlar tek ileti olarak gelir.” der. Slack’in akış halindeki yanıtları, ücretli bir planda Agents & AI Apps özelliğini gerektirir; Slack bunu reddettiğinde köprü, o bağlantının kalan ömrü boyunca sormayı bırakır ve bunun yerine yanıtların tamamını gönderir. Hiçbir şey kaybolmaz — tam transkript her zaman Control Center’da bulunur.
Akış ayrıca bir Slack dizi çapası gerektirir, bu yüzden içinde büyüyeceği bir Slack dizisi olmayan bir yanıt tek parça gönderilir. Görev kartı her iki durumda da gelir: tek parça bir yanıtta aynı iletiye binmiş, zaten tamamlanmış halde bulunur.
Yanıtın üstünde kart yok
Bölüm başlığı “Yanıtın üstünde kart yok”Slack’in görev kartları, akışla aynı yeni Agents & AI Apps yüzeyinin parçasıdır ve Slack yalnızca çağrı anında reddeder. Reddettiğinde Control Center yanıtı korur ve o bağlantının kalan ömrü boyunca kartı düşürür — durum satırı olmayan bir yanıt, yanıtı olmayan bir durum satırından iyidir.
“Control Center’ın botu düzenlemesi için bir uygulama yapılandırma jetonu gerekir”
Bölüm başlığı ““Control Center’ın botu düzenlemesi için bir uygulama yapılandırma jetonu gerekir””Botu özelleştir satırı devre dışıdır çünkü bağlantının uygulama yapılandırma jetonu yoktur. Elle veya Slack içinde oluştur yoluyla yapılmış bir uygulama için bu beklenen bir durumdur — Slack, Control Center’a hangi uygulama olduğunu hiçbir zaman bildirmedi. api.slack.com/apps üzerinde bir jeton çifti oluşturun ve yenileme jetonunu doldurarak yeniden bağlanın.
Uzun bir yanıt kesiliyor
Bölüm başlığı “Uzun bir yanıt kesiliyor”Slack tek bir iletiyi 40.000 karakterle sınırlar, bu yüzden köprü 39.000’de keser ve Control Center’a bir işaret ekler — kısaltılmış bir yanıt, Slack’in doğrudan reddettiği bir yanıttan iyidir. Tam metin her zaman alan transkriptinde bulunur.