Azure İşlevleri'ta yönetilen bağlayıcıları kullanın

Yönetilen bağlayıcılar kullanarak, fonksiyonlarınız Microsoft 365, Microsoft Teams, SharePoint ve birçok üçüncü taraf sistemdeki olaylara ve çağrı işlemlerine webhook kurulum kodu yazmadan veya OAuth token'larını yönetmeden tepki verebilir. Azure İşlevleri, Azure Connector Namespace ile tümleşik çalışarak, iş mantığına odaklanmanızı sağlayan bir tetikleyici ve bir SDK sunar; bu sırada Azure Connector Namespace web kancalarını, kimlik doğrulamayı ve yeniden denemeleri yönetir.

Uyarı

Azure Connector Namespace entegrasyonu Azure İşlevleri için şu anda halka açık önizleme aşamasında. Özellikler, yapılandırma adları ve belirli yönetilen konnektörler için destek, genel erişilebilirlikten (GA) önce değişebilir. Bu özelliğin kullanımı, Microsoft Azure önizlemeleri için ek kullanım koşullarına tabidir.

Şu anda yalnızca C#, Node.jsve Python dil yığınları desteklenmektedir.

Bağlayıcılar Fonksiyonları Nasıl Güçlendirir

Bir bağlayıcı isim alanı, Fonksiyonlar programlama modeline iki yetenek ekler:

  • Konnektör tetikleyicileri
    Bir fonksiyon, harici bir hizmette bir olay meydana geldiğinde çalışır; örneğin Microsoft 365'te yeni bir e-posta, SharePoint'e eklenen bir dosya veya Teams'e gönderilen bir mesaj. Çalışma zamanı, bağlayıcı ad alanından gelen webhook geri çağrılarını alan bir connectorTrigger bağlaması sunar.
  • Konnektör SDK işlemleri
    Fonksiyon kodunuz, SDK istemcileri aracılığıyla konnektör işlemlerini çağırır. SDK, Microsoft 365 Outlook, Microsoft 365 Kullanıcıları, Teams, SharePoint ve OneDrive gibi yönetilen bağlayıcıları kapsar. Henüz SDK modeli olmayan yönetilen bağlayıcılar HTTP uç noktası olarak çağrılabilir.

HTTP, zamanlayıcı, kuyruk, Service Bus, Event Grid ve Dayanıklı İşlevler gibi klasik Functions tetikleyicileri ve bağlamalarıyla birlikte yönetilen bağlantıları da kullanabilirsiniz.

Önizlemenin kullanıma sunulması

Dimension Availability
Bağlayıcı Ad Alanı bölümü Connector Namespace'in desteklendiği herhangi bir bölge.
Diller .NET 10 yalıtılmış, Python 3.13+, Node.js 22+ (JS/TS). Java, PowerShell ve Go desteklenmiyor.
Ev sahipliği planları Flex Consumption (önerilir), Premium, Dedicated ve Container Apps.
Pricing Standart Fonksiyon fiyatlandırması: Önizleme sırasında konektör tetikleyici/SDK için ekstra ücret alınmaz.
Connector Namespace'in ayrı faturalandırması var.

Bağlayıcılar ne zaman kullanılır?

Fonksiyonlarınız genellikle harici servislerle etkileşime girmesi gerektiğinde konnektörleri kullanın, karmaşık özel mantıklar çalıştırmak yerine. İş uygulamalarınızda yönetilen bağlayıcıları kullanmanın şu yollarını düşünün:

  • Dış olaylara tepki ver
    Uygulamanız, dışa bağlı hizmetler tarafından ortaya çıkan olayları (yeni e-postalar, takvim davetleri, dosyalar, liste öğeleri, Teams etkinliği) yönetmek zorunda, ancak webhook kayıtları, el sıkışma doğrulama ve OAuth yenilemeleri için bu emek harcamak istemezsiniz. Fonksiyonunuzun, izlenen bir Office 365 Outlook klasörüne teslim edilen yeni e-postaları işlemek, iletiyi sınıflandırmak, zenginleştirme için Office 365 bağlayıcısını çağırmak ve e-postayı işaretlemek veya taşımak üzere çalıştığı bir durumu düşünün. Tüm bu dağıtık işler, uygulamanız tarafından yenileme tokenları konusunda endişelenmeden yapılıyor; bu da bağlayıcı isim alanınız tarafından yönetiliyor.

  • Özel hizmet istemcilerini değiştirin
    Fonksiyon kodunuz zaten özel HTTP istemcileri kullanarak Microsoft 365 veya üçüncü taraf API'leri çağırıyor; bu da birçok bağlantıda sırları, kapsamları ve tekrar deneme politikalarını yönetmenizi gerektiriyor ve bu da hızla bakım yükü haline gelebilir. Bunun yerine, konnektör SDK'larındaki tiplenen istemcileri doğrudan fonksiyon kodunda kullanabilir ve yönetilen konnektörlerin bağlantıları kendileri halletmesine izin verebilirsiniz.

  • Mevcut bir uygulama dağıtımından yararlanın
    Zaten bir dağıtım hattı ve izleme araçlarıyla olay odaklı bir fonksiyon uygulama projesi geliştirdiniz. Yönetilen bağlantıları kullanarak aynı projeye yeni bir harici servis tetikleyici tabanlı fonksiyon ekleyebilir ve mevcut altyapıdan faydalanabilirsiniz. Örneğin, eskiden mesaj kuyruklarına veya Logic Apps'e dayanan bir fonksiyon uygulaması artık doğrudan Teams aktivitelerine tepki verebilir ve organizasyon içi kontroller ve yönetici aramaları için Office 365'e bağlanabilir.

  • Aracı iş akışları
    Bir fonksiyonun bir olay aldığı, yapay zeka modeliyle amaç yaptığı ve ardından bir bağlayıcı işlemiyle harici bir servise geri döndüğü iş akışları oluşturuyorsunuz. Azure İşlevleri barındırılan becerilerden yararlanarak ajanik iş akışınızı programlayabilir ve yine de yönetilen bağlayıcı tabanlı tetikleyiciler ve yönetilen bağlayıcı SDK'larından faydalanabilirsiniz.

  • Yönetilen entegrasyonla kod-öncelikli kontrol
    Yönetilen bağlantıların dış servisle gelen ve çıkış iletişimini kolaylaştırmasını istersiniz, ancak kod öncelikli programlama modelini ve orkestrasyon üzerinde tam kontrolü tercih ediyorsunuz; dallanma, adımlar arasında kimlik doğrulama yönetimi ve mevcut kütüphanelerinizin yeniden kullanımı dahil.

    Tip

    İş yükü tamamen bağlayıcılar arasında ve özel kod olmadan orkestrasyon olduğunda, Logic Apps Standard en basit seçenek olarak kalır. Daha fazla bilgi için Diğer Azure entegrasyon seçenekleriyle ilişki bölümüne bakınız.

Diğer Azure tümleştirme seçenekleriyle ilişki

Azure İşlevleri'taki yönetilen bağlayıcılar ek niteliğindedir. Doğru seçim, iş yükünün ne kadar özel kod gerektirdiğine ve ekibin görsel tasarımcı veya kod tercih edip etmediğine bağlıdır.

Seçenek En uygunu... Şunları elde edersiniz...
Logic Apps Standard Bağlayıcılar arasında bir iş akışını koordine etmek; ekip görsel bir tasarımcıyı tercih eder; adımlar arasında çok az özel kod. Aynı konnektör ekosistemi için düşük kodlu tasarımcı.
Yönetilen bağlayıcılara sahip Azure İşlevleri Özel dallanma, süreç içi kitaplıklar, diğer bağlayıcılar ve tetikleyici ile eylem arasında yapay zeka model çağrıları içeren kod odaklı deneyimler. .NET, Python veya Node.js yazarlık; Fonksiyonların dağıtımı ve izlenmesi; harici hizmetler için webhook veya OAuth kodu yok.
Yönetilen bağlayıcılara sahip Azure App Service Mevcut bir web uygulamasına veya API'ye bağlayıcı olayları ve eylemleri eklemek. Uygulamanızın rotaları ve aynı bağlantılı SDK istemcileri üzerinden kimlik doğrulamalı HTTP geri çağrıları; tetikleyiciden ayrı olarak yapılandırılmış alıcı uygulama doğrulaması.
Servis SDK'larıyla HTTP tetikleyicileri Hedef hizmet için yönetilen bir konnektör bulunmadığı veya konnektör tarafından sağlanmayan protokol düzeyinde kontrollere ihtiyaç duyduğunuz durumlarda. Doğrulama, yeniden deneme ve webhook doğrulaması üzerinde tam kontrol; Bir konnektör isim alanı için bir gereklilik yok.

Bir fonksiyon uygulaması, bağlayıcı tetikleyicileri ve doğrudan servis SDK'larını kullanabilir ve Logic Apps iş akışlarına katılabilir. Mevcut bir HTTP tetikleyicisi uygulamasına bağlayıcı tetikleyicisi ekleyebilir ve SDK istemcilerini artımlı olarak benimseyebilirsiniz.

Paketler ve önkoşullar

Her desteklenen dil, tetikleyici bağlama ve bağlayıcı SDK istemcilerini getiren küçük bir paket setine sahiptir.

İşçi uzatma paketi, konnektör tetik bağlamasını getirir. Azure.Connectors.Sdk.* paketleri (her bağlayıcı için bir tane), türlendirilmiş yükler ve SDK istemcileri içerir.

dotnet add package Microsoft.Azure.Functions.Worker.Extensions.Connector --prerelease
dotnet add package Azure.Connectors.Sdk --prerelease

.NET izole worker modeli için net8.0 veya net10.0 ve en son Functions worker sürümünü hedef alın.

Python, tetikleyici bağlamasını yüklemek için önizleme uzantı paketini ve tür tanımlı Office 365 modelleri için azurefunctions-extensions-connectors paketini kullanır. Paketi host.json içine ekleyin:

{
    "version": "2.0",
    "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle.Preview",
        "version": "[4.42.0, 5.0.0)"
    }
}

Çalışma zamanı ve uzantı paketlerini yükleyin:

pip install "azure-functions>=2.2.0b4"
pip install azurefunctions-extensions-connectors

@app.connector_trigger dekoratörü, tüm yönetilen konnektör türleri için çalışır. Türlendirilmiş payload modelleri aktif olarak geliştirilmekte ve azurefunctions-extensions-connectors paketi aracılığıyla eklenmektedir. Tipi modelleri olmayan yönetilen konnektörler için, yükü bir dizi olarak ele alın.

Node.js tetikleyici bağlamasını yüklemek için deneysel uzantı paketini kullanır. Paketi host.json içine ekleyin:

{
    "version": "2.0",
    "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle.Preview",
        "version": "[4.42.0, 5.0.0)"
    }
}

İşlevler kitaplığını ve bağlayıcı paketlerini yükleyin:

npm install @azure/functions
npm install @azure/functions-extensions-connectors
npm install @azure/connectors

Tipli modeller varsa, connectors.office365.onNewEmail içindeki tipli giriş noktalarını kullanın (örneğin, @azure/functions-extensions-connectors). Ham yükü istediğinizde, herhangi bir yönetilen bağlayıcı için app.connectorTrigger konumundaki @azure/functions öğesini kullanın.

Important

Go, Java ve PowerShell halka açık önizlemede desteklenmiyor. Desteklenen çalışma zamanlarının güncel listesi için önizleme kullanılabilirliğine bakınız.

Bağlayıcı tabanlı tetikleyiciler

Yönetilen bir konnektör tabanlı tetikleyici, bağlı servisde bir olay gerçekleştiğinde işlevinizi çalıştırır. Connector isim alanı, konnektör uzantısı webhook uç noktasını kullanarak olayı fonksiyon uygulamanıza HTTPS üzerinden iletir:

POST /runtime/webhooks/connector?functionName={FunctionName}&code={connector_extension_key}

{FunctionName}, [Function] özniteliğinizdeki adla eşleşir. {connector_extension_key} çalıştırarak alınan bir sistem anahtarının değeridir:

{FunctionName}, @app.function_name dekoratörünüzdeki adla eşleşir. {connector_extension_key} çalıştırarak alınan bir sistem anahtarının değeridir:

{FunctionName} tetikleyici kaydınızdaki isimle eşleşiyor. {connector_extension_key} çalıştırarak alınan bir sistem anahtarının değeridir:

az functionapp keys list \
    --resource-group <resource-group> \
    --name <function-app> \
    --query "systemKeys.connector_extension" \
    --output tsv

Bağlayıcı isim alanındaki tetikleyici yapılandırması, o geri çağrı URL'sini saklar ve her geri çağrıda sistem anahtarını sunar. Functions çalışma zamanı, fonksiyonunuzu çalıştırmadan önce anahtarı doğrular. Paylaşılan sırlar olmadan bir kurulum için, fonksiyon uygulamasının önüne App Service yerleşik kimlik doğrulaması koyabilir ve bağlayıcı isim alanından yönetilen bir kimlik tokenı doğrulayabilirsiniz. Tam desen için .NET örneğine bakınız: yönetilen kimlik ile yerleşik kimlik doğrulama.

Tip

Önizleme sırasında bağlayıcıyla tetiklenen işlevler için Esnek Tüketim planını kullanın. Esnek Tüketim, bağlayıcı platformunun kimlik doğrulama modeliyle uyumlu örnek başına ölçeklendirme ve yönetilen kimlik desteği sağlar.

İstek yükleri, olay gövdesinin yanı sıra x-ms-* tetikleyici yapılandırmasını, bağlantıyı, olay türünü ve bağıntı kimliğini tanımlayan bir dizi üst bilgi içerir. Yönetilen konnektör bir SDK modeline sahip olduğunda, çalışma zamanı yükü doğrudan o modele seri dışı bırakır. İstemci SDK'ları olmayan yönetilen konnektörler için, fonksiyonunuz ham JSON gövdesini alır.

Aşağıdaki örnekte, bir Office 365 Outlook posta kutusuna yeni bir e-posta geldiğinde tetikleyen bir işlev gösterilmektedir. Tetikleyici kaydı dil başına yapılır; Konektör isim alanındaki tetikleyici yapılandırması her durumda aynıdır.

using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.Functions.Worker;
using Microsoft.Azure.Functions.Worker.Extensions.Connector;
using Azure.Connectors.Sdk.Office365.Models;
using Microsoft.Extensions.Logging;

public class OnNewEmail
{
    private readonly ILogger<OnNewEmail> _logger;

    public OnNewEmail(ILogger<OnNewEmail> logger) => _logger = logger;

    [Function("OnNewEmail")]
    public IActionResult Run(
        [ConnectorTrigger()] Office365OnNewEmailTriggerPayload payload)
    {
        var emails = payload?.Body?.Value ?? [];
        foreach (var email in emails)
        {
            _logger.LogInformation(
                "Received email from {From} with subject '{Subject}'.",
                email.From, email.Subject);
        }

        return new OkResult();
    }
}

Office365OnNewEmailTriggerPayload modeli ve diğer işlem yükü türleri Azure.Connectors.Sdk.Office365.Models'den gelir. Tam işlem-yük eşlemesi için Operations to Azure İşlevleri signature mapping bölümüne bakınız.

import azure.functions as func
import json
import logging

app = func.FunctionApp()

@app.function_name(name="OnNewEmail")
@app.connector_trigger(arg_name="payload")
def on_new_email(payload: str) -> None:
    data = json.loads(payload)
    emails = data.get("body", {}).get("value", [])
    for email in emails:
        logging.info(
            "Received email from %s with subject '%s'.",
            email.get("from"), email.get("subject"))

özellikle Office 365 OnNewEmailV3 işlemi için, azurefunctions-extensions-connectors'den yazılan dekoratörü kullanabilirsiniz:

import azure.functions as func
import azurefunctions.extensions.connectors.office365 as office365
import logging

app = func.FunctionApp()

@app.function_name(name="OnNewEmail")
@app.connector_trigger(arg_name="email")
def on_new_email(email: office365.ClientReceiveMessage) -> None:
    logging.info(
        "Received email from %s with subject '%s'.",
        email.from_, email.subject)
import { InvocationContext } from '@azure/functions';
import {
    connectors,
    EmailTriggerContext,
} from '@azure/functions-extensions-connectors';

connectors.office365.onNewEmail('OnNewEmail', {
    handler: async (
        context: EmailTriggerContext,
        invocationContext: InvocationContext,
    ) => {
        for (const email of context.emails) {
            invocationContext.log(
                `Received email from '${email.from}' with subject '${email.subject}'.`,
            );
        }
    },
});

Henüz tür tanımlı bir giriş noktası olmayan herhangi bir bağlayıcı için, app.connectorTrigger içindeki genel @azure/functions öğesini kullanın:

import { app, InvocationContext } from '@azure/functions';

app.connectorTrigger('OnNewItem', {
    handler: async (payload: unknown, context: InvocationContext) => {
        const data = typeof payload === 'string' ? JSON.parse(payload) : payload;
        const items: Record<string, unknown>[] = (data as any)?.body?.value ?? [];
        for (const item of items) {
            context.log(`Item ID: ${item.Id}`);
        }
    },
});

Important

Bağlayıcı tetikleyicisi genel önizleme için bu dilde kullanılamaz.

Trigger yapılandırmasını Azure CLI, ARM veya Bicep kullanarak bağlayıcı isim alanında oluşturuyorsunuz. Bu adım konnektör platformunun bir parçasıdır ve konnektörlerin içerik setinde belgelenmiştir. İşlevler tetikleyici kaydı için kendi yapılandırma komutlarını göndermez.

Fonksiyonlarınızı bir bağlayıcı isim alanına doğrulayın

Uyarı

Bu bölüm, konektör isim alanı ile fonksiyon uygulamanız arasındaki doğrulamayı kapsar. Bağlantı isim alanının yukarı akış servislerine (Microsoft 365, Teams, SharePoint) nasıl kimlik doğrulaması yaptığı için Azure bağlayıcıları genel bakışına bakınız.

Varsayılan kimlik doğrulama modeli, her geri çağrıda konnektör isim alanının sunduğu paylaşılan bir sistem anahtarı (connector_extension) kullanır. Ancak paylaşılan anahtarlar, tetikleyici bazında kapsamlandırılamaz ve işlev uygulaması ile bağlayıcı ad alanı arasında koordineli anahtar rotasyonu gerektirir. Üretim iş yükleri için bunun yerine, yönetilen bir kimlikle App Service yerleşik kimlik doğrulamasını (Easy Auth olarak da adlandırılır) kullanın.

Bu desende, bağlayıcı isim alanı kendi sistem tarafından atanan veya kullanıcı tarafından atanan yönetilen kimliğini kullanarak her geri çağrı için bir Entra ID belirteçeği talep eder. İşlev uygulaması, herhangi bir istek İşlevler konağına ulaşmadan önce hedef kitlesini, vereni ve çağıranın nesne kimliğini içeren belirteci doğrular. Paylaşılan anahtar yok, istemci gizli anahtarları yok. Hiçbir yerde.

Uçtan uca çalışan bir örnek için şu depoya bakın: functions-connectors-net-builtinauth.

İşlev uygulaması yapılandırması

Yerleşik kimlik doğrulama, Fonksiyonlar çalışma zamanı talebi almadan önce App Service çalışanı sınırında çalışır. Bunu ARM özelliği veya Bicep'teki eşdeğeri üzerinden yapılandırırsınızauthsettingsV2.

Setting Purpose
requireAuthentication: true Geçerli bir belirteci olmayan tüm istekleri reddeder (401 döndürür).
identityProviders.azureActiveDirectory.enabled: true Entra ID belirteçlerini doğrular.
registration.clientId Yerleşik kimlik doğrulamasının belirteçleri doğruladığı Entra uygulama kaydının uygulama (istemci) kimliği.
registration.openIdIssuer Kiracınızın veren URL'si: https://login.microsoftonline.com/{tenantId}/v2.0.
validation.allowedAudiences Entra uygulamasının istemci kimliği ve tanımlayıcı URI'si. Belirteçler, aud hedef kitle isteminde bu hedef kitlelerden birini taşımalıdır.
validation.defaultAuthorizationPolicy.allowedPrincipals.identities Yönetilen kimliklerin nesne (sorumlu) kimlikleri işlevi çağırmaya izin verdi. Burada yalnızca bağlayıcı isim alanının yönetilen kimliği listelenmelidir. oid claim’i farklı olan tüm belirteçler 403 hatası alır.

İşlev uygulamasının ayrıca, Entra uygulama kaydıyla federasyonu yapılmış kullanıcı tarafından atanan bir yönetilen kimliğe de ihtiyacı vardır. Yerleşik kimlik doğrulaması, istemci gizli anahtarını depolamadan Entra uygulaması için istemci onayları oluşturmak üzere bu federe kimlik bilgisini (FIC) kullanır. Bicep şablonu, clientSecretSettingName öğesini kullanıcı tarafından atanan MI'nin istemci kimliğini tutan bir uygulama ayarına ayarlar ve yerleşik kimlik doğrulamanın gizli dizi yerine FIC kullanmasını sağlar.

Yerleşik kimlik doğrulama zaten her isteği doğruladığı için, host.json içindeki gereksiz sistem anahtarı denetimini devre dışı bırakabilirsiniz; bu da şu JSON parçası gibi görünür:

{
    ...
    "extensions": {
        "connector": {
            "system": {
                "webhookAuthorizationLevel": "Anonymous"
            }
        }
    }
}

Bağlayıcı isim alanı yapılandırması

Bağlantı isim alanınızda sistem tarafından atanmış veya kullanıcı tarafından atanan yönetilen bir kimlik etkinleştirilmiş ve eklenmiş olmalıdır. Tetikleyici yapılandırmasını oluştururken, kullanıcı tarafından atanan bir kimlik için authentication.type = ManagedServiceIdentity ve authentication.identity = <resource-id-of-managed-identity> belirtin ya da sistem tarafından atanan bir kimlik için identity belirtmeyin. Ayrıca, bağlayıcı çalışma zamanının token’da hangi hedef kitlenin isteneceğini bilmesi için authentication.audience = <entra-app-client-id> öğesini de belirtin.

Bağlayıcı çalışma zamanı, her geri çağrıda bir Entra ID tokenı oluşturmak için bu yönetilen kimliği kullanır. Bu token'da, iss (issuer) sizin kiracınızdır, aud (audience) Entra uygulama istemci ID'dir ve oid (object ID) kimliğin ana kimliğidir. Yerleşik kimlik doğrulaması üçünü de doğrular.

Bağlayıcı isim alanı kaynağı da bağlantıya erişim gerektirir, örneğin bir office365 bağlantı. Bu erişimi, yönetilen kimliğin ana kimliğini listeleyen bir erişim politikası ile ver. Örnek bicep dosyası, hem isim alanı kimliği hem de bağlantı erişim politikası için tam yapılandırmayı gösterir.

Uygulananlar

Yerleşik kimlik doğrulaması belirteçleri sırayla doğrular:

  1. Belirteç varlığı - Eksik veya süresi dolmuş belirteç → 401
  2. İmza - Kiracınız için verenin JWKS'sinde doğrulandı
  3. iss (düzenleyen) - openIdIssuer ile eşleşmelidir
  4. aud (hedef kitle) - allowedAudiences içinde olmalıdır
  5. oid (nesne/asıl kimlik) - içindeki allowedPrincipals.identitieskimliklerden biriyle eşleşmelidir. Başka herhangi bir kimlik → 403

Bu kontrol App Service kenarında çalıştığı için, fonksiyon kodunuz asla bağlayıcı isim alanının yönetilen kimliğinden gelmeyen bir istek görmez. Erişim kontrolü için herhangi bir başvuru koduna ihtiyacınız yok.

Kimlik doğrulama akışı

┌─────────────────────────────────────────────────────────────────┐
│  Connector namespace                                            │
│  • System-assigned or user-assigned managed identity enabled    │
│  • Trigger config: authentication.type = ManagedServiceIdentity │
│                    authentication.audience = <Entra app ID>     │
│                    callbackUrl = https://<func>/runtime/…       │
└────────────────────────┬───────────────────────────────────────┘
                         │
                         │  POST callbackUrl
                         │  Authorization: Bearer <AAD token>
                         │     iss = your tenant
                         │     aud = Entra app clientId
                         │     oid = managed identity principalId
                         ▼
┌──────────────────────────────────────────────────────────────┐
│  Function App                                                │
│                                                              │
│   ┌──────────────────────────────────────────────────────┐   │
│   │ Built-in authentication  (App Service edge)          │   │
│   │   • Validates signature, iss, aud, exp               │   │
│   │   • Checks oid ∈ allowedPrincipals.identities        │   │
│   │   → No token  → 401                                  │   │
│   │   → Wrong oid → 403                                  │   │
│   └────────────────────┬─────────────────────────────────┘   │
│                        │ pass                                │
│                        ▼                                     │
│   ┌──────────────────────────────────────────────────────┐   │
│   │ /runtime/webhooks/connector                          │   │
│   │   (webhookAuthorizationLevel = Anonymous)            │   │
│   └────────────────────┬─────────────────────────────────┘   │
│                        ▼                                     │
│   ┌──────────────────────────────────────────────────────┐   │
│   │ Your function(payload)                               │   │
│   └──────────────────────────────────────────────────────┘   │
└──────────────────────────────────────────────────────────────┘
                         ▲
                         │ FIC (federated identity credential)
         ┌───────────────┴────────────────┐
         │  Entra app registration         │
         │  (federated to function-app MI) │
         └─────────────────────────────────┘

Kodunuzda bağlayıcıları kullanma

Connector SDK, fonksiyonunuzun konnektör işlemlerini çıkış eylemleri olarak çağırmasını sağlar. İstemci tarafı, tetikleyicilerin kullandığı konektör ad alanındaki aynı temel yönetilen konektörü kullanır; böylece tek bir yönetilen konektör, aynı hizmet hesabı için hem gelen tetikleyicileri hem de giden çağrıları destekleyebilir.

.NET'da her bağlayıcı, Office365Client'da türü yazılan bir istemci (örneğin, Office365UsersClient, TeamsClient, Azure.Connectors.Sdk.{Service}) iletir. İstemci oluşturucusu, bağlantının çalışma zamanı URL'sini ve kimlik bilgilerini alır.

Aşağıdaki desen, uçtan uca e-posta kullanıcısı arama Teams örneğinden örnektir:

using Azure.Core;
using Azure.Identity;
using Azure.Connectors.Sdk.Office365;
using Azure.Connectors.Sdk.Office365Users;
using Azure.Connectors.Sdk.Teams;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;

var credential = new DefaultAzureCredential(new DefaultAzureCredentialOptions
{
    ManagedIdentityClientId = Environment.GetEnvironmentVariable("AZURE_CLIENT_ID")
});

var host = new HostBuilder()
    .ConfigureFunctionsWebApplication()
    .ConfigureServices(services =>
    {
        services.AddSingleton<TokenCredential>(credential);

        services.AddSingleton(sp => new Office365Client(
            new Uri(Environment.GetEnvironmentVariable("OFFICE365_CONNECTION_RUNTIME_URL")!),
            sp.GetRequiredService<TokenCredential>()));

        services.AddSingleton(sp => new Office365UsersClient(
            new Uri(Environment.GetEnvironmentVariable("OFFICE365USERS_CONNECTION_RUNTIME_URL")!),
            sp.GetRequiredService<TokenCredential>()));

        services.AddSingleton(sp => new TeamsClient(
            new Uri(Environment.GetEnvironmentVariable("TEAMS_CONNECTION_RUNTIME_URL")!),
            sp.GetRequiredService<TokenCredential>()));
    })
    .Build();

host.Run();

*_CONNECTION_RUNTIME_URL ayarları, bağlayıcı ad alanındaki bağlantı başına çalışma zamanı uç noktasını işaret eder. İstemcileri işlevinize enjekte edin ve UserProfileAsync, GetEmailsAsync veya FlagAsync gibi türlendirilmiş yöntemleri çağırın. Sdk istemcilerini bağlayıcı olmayan tetikleyicilerden de çağırabilirsiniz (örneğin, Teams'e postalayan bir HTTP tetikleyicisi).

Python’da, türlendirilmiş istemciler için azure-connectors yükleyin (örneğin, office365, teams, office365Users). İstemciler, bağlantı başına çalışma zamanı URL’sini ve bir kimlik bilgisini kabul eder. SDK eylem kapsamı genişliyor.

Node.js içinde, tiplenmiş istemciler için @azure/connectors yükleyin (örneğin, office365, teams, office365Users). İstemciler, bağlantı başına çalışma zamanı URL’sini ve bir kimlik bilgisini kabul eder. SDK eylem kapsamı genişliyor.

Important

Connector SDK'sı bu dillerde halka açık önizleme için mevcut değildir.