İçeriğe geç

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.

  • Control Center çalışma alanında owner veya admin rolü — 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
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.

  1. api.slack.com/apps adresinde bir uygulama yapılandırma jeton çifti oluşturun ve yenileme jetonunu (xoxe-…) kopyalayın
  2. Control Center’da Ayarlar → Çalışma alanı → Genel bölümüne gidin ve Sohbet köprüleri kartına kaydırın
  3. Slack bloğunda Uygulamayı benim için oluştur’a tıklayın
  4. 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
  5. İ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:write kapsamıyla bir jeton oluşturun (xapp-…)
    • Install App: çalışma alanına yükleyin ve Bot User OAuth Token’ı (xoxb-…) kopyalayın
  6. 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.

  1. Control Center’da Ayarlar → Çalışma alanı → Genel bölümüne gidin ve Sohbet köprüleri kartına kaydırın
  2. Slack bloğunda Uygulamayı benim için oluştur’a tıklayın
  3. Uygulama adını, bot adını, açıklamaları ve slash komutunu ayarlayın — bunlar bağlantıyla birlikte taşınır
  4. 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
  5. Slack çalışma alanını seçin ve onaylayın. Kapsamlar, olaylar, Socket Mode ve slash komutu zaten doğrudur
  6. Control Center’a döndüğünüzde, iletişim kutusunun gösterdiği iki kalan adımı izleyin:
    • Basic Information → App-Level Tokens: connections:write kapsamıyla bir jeton oluşturun (xapp-…)
    • Install App: çalışma alanına yükleyin ve Bot User OAuth Token’ı (xoxb-…) kopyalayın
  7. 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.

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:read
assistant:write
channels:history
chat:write
commands
groups:history
im:history
users:read
users:read.email

Olay abonelikleri (bot olayları):

app_home_opened
app_mention
message.channels
message.groups
message.im

message.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.

  1. Ayarlar → Çalışma alanı → Genel bölümüne gidin ve Sohbet köprüleri kartına kaydırın
  2. Slack bloğunda Slack bağla’ya tıklayın
  3. 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.

  1. 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.

  • 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

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:

  1. Slack’te botu bir kanala davet edin: /invite @your-bot-name
  2. Onu bir istekle etiketleyin
  3. 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.

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.

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.

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.

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 kanalda mı? Slack, kanal iletilerini yalnızca üye olan uygulamalara teslim eder. /invite @your-bot-name komutunu ç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 viewer veya guest’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.

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.

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.