Azure Functions Managed Connectors ile SharePoint ve Teams
Azure Functions, trigger ve binding’ler sayesinde pek çok Azure servisine zaten bağlanabiliyor. Managed connectors (yönetilen bağlayıcılar) bu entegrasyon yüzeyini Microsoft 365, Microsoft Teams, Dataverse, SharePoint, OneDrive ve üçüncü taraf sistemleri kapsayacak şekilde genişletiyor; Microsoft’un aktardığına göre yaklaşık 1.700 connector fonksiyonların erişimine açılıyor. Webhook kayıt kodunu yazmak, her servis için OAuth token yönetmek gerekmiyor, geriye iş mantığı kalıyor.
Connector trigger ve typed client ikilisi
Programlama modeli iki parçadan oluşuyor:
- Connector trigger: Dış servisteki bir olayı fonksiyonunuza taşır. Örneğin SharePoint’te yeni bir dosya oluşturulduğunda fonksiyon tetiklenir.
- Typed connector client: Kodunuzun ilgili servis üzerinde işlem yapmasını sağlar. Dosya içeriğini okumak, Teams kanalına kart göndermek gibi aksiyonlar bu istemciler üzerinden yürür.
Bağlantının kendisini Azure Connector Namespace yönetiyor. Kimlik doğrulama, token yenileme, abonelik kaydı gibi altyapı işleri sizin kod tabanınızın dışında kalıyor.
Azure Functions ile Connector Namespace entegrasyonu şu an public preview aşamasında..NET isolated, Python ve Node.js destekleniyor. Güncel dil, hosting planı ve bölge desteği için managed connectors genel bakış dokümanını kontrol etmek gerekiyor, preview dönemindeki kapsam değişebilir.
Örnek senaryo: SharePoint’ten Teams bildirimine RFP akışı
Trigger ve aksiyonların birlikte nasıl çalıştığını göstermek için Microsoft.NET tabanlı bir RFP (teklif talebi) alım örneği paylaşıyor. Senaryo, paylaşılan bir SharePoint doküman kitaplığına düşen RFP belgelerinin elle okunup ilgili uzmanlara yönlendirilmesi derdini otomatikleştiriyor.
Akış şöyle ilerliyor:
- Müşteri, SharePoint doküman kitaplığına bir RFP yükler.
- Dosya oluşturulduğunda SharePoint connector trigger’ı Azure Function’ı çağırır.
- Fonksiyon, typed SharePoint istemcisiyle dosya içeriğini çeker.
- Azure Content Understanding belgenin metnini ve düzenini çıkarır.
- Fonksiyon, deterministik kurallarla müşteriyi, talep edilen yetkinlikleri ve önerilecek konu uzmanlarını belirler.
- Typed Teams istemcisi sonucu bir Adaptive Card olarak kanala gönderir.
SharePoint ve Teams bağlantılarını Connector Namespace üstleniyor; dosya işleme, belge analizi, yönlendirme kuralları, hata yönetimi ve bildirim içeriği ise tamamen fonksiyon kodunun kontrolünde kalıyor.
Kodda nasıl görünüyor?
Trigger, ConnectorTrigger özniteliğiyle tanımlanıyor ve dosyanın özelliklerini taşıyan tipli bir payload alıyor:
[Function("OnNewFile")]
public async Task OnNewFile(
[ConnectorTrigger] SharePointOnlineOnNewFileItemsTriggerPayload payload,
CancellationToken cancellationToken)
{
// Process the newly uploaded file.
}
Trigger içerik değil yalnızca dosya özelliklerini verdiğinden, belgenin kendisi typed SharePoint istemcisiyle alınıyor:
byte[] response = await _sharePoint.GetFileContentAsync(
Uri.EscapeDataString(siteAddress),
fileIdentifier,
cancellationToken: cancellationToken);
byte[] document = SharePointFileContent.Decode(response);
İstemciler dependency injection üzerinden kaydediliyor. Her istemci kendi Connector Namespace bağlantısının runtime URL’sini kullanıyor, kimlik doğrulamayı da DefaultAzureCredential ile yapıyor:
services.AddSingleton(
new SharePointOnlineClient(
new Uri(sharePointRuntimeUrl),
credential));
services.AddSingleton(
new TeamsClient(
new Uri(teamsRuntimeUrl),
credential));
Belge, Content Understanding’in prebuilt-layout analizörüne gönderiliyor, metin ve yapı bilgisi oradan çıkıyor. Ardından C# tarafındaki deterministik kurallar müşteriyi ve gerekli yetkinlikleri belirleyip bunları önceden tanımlı uzman rollerine eşliyor. Son adımda sonuç Adaptive Card olarak Teams kanalına gidiyor:
await _teams.PostCardToConversationAsync(
postAs,
postIn,
request,
cancellationToken);
Örnek depoda yalnızca fonksiyon kodu yok; Bicep ile yazılmış altyapı tanımları, Azure Developer CLI yapılandırması ve destekleyici betikler de birlikte geliyor. README dosyası akışın yerelde nasıl test edileceğini ve Azure’a nasıl dağıtılacağını anlatıyor.
Yaygın connector desenleri
Managed connectors, bir fonksiyonun dış sistemlerdeki olaylara tepki vermesi veya bu sistemler üzerinde işlem yapması gerektiğinde devreye giriyor. Microsoft’un öne çıkardığı desenler şunlar:
- Olaydan aksiyona: Bir servisteki olaya tepki verip başka bir serviste işlem yapmak.
- Olay → zenginleştirme → aksiyon: Harekete geçmeden önce olayla ilgili ek bilgi çekmek.
- Olay → belge analizi → aksiyon: Belgeden metin ve yapı çıkarmak, uygulama kurallarını uygulamak ve sonucu başka bir connector üzerinden iletmek.
- Olay → AI → aksiyon: Olay verisini bir AI servisiyle analiz edip sonucu connector aracılığıyla geri yazmak.
- Mevcut function app’i genişletmek: HTTP, timer, queue, Service Bus, Event Grid veya Durable Functions iş yüklerinin yanına connector tabanlı entegrasyonlar eklemek.
RFP örneği bu desenlerin birkaçını birleştiriyor: SharePoint olayı akışı başlatıyor, SharePoint aksiyonu belgeyi getiriyor, Content Understanding içeriği çıkarıyor, uygulama kodu sonucu zenginleştiriyor, Teams aksiyonu bildirimi gönderiyor.
Functions mı, Logic Apps mi?
Managed connectors; SharePoint, Teams, Microsoft 365, Dataverse ve çok sayıda üçüncü taraf sistemi Azure Functions programlama modeline dahil ediyor. Altındaki webhook ve OAuth altyapısını kurmak size kalmıyor.
Microsoft’un önerdiği ayrım şöyle: Kod öncelikli bir uygulamada bu geniş entegrasyon yüzeyine ihtiyaç duyuyorsanız ve trigger ile aksiyon arasında özel dallanma, uygulama kütüphaneleri ve SDK’lar, diğer Functions binding’leri, belge veya AI işleme ya da uygulamaya özgü mantık gerekiyorsa Azure Functions’ı tercih edin. İş yükü ağırlıklı olarak connector işlemlerini orkestre ediyorsa, özel kod payı düşükse ve görsel bir tasarımcıdan fayda sağlanacaksa Azure Logic Apps genellikle daha basit seçenek oluyor.
Özellik hala preview aşamasında. Üretim planlaması yaparken dil, plan ve bölge desteğini resmi dokümandan doğrulamak gerekiyor.
Kaynaklar ve İleri Okuma
- Connect Azure Functions to more services with managed connectors — Azure SDK Blog (Lily Ma)
- Azure Functions’ta managed connectors genel bakış (C#)
- Azure Functions trigger ve binding kavramları
- Azure Connector Namespace genel bakış
- RFP intake örneği (SharePoint + Teams,.NET)
- Azure Functions connector örnekleri deposu
- Connectors.NET SDK · Python SDK · Node.js SDK
- Azure SRE Agent’ı Connector Namespace ile Güçlendirmek







Yorum gönder