Microsoft Teams (eklenti)
“Abandon all hope, ye who enter here.”Güncellendi: 2026-01-21 Durum: metin + DM ekleri desteklenir; kanal/grup dosya gönderimi
sharePointSiteId + Graph izinleri gerektirir (bkz. Grup sohbetlerinde dosya gönderme). Anketler Adaptive Cards üzerinden gönderilir.
Gerekli eklenti
Microsoft Teams bir eklenti olarak gelir ve çekirdek kurulumla birlikte gelmez. Kırıcı değişiklik (2026.1.15): MS Teams çekirdekten çıkarıldı. Kullanıyorsanız eklentiyi yüklemeniz gerekir. Açıklama: çekirdek kurulumları daha hafif tutar ve MS Teams bağımlılıklarının bağımsız güncellenmesini sağlar. CLI ile kurulum (npm kayıt defteri):Hızlı kurulum (başlangıç)
- Microsoft Teams eklentisini yükleyin.
- Bir Azure Bot oluşturun (App ID + istemci gizli anahtarı + tenant ID).
- OpenClaw’ı bu kimlik bilgileriyle yapılandırın.
/api/messages’i (varsayılan port 3978) genel bir URL veya tünel üzerinden açığa çıkarın.- Teams uygulama paketini yükleyin ve gateway’i başlatın.
channels.msteams.groupPolicy: "allowlist"). Grup yanıtlarına izin vermek için channels.msteams.groupAllowFrom’ü ayarlayın (veya herhangi bir üyenin izinli olması için, mention gerektiren groupPolicy: "open"’ü kullanın).
Hedefler
- Teams DM’leri, grup sohbetleri veya kanallar üzerinden OpenClaw ile konuşmak.
- Yönlendirmeyi deterministik tutmak: yanıtlar her zaman geldikleri kanala geri gider.
- Varsayılan olarak güvenli kanal davranışı (aksi yapılandırılmadıkça mention gereklidir).
Yapılandırma yazımları
Varsayılan olarak Microsoft Teams,/config set|unset tarafından tetiklenen yapılandırma güncellemelerini yazmaya yetkilidir (commands.config: true gerektirir).
Şununla devre dışı bırakın:
Erişim denetimi (DM’ler + gruplar)
DM erişimi- Varsayılan:
channels.msteams.dmPolicy = "pairing". Bilinmeyen gönderenler onaylanana kadar yok sayılır. channels.msteams.allowFromAAD nesne kimliklerini, UPN’leri veya görünen adları kabul eder. Sihirbaz, kimlik bilgileri izin verdiğinde adları Microsoft Graph üzerinden kimliklere çözer.
- Varsayılan:
channels.msteams.groupPolicy = "allowlist"(groupAllowFromeklemediğiniz sürece engelli). Ayarlanmadığında varsayılanı geçersiz kılmak içinchannels.defaults.groupPolicy’i kullanın. channels.msteams.groupAllowFrom, grup sohbetlerinde/kanallarda hangi gönderenlerin tetikleyebileceğini kontrol eder (channels.msteams.allowFrom’e geri düşer).- Herhangi bir üyeye izin vermek için
groupPolicy: "open"’ü ayarlayın (varsayılan olarak hâlâ mention gerektirir). - Hiç kanal istemiyorsanız
channels.msteams.groupPolicy: "disabled"’i ayarlayın.
channels.msteams.teamsaltında ekipleri ve kanalları listeleyerek grup/kanal yanıtlarının kapsamını belirleyin.- Anahtarlar ekip kimlikleri veya adları olabilir; kanal anahtarları konuşma kimlikleri veya adları olabilir.
groupPolicy="allowlist"ayarlıysa ve bir ekip izin listesi mevcutsa, yalnızca listelenen ekipler/kanallar kabul edilir (mention gerektirir).- Yapılandırma sihirbazı
Team/Channelgirdilerini kabul eder ve sizin için saklar. - Başlangıçta OpenClaw, Graph izinleri izin verdiğinde ekip/kanal ve kullanıcı izin listesi adlarını kimliklere çözer ve eşlemeyi günlüğe yazar; çözülemeyen girdiler yazıldığı gibi korunur.
Nasıl çalışır
- Microsoft Teams eklentisini yükleyin.
- Bir Azure Bot oluşturun (App ID + gizli anahtar + tenant ID).
- Botu referanslayan ve aşağıdaki RSC izinlerini içeren bir Teams uygulama paketi oluşturun.
- Teams uygulamasını bir ekibe yükleyin (veya DM’ler için kişisel kapsam).
~/.openclaw/openclaw.jsoniçinde (veya ortam değişkenleriyle)msteams’u yapılandırın ve gateway’i başlatın.- Gateway varsayılan olarak
/api/messagesüzerinde Bot Framework webhook trafiğini dinler.
Azure Bot Kurulumu (Ön Koşullar)
OpenClaw’ı yapılandırmadan önce bir Azure Bot kaynağı oluşturmanız gerekir.Adım 1: Azure Bot oluşturun
- Azure Bot Oluştur sayfasına gidin
-
Basics sekmesini doldurun:
Field Değer Bot kullanıcı adı Bot adınız, örn. openclaw-msteams(benzersiz olmalı)Abonelik Azure aboneliğinizi seçin Kaynak grubu Yeni oluşturun veya mevcut olanı kullanın Fiyatlandırma katmanı Geliştirme/test için Free Uygulama türü Single Tenant (önerilir - aşağıdaki nota bakın) Oluşturma türü Yeni Microsoft Uygulama Kimliği oluşturun
Kullanımdan kaldırma bildirimi: Yeni çok kiracılı botların oluşturulması 2025-07-31’den sonra kullanımdan kaldırıldı. Yeni botlar için Single Tenant kullanın.
- Review + create → Create’e tıklayın (~1-2 dakika bekleyin)
Adım 2: Kimlik bilgilerini alın
- Azure Bot kaynağınıza gidin → Configuration
- Microsoft App ID’yi kopyalayın → bu sizin
appId’ünüzdür - Manage Password’a tıklayın → App Registration’a gidin
- Certificates & secrets → New client secret → Value’yu kopyalayın → bu sizin
appPassword’ünüzdür - Overview → Directory (tenant) ID’yi kopyalayın → bu sizin
tenantId’inizdir
Adım 3: Mesajlaşma uç noktasını yapılandırın
- Azure Bot → Configuration
- Messaging endpoint’i webhook URL’nize ayarlayın:
- Üretim:
https://your-domain.com/api/messages - Yerel geliştirme: bir tünel kullanın (aşağıda Yerel Geliştirme bölümüne bakın)
- Üretim:
Adım 4: Teams kanalını etkinleştirin
- Azure Bot → Channels
- Microsoft Teams → Configure → Save
- Hizmet Şartlarını kabul edin
Yerel Geliştirme (Tünelleme)
Teamslocalhost’e erişemez. Yerel geliştirme için bir tünel kullanın:
Seçenek A: ngrok
Teams Geliştirici Portalı (Alternatif)
Manifest ZIP’i manuel oluşturmak yerine Teams Geliştirici Portalı’nı kullanabilirsiniz:- + New app’e tıklayın
- Temel bilgileri doldurun (ad, açıklama, geliştirici bilgileri)
- App features → Bot
- Enter a bot ID manually’yi seçin ve Azure Bot App ID’nizi yapıştırın
- Kapsamları işaretleyin: Personal, Team, Group Chat
- Distribute → Download app package
- Teams’te: Apps → Manage your apps → Upload a custom app → ZIP’i seçin
Botu test etme
Seçenek A: Azure Web Chat (önce webhook’u doğrulayın)- Azure Portal → Azure Bot kaynağınız → Test in Web Chat
- Bir mesaj gönderin — bir yanıt görmelisiniz
- Bu, Teams kurulumundan önce webhook uç noktanızın çalıştığını doğrular
- Teams uygulamasını yükleyin (yan yükleme veya kuruluş kataloğu)
- Teams’te botu bulun ve bir DM gönderin
- Gelen etkinlikler için gateway günlüklerini kontrol edin
Kurulum (minimal, yalnızca metin)
-
Microsoft Teams eklentisini yükleyin
- npm’den:
openclaw plugins install @openclaw/msteams - Yerel checkout’tan:
openclaw plugins install ./extensions/msteams
- npm’den:
-
Bot kaydı
- Bir Azure Bot oluşturun (yukarıya bakın) ve şunları not edin:
- App ID
- İstemci gizli anahtarı (App parolası)
- Tenant ID (tek kiracılı)
- Bir Azure Bot oluşturun (yukarıya bakın) ve şunları not edin:
-
Teams uygulama manifesti
botId = <App ID>ile birbotgirdisi ekleyin.- Kapsamlar:
personal,team,groupChat. supportsFiles: true(kişisel kapsam dosya işlemleri için gereklidir).- RSC izinlerini ekleyin (aşağıda).
- Simgeleri oluşturun:
outline.png(32x32) vecolor.png(192x192). - Üç dosyayı birlikte zipleyin:
manifest.json,outline.png,color.png.
-
OpenClaw’ı yapılandırın
Yapılandırma anahtarları yerine ortam değişkenlerini de kullanabilirsiniz:
MSTEAMS_APP_IDMSTEAMS_APP_PASSWORDMSTEAMS_TENANT_ID
-
Bot uç noktası
- Azure Bot Messaging Endpoint’i şuna ayarlayın:
https://<host>:3978/api/messages(veya seçtiğiniz yol/port).
- Azure Bot Messaging Endpoint’i şuna ayarlayın:
-
Gateway’i çalıştırın
- Eklenti yüklendiğinde ve kimlik bilgileriyle
msteamsyapılandırması mevcut olduğunda Teams kanalı otomatik olarak başlar.
- Eklenti yüklendiğinde ve kimlik bilgileriyle
History context
channels.msteams.historyLimit, son kanal/grup mesajlarından kaç tanesinin isteme sarılacağını kontrol eder.messages.groupChat.historyLimit’ye geri düşer. Devre dışı bırakmak için0’i ayarlayın (varsayılan 50).- DM geçmişi
channels.msteams.dmHistoryLimitile sınırlandırılabilir (kullanıcı dönüşleri). Kullanıcı başına geçersiz kılmalar:channels.msteams.dms["<user_id>"].historyLimit.
Güncel Teams RSC İzinleri (Manifest)
Bunlar Teams uygulama manifestimizdeki mevcut resourceSpecific izinlerdir. Yalnızca uygulamanın kurulu olduğu ekip/sohbet içinde geçerlidir. Kanallar için (ekip kapsamı):ChannelMessage.Read.Group(Application) - @mention olmadan tüm kanal mesajlarını almaChannelMessage.Send.Group(Application)Member.Read.Group(Application)Owner.Read.Group(Application)ChannelSettings.Read.Group(Application)TeamMember.Read.Group(Application)TeamSettings.Read.Group(Application)
ChatMessage.Read.Chat(Application) - @mention olmadan tüm grup sohbeti mesajlarını alma
Örnek Teams Manifesti (redacted)
Gerekli alanları içeren minimal, geçerli bir örnek. Kimlikleri ve URL’leri değiştirin.Manifest uyarıları (olmazsa olmaz alanlar)
bots[].botIdAzure Bot App ID ile eşleşmelidir.webApplicationInfo.idAzure Bot App ID ile eşleşmelidir.bots[].scopes, kullanmayı planladığınız yüzeyleri içermelidir (personal,team,groupChat).bots[].supportsFiles: true, kişisel kapsamda dosya işlemleri için gereklidir.- Kanal trafiği istiyorsanız
authorization.permissions.resourceSpecifickanal okuma/gönderme içermelidir.
Mevcut bir uygulamayı güncelleme
Zaten yüklü bir Teams uygulamasını güncellemek için (örn. RSC izinleri eklemek):manifest.json’inizi yeni ayarlarla güncelleyinversionalanını artırın (örn.1.0.0→1.1.0)- Simgelerle birlikte manifesti yeniden zipleyin (
manifest.json,outline.png,color.png) - Yeni zip’i yükleyin:
- Seçenek A (Teams Admin Center): Teams Admin Center → Teams apps → Manage apps → uygulamanızı bulun → Upload new version
- Seçenek B (Yan yükleme): Teams’te → Apps → Manage your apps → Upload a custom app
- Ekip kanalları için: Yeni izinlerin geçerli olması için uygulamayı her ekipte yeniden yükleyin
- Teams’i tamamen kapatıp yeniden başlatın (yalnızca pencereyi kapatmak yeterli değildir) — önbelleğe alınmış uygulama meta verilerini temizlemek için
Yetenekler: Yalnızca RSC vs Graph
Yalnızca Teams RSC ile (uygulama yüklü, Graph API izinleri yok)
Çalışır:- Kanal mesajı metin içeriğini okuma.
- Kanal mesajı metin içeriğini gönderme.
- Kişisel (DM) dosya eklerini alma.
- Kanal/grup görüntü veya dosya içerikleri (yük yalnızca HTML taslağı içerir).
- SharePoint/OneDrive’da saklanan ekleri indirme.
- Mesaj geçmişini okuma (canlı webhook olayı dışında).
Teams RSC + Microsoft Graph Application izinleri ile
Ekler:- Barındırılan içerikleri indirme (mesajlara yapıştırılan görüntüler).
- SharePoint/OneDrive’da saklanan dosya eklerini indirme.
- Graph üzerinden kanal/sohbet mesaj geçmişini okuma.
RSC vs Graph API
| Yetenek | RSC İzinleri | Graph API |
|---|---|---|
| Gerçek zamanlı mesajlar | Evet (webhook ile) | Hayır (yalnızca anketleme) |
| Geçmiş mesajlar | Hayır | Evet (geçmiş sorgulanabilir) |
| Kurulum karmaşıklığı | Yalnızca uygulama manifesti | Yönetici onayı + belirteç akışı gerekir |
| Çevrimdışı çalışır | Hayır (çalışıyor olmalı) | Evet (her zaman sorgulanabilir) |
ChannelMessage.Read.All ile Graph API gerekir (yönetici onayı gerektirir).
Graph özellikli medya + geçmiş (kanallar için gereklidir)
Kanallarda görüntü/dosya istiyorsanız veya mesaj geçmişini almak istiyorsanız, Microsoft Graph izinlerini etkinleştirip yönetici onayı vermelisiniz.- Entra ID (Azure AD) App Registration’da Microsoft Graph Application izinlerini ekleyin:
ChannelMessage.Read.All(kanal ekleri + geçmiş)Chat.Read.AllveyaChatMessage.Read.All(grup sohbetleri)
- Grant admin consent for the tenant.
- Teams uygulaması manifest sürümünü artırın, yeniden yükleyin ve Teams’te uygulamayı yeniden kurun.
- Önbelleğe alınmış uygulama meta verilerini temizlemek için Teams’i tamamen kapatıp yeniden başlatın.
User.Read.All (Application) iznini ekleyin ve yönetici onayı verin.
Bilinen Sınırlamalar
Webhook zaman aşımları
Teams mesajları HTTP webhook üzerinden iletir. İşleme çok uzun sürerse (örn. yavaş LLM yanıtları), şunları görebilirsiniz:- Gateway zaman aşımları
- Teams’in mesajı yeniden denemesi (yinelenmelere yol açar)
- Düşen yanıtlar
Biçimlendirme
Teams markdown’ı Slack veya Discord’a göre daha sınırlıdır:- Temel biçimlendirme çalışır: kalın, italik,
code, bağlantılar - Karmaşık markdown (tablolar, iç içe listeler) doğru render edilmeyebilir
- Anketler ve keyfi kart gönderimleri için Adaptive Cards desteklenir (aşağıya bakın)
Yapılandırma
Temel ayarlar (paylaşılan kanal kalıpları için bkz./gateway/configuration):
channels.msteams.enabled: kanalı etkinleştir/devre dışı bırak.channels.msteams.appId,channels.msteams.appPassword,channels.msteams.tenantId: bot kimlik bilgileri.channels.msteams.webhook.port(varsayılan3978)channels.msteams.webhook.path(varsayılan/api/messages)channels.msteams.dmPolicy:pairing | allowlist | open | disabled(varsayılan: eşleştirme)channels.msteams.allowFrom: DM’ler için izin listesi (AAD nesne kimlikleri, UPN’ler veya görünen adlar). Sihirbaz, Graph erişimi mevcutken kurulum sırasında adları kimliklere çözer.channels.msteams.textChunkLimit: giden metin parça boyutu.channels.msteams.chunkMode: uzunluk parçalamadan önce boş satırlara (paragraf sınırları) göre bölmek içinlength(varsayılan) veyanewline.channels.msteams.mediaAllowHosts: gelen ek ana bilgisayarları için izin listesi (varsayılan Microsoft/Teams alanları).channels.msteams.mediaAuthAllowHosts: medya yeniden denemelerinde Authorization başlıklarını eklemek için izin listesi (varsayılan Graph + Bot Framework ana bilgisayarları).channels.msteams.requireMention: kanallar/gruplarda @mention gerektir (varsayılan true).channels.msteams.replyStyle:thread | top-level(bkz. Yanıt Stili).channels.msteams.teams.<teamId>.replyStyle: ekip başına geçersiz kılma.channels.msteams.teams.<teamId>.requireMention: ekip başına geçersiz kılma.channels.msteams.teams.<teamId>.tools: kanal geçersiz kılma eksik olduğunda kullanılan ekip başına varsayılan araç politika geçersiz kılmaları (allow/deny/alsoAllow).channels.msteams.teams.<teamId>.toolsBySender: ekip başına gönderen başına varsayılan araç politika geçersiz kılmaları ("*"joker karakteri desteklenir).channels.msteams.teams.<teamId>.channels.<conversationId>.replyStyle: kanal başına geçersiz kılma.channels.msteams.teams.<teamId>.channels.<conversationId>.requireMention: kanal başına geçersiz kılma.channels.msteams.teams.<teamId>.channels.<conversationId>.tools: kanal başına araç politika geçersiz kılmaları (allow/deny/alsoAllow).channels.msteams.teams.<teamId>.channels.<conversationId>.toolsBySender: kanal başına gönderen başına araç politika geçersiz kılmaları ("*"joker karakteri desteklenir).channels.msteams.sharePointSiteId: grup sohbetleri/kanallarda dosya yüklemeleri için SharePoint site kimliği (bkz. Grup sohbetlerinde dosya gönderme).
Routing & Sessions
- Oturum anahtarları standart ajan biçimini izler (bkz. /concepts/session):
- Doğrudan mesajlar ana oturumu paylaşır (
agent:<agentId>:<mainKey>). - Kanal/grup mesajları konuşma kimliğini kullanır:
agent:<agentId>:msteams:channel:<conversationId>agent:<agentId>:msteams:group:<conversationId>
- Doğrudan mesajlar ana oturumu paylaşır (
Yanıt Stili: Thread’ler vs Gönderiler
Teams yakın zamanda aynı temel veri modeli üzerinde iki kanal UI stili tanıttı:| Stil | Açıklama | Önerilen replyStyle |
|---|---|---|
| Gönderiler (klasik) | Mesajlar, altında thread’li yanıtlar olan kartlar olarak görünür | thread (varsayılan) |
| Thread’ler (Slack benzeri) | Mesajlar Slack’e daha benzer şekilde doğrusal akar | top-level |
replyStyle kullanırsanız:
- Thread tarzı bir kanalda
thread→ yanıtlar garip biçimde iç içe görünür - Gönderiler tarzı bir kanalda
top-level→ yanıtlar thread yerine ayrı üst düzey gönderiler olarak görünür
replyStyle’yı kanal bazında yapılandırın:
Ekler & Görseller
Mevcut sınırlamalar:- DM’ler: Görseller ve dosya ekleri Teams bot dosya API’leri üzerinden çalışır.
- Kanallar/gruplar: Ekler M365 depolamasında (SharePoint/OneDrive) bulunur. Webhook yükü yalnızca bir HTML taslağı içerir, gerçek dosya baytlarını içermez. Kanal eklerini indirmek için Graph API izinleri gereklidir.
channels.msteams.mediaAllowHosts ile geçersiz kılın (herhangi bir ana bilgisayara izin vermek için ["*"]’i kullanın).
Authorization başlıkları yalnızca channels.msteams.mediaAuthAllowHosts içindeki ana bilgisayarlar için eklenir (varsayılan Graph + Bot Framework ana bilgisayarları). Bu listeyi sıkı tutun (çok kiracılı soneklerden kaçının).
Grup sohbetlerinde dosya gönderme
Botlar, yerleşik FileConsentCard akışıyla DM’lerde dosya gönderebilir. Ancak grup sohbetlerinde/kanallarda dosya gönderme ek kurulum gerektirir:| Context | Dosyaların gönderilme şekli | Gerekli kurulum |
|---|---|---|
| DM’ler | FileConsentCard → kullanıcı kabul eder → bot yükler | Kutudan çıktığı gibi çalışır |
| Grup sohbetleri/kanallar | SharePoint’e yükle → bağlantı paylaş | sharePointSiteId + Graph izinleri gerektirir |
| Images (any context) | Base64 kodlu satır içi | Kutudan çıktığı gibi çalışır |
Neden grup sohbetleri SharePoint gerektirir
Botların kişisel bir OneDrive sürücüsü yoktur (/me/drive Graph API uç noktası uygulama kimlikleri için çalışmaz). Grup sohbetlerinde/kanallarda dosya göndermek için bot, bir SharePoint sitesine yükler ve bir paylaşım bağlantısı oluşturur.
Kurulum
-
Entra ID (Azure AD) → App Registration’da Graph API izinlerini ekleyin:
Sites.ReadWrite.All(Application) - SharePoint’e dosya yüklemeChat.Read.All(Application) - isteğe bağlı, kullanıcı başına paylaşım bağlantılarını etkinleştirir
- Grant admin consent for the tenant.
-
SharePoint site kimliğinizi alın:
-
OpenClaw’ı yapılandırın:
Paylaşım davranışı
| Permission | Paylaşım davranışı |
|---|---|
Yalnızca Sites.ReadWrite.All | Kurum genelinde paylaşım bağlantısı (kurumdaki herkes erişebilir) |
Sites.ReadWrite.All + Chat.Read.All | Kullanıcı başına paylaşım bağlantısı (yalnızca sohbet üyeleri erişebilir) |
Chat.Read.All izni eksikse, bot kurum genelinde paylaşıma geri düşer.
Geri dönüş davranışı
| Scenario | Sonuç |
|---|---|
Grup sohbeti + dosya + sharePointSiteId yapılandırılmış | SharePoint’e yükle, paylaşım bağlantısı gönder |
Grup sohbeti + dosya + sharePointSiteId yok | OneDrive yüklemesini dene (başarısız olabilir), yalnızca metin gönder |
| Kişisel sohbet + dosya | FileConsentCard akışı (SharePoint olmadan çalışır) |
| Herhangi bir bağlam + görsel | Base64 kodlu satır içi (SharePoint olmadan çalışır) |
Dosyaların saklandığı konum
Yüklenen dosyalar, yapılandırılmış SharePoint sitesinin varsayılan belge kitaplığındaki/OpenClawShared/ klasöründe saklanır.
Anketler (Adaptive Cards)
OpenClaw, Teams anketlerini Adaptive Cards olarak gönderir (yerel bir Teams anket API’si yoktur).- CLI:
openclaw message poll --channel msteams --target conversation:<id> ... - Oylar gateway tarafından
~/.openclaw/msteams-polls.json’ye kaydedilir. - Oyları kaydetmek için gateway’in çevrimiçi kalması gerekir.
- Anketler henüz sonuç özetlerini otomatik olarak paylaşmaz (gerekirse depo dosyasını inceleyin).
Adaptive Cards (keyfi)
message aracı veya CLI kullanarak Teams kullanıcılarına veya konuşmalarına herhangi bir Adaptive Card JSON’u gönderin.
card parametresi bir Adaptive Card JSON nesnesini kabul eder. card sağlandığında mesaj metni isteğe bağlıdır.
Ajan aracı:
Hedef biçimleri
MSTeams hedefleri, kullanıcılar ve konuşmalar arasında ayrım yapmak için önekler kullanır:| Hedef türü | Biçim | Örnek |
|---|---|---|
| Kullanıcı (ID ile) | user:<aad-object-id> | user:40a1a0ed-4ff2-4164-a219-55518990c197 |
| Kullanıcı (ad ile) | user:<display-name> | user:John Smith (Graph API gerektirir) |
| Grup/kanal | conversation:<conversation-id> | conversation:19:[email protected] |
| Grup/kanal (ham) | <conversation-id> | 19:[email protected] (@thread içeriyorsa) |
user: öneki olmadan adlar varsayılan olarak grup/ekip çözümlemesine gider. Kişileri görünen adla hedeflerken her zaman user: kullanın.
Proaktif mesajlaşma
- Proaktif mesajlar, bir kullanıcı etkileşim kurduktan sonra mümkündür; çünkü bu noktada konuşma referanslarını saklarız.
/gateway/configuration’dekidmPolicyve izin listesi kısıtlamalarına bakın.
Ekip ve Kanal Kimlikleri (Yaygın Tuzak)
Teams URL’lerindekigroupId sorgu parametresi, yapılandırmada kullanılan ekip kimliği DEĞİLDİR. Kimlikleri URL yolundan çıkarın:
Ekip URL’si:
- Ekip Kimliği =
/team/’dan sonraki yol parçası (URL-decode edilmiş, örn.19:[email protected]) - Kanal Kimliği =
/channel/’den sonraki yol parçası (URL-decode edilmiş) groupIdsorgu parametresini yok sayın
Özel Kanallar
Botların özel kanallarda desteği sınırlıdır:| Özellik | Standart Kanallar | Özel Kanallar |
|---|---|---|
| Bot kurulumu | Evet | Sınırlı |
| Gerçek zamanlı mesajlar (webhook) | Evet | Çalışmayabilir |
| RSC izinleri | Evet | Farklı davranabilir |
| @mention’lar | Evet | Bot erişilebilirse |
| Graph API geçmişi | Evet | Evet (izinlerle) |
- Bot etkileşimleri için standart kanalları kullanın
- DM’leri kullanın — kullanıcılar her zaman botla doğrudan mesajlaşabilir
- Geçmiş erişimi için Graph API kullanın (
ChannelMessage.Read.Allgerektirir)
Yaygın sorunlar
Yaygın sorunlar
- Kanallarda görseller görünmüyor: Graph izinleri veya yönetici onayı eksik. Teams uygulamasını yeniden kurun ve Teams’i tamamen kapatıp yeniden açın.
- Kanalda yanıt yok: Varsayılan olarak mention gereklidir;
channels.msteams.requireMention=false’i ayarlayın veya ekip/kanal bazında yapılandırın. - Sürüm uyuşmazlığı (Teams hâlâ eski manifesti gösteriyor): Uygulamayı kaldırıp yeniden ekleyin ve Teams’i tamamen kapatın.
- Webhook’tan 401 Unauthorized: Azure JWT olmadan manuel testte beklenir — uç noktanın erişilebilir olduğunu ancak kimlik doğrulamanın başarısız olduğunu gösterir. Doğru test için Azure Web Chat’i kullanın.
Manifest yükleme hataları
- “Icon file cannot be empty”: Manifest 0 bayt olan simge dosyalarına referans veriyor. Geçerli PNG simgeleri oluşturun (
outline.pngiçin 32x32,color.pngiçin 192x192). - “webApplicationInfo.Id already in use”: Uygulama başka bir ekip/sohbette hâlâ yüklü. Önce bulun ve kaldırın veya yayılım için 5-10 dakika bekleyin.
- Yüklemede “Something went wrong”: Bunun yerine https://admin.teams.microsoft.com üzerinden yükleyin, tarayıcı DevTools’u (F12) açın → Network sekmesi → gerçek hatayı görmek için yanıt gövdesini kontrol edin.
- Yan yükleme başarısız: “Upload a custom app” yerine “Upload an app to your org’s app catalog” deneyin — bu genellikle yan yükleme kısıtlamalarını aşar.
RSC izinleri çalışmıyor
webApplicationInfo.id’in botunuzun App ID’siyle birebir eşleştiğini doğrulayın- Uygulamayı yeniden yükleyin ve ekip/sohbette yeniden kurun
- Kuruluş yöneticinizin RSC izinlerini engelleyip engellemediğini kontrol edin
- Doğru kapsamı kullandığınızı doğrulayın: ekipler için
ChannelMessage.Read.Group, grup sohbetleri içinChatMessage.Read.Chat
Referanslar
- Azure Bot Oluştur - Azure Bot kurulum kılavuzu
- Teams Geliştirici Portalı - Teams uygulamaları oluşturma/yönetme
- Teams uygulama manifest şeması
- RSC ile kanal mesajlarını alma
- RSC izinleri referansı
- Teams bot dosya işleme (kanal/grup için Graph gerekir)
- Proaktif mesajlaşma