Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Verwenden Sie den Connector-Trigger, um eine Funktion auszuführen, wenn ein Ereignis in einem Dienst wie Office 365, SharePoint, Dataverse, SMTP, Salesforce und vielen weiteren auftritt. Der Trigger empfängt Ereignisse von einem verwalteten Connector im Azure Connector Namespace. Um die verfügbaren verwalteten Steckverbinder zu erkunden, siehe die Referenz zu den Anschlüssen.
Informationen zur Installation der Erweiterung, unterstützten Bindungstypen, Rückruf-Authentifizierung und app-weiten Konfiguration finden Sie in der Übersicht der Connector-Erweiterung.
Important
Der Connector-Trigger befindet sich derzeit in der öffentlichen Vorschau. Funktionen, Konfigurationsnamen und unterstützte Anschlüsse können sich vor der allgemeinen Verfügbarkeit (GA) ändern. Die Nutzung dieser Funktion unterliegt den ergänzenden Nutzungsbedingungen für Microsoft Azure Previews.
Note
Der Connector-Trigger wird derzeit für diese Sprache nicht unterstützt.
Beispiele
Die Beispiele Office 365 Outlook und SharePoint Online verwenden stark typisierte Nutzlasten aus dem Azure Connectors SDK. Für Connector-Operationen, die noch keine stark typisierten Nutzlasten besitzen, binden Sie an string , um die rohe JSON-Nutzlast zu empfangen. Diese Beispiele protokollieren absichtlich nur grundlegende Nutzlastinformationen, um sich auf die Definition von Connector-ausgelösten Funktionen zu konzentrieren. Ersetzen Sie das Logging durch die Verarbeitungslogik Ihrer Anwendung.
Office 365 Outlook
Das folgende Beispiel läuft, wenn eine neue E-Mail im konfigurierten Office 365 Outlook-Postfach eingeht:
using Microsoft.Azure.Functions.Worker;
using Microsoft.Azure.Functions.Worker.Extensions.Connector;
using Microsoft.Extensions.Logging;
using Azure.Connectors.Sdk.Office365.Models;
namespace Office365App;
public class O365Functions
{
private readonly ILogger<O365Functions> _logger;
public O365Functions(ILogger<O365Functions> logger)
{
_logger = logger;
}
[Function("OnNewEmail")]
public void OnNewEmail(
[ConnectorTrigger] Office365OnNewEmailTriggerPayload payload)
{
var messageCount = payload.Body?.Value?.Count ?? 0;
_logger.LogInformation(
"Received {MessageCount} new email message(s).",
messageCount);
}
}
Der Typ Office365OnNewEmailTriggerPayload ist im Namensraum Azure.Connectors.Sdk.Office365.Models definiert.
Für das vollständige Codebeispiel, einschließlich Infrastruktur und Trigger-Registrierung, siehe Office 365 Outlook Trigger für .NET.
SharePoint Online
Das folgende Beispiel läuft, wenn eine Datei in der konfigurierten SharePoint Online-Dokumentbibliothek erstellt wird:
using Microsoft.Azure.Functions.Worker;
using Microsoft.Azure.Functions.Worker.Extensions.Connector;
using Microsoft.Extensions.Logging;
using Azure.Connectors.Sdk.SharePointOnline.Models;
namespace SharePointApp;
public class SharePointFunctions
{
private readonly ILogger<SharePointFunctions> _logger;
public SharePointFunctions(ILogger<SharePointFunctions> logger)
{
_logger = logger;
}
[Function("OnNewFile")]
public void OnNewFile(
[ConnectorTrigger] SharePointOnlineOnNewFileItemsTriggerPayload payload)
{
var fileCount = payload.Body?.Value?.Count ?? 0;
_logger.LogInformation(
"Received {FileCount} new SharePoint file(s).",
fileCount);
}
}
Der Typ SharePointOnlineOnNewFileItemsTriggerPayload ist im Namensraum Azure.Connectors.Sdk.SharePointOnline.Models definiert.
Für das vollständige Codebeispiel, einschließlich Infrastruktur und Trigger-Registrierung, siehe SharePoint Online Trigger für .NET.
Steckverbinder ohne stark typisierte Nutzlast
Einige Connector-Events haben noch keine stark typisierte .NET-Nutzlast. Das folgende Beispiel läuft, wenn eine neue Nachricht zu einem Microsoft Teams-Chat oder -Kanal hinzugefügt wird und die Nutzlast stringan bindet:
using Microsoft.Azure.Functions.Worker;
using Microsoft.Azure.Functions.Worker.Extensions.Connector;
using Microsoft.Extensions.Logging;
namespace TeamsApp;
public class TeamsFunctions
{
private readonly ILogger<TeamsFunctions> _logger;
public TeamsFunctions(ILogger<TeamsFunctions> logger)
{
_logger = logger;
}
[Function("OnNewTeamsMessage")]
public void OnNewTeamsMessage([ConnectorTrigger] string payload)
{
_logger.LogInformation("Received a new Teams message: {Payload}", payload);
}
}
Um Connector-Operationen zu identifizieren, die noch keine stark typisierten Payloads besitzen, siehe Operations to Azure Functions signature mapping.
Attribute
In einer .NET-isolierten Worker-App wenden Sie auf den Funktionsparameter an[ConnectorTrigger], der die Ereignisnutzlast empfängt:
[Function("OnConnectorEvent")]
public void Run([ConnectorTrigger] string payload)
{
// Process the raw JSON payload.
}
Das Attribut ConnectorTrigger hat keine konfigurierbaren Eigenschaften. Konfigurieren Sie den Connector, die Operation, die Betriebsparameter, die Zielfunktion und die Rückruf-Authentifizierung in der Trigger-Konfiguration im Azure Connector Namespace.
Beispiele
Die Node.js-Connector-Erweiterung bietet typisierte Kontexte für die in diesem Abschnitt gezeigten Operationen Office 365 Outlook, SharePoint Online und Microsoft Teams. Diese Beispiele protokollieren absichtlich nur grundlegende Nutzlastinformationen, um sich auf die Definition von Connector-ausgelösten Funktionen zu konzentrieren. Ersetzen Sie das Logging durch die Verarbeitungslogik Ihrer Anwendung.
Office 365 Outlook
Das folgende Beispiel läuft, wenn eine neue E-Mail im konfigurierten Office 365 Outlook-Postfach eingeht:
import { InvocationContext } from '@azure/functions';
import {
connectors,
EmailTriggerContext,
} from '@azure/functions-extensions-connectors';
connectors.office365.onNewEmail('OnNewEmail', {
handler: async (
context: EmailTriggerContext,
invocationContext: InvocationContext,
) => {
invocationContext.log(
`Received ${context.emails.length} new email message(s).`,
);
},
});
Der Typ EmailTriggerContext stellt die Nachrichten als getyptes emails Array sichtbar.
Für das vollständige Codebeispiel, einschließlich Infrastruktur und Trigger-Registrierung, siehe Office 365 Outlook Trigger für TypeScript.
SharePoint Online
Das folgende Beispiel läuft, wenn eine Datei in der konfigurierten SharePoint Online-Dokumentbibliothek erstellt wird:
import { InvocationContext } from '@azure/functions';
import {
connectors,
FileTriggerContext,
} from '@azure/functions-extensions-connectors';
connectors.sharepoint.onNewFile('OnSharepointNewFile', {
handler: async (
context: FileTriggerContext,
invocationContext: InvocationContext,
) => {
invocationContext.log(
`Received ${context.files.length} new SharePoint file(s).`,
);
},
});
Der Typ FileTriggerContext stellt die Dateimetadaten als typisiertes files Array offen.
Für das vollständige Codebeispiel, einschließlich Infrastruktur und Trigger-Registrierung, siehe SharePoint Online Trigger für TypeScript.
Microsoft Teams
Das folgende Beispiel gilt, wenn eine neue Nachricht zu einem Microsoft Teams-Kanal hinzugefügt wird:
import { InvocationContext } from '@azure/functions';
import {
ChannelMessageTriggerContext,
connectors,
} from '@azure/functions-extensions-connectors';
connectors.teams.onNewChannelMessage('OnNewChannelMessage', {
handler: async (
context: ChannelMessageTriggerContext,
invocationContext: InvocationContext,
) => {
invocationContext.log(
`Received ${context.messages.length} new Teams message(s).`,
);
},
});
Der Typ ChannelMessageTriggerContext stellt die Nachrichten als getyptes messages Array sichtbar.
Für das vollständige Codebeispiel, einschließlich Infrastruktur und Trigger-Registrierung, siehe Microsoft Teams-Trigger für TypeScript.
Registration
Verwenden Sie die generische connectorTrigger Funktion für eine Operation, die keine steckerspezifische Registrierung hat:
import { InvocationContext } from '@azure/functions';
import {
connectorTrigger,
ConnectorTriggerContext,
} from '@azure/functions-extensions-connectors';
connectorTrigger('OnConnectorEvent', {
handler: async (
context: ConnectorTriggerContext,
invocationContext: InvocationContext,
) => {
invocationContext.log(JSON.stringify(context.rawPayload));
},
});
Die generische Registrierung setzt den Artikeltyp standardmäßig auf unknown. Validiere die Nutzlast, bevor du auf operation-spezifische Eigenschaften zugreifst. Konfigurieren Sie den Connector, die Operation, die Betriebsparameter, die Zielfunktion und die Rückruf-Authentifizierung in der Trigger-Konfiguration im Azure Connector Namespace.
Beispiele
Die Node.js-Connector-Erweiterung bietet connector-spezifische Kontexte für die in diesem Abschnitt gezeigten Office 365 Outlook-, SharePoint-Online- und Microsoft Teams-Operationen. Diese Beispiele protokollieren absichtlich nur grundlegende Nutzlastinformationen, um sich auf die Definition von Connector-ausgelösten Funktionen zu konzentrieren. Ersetzen Sie das Logging durch die Verarbeitungslogik Ihrer Anwendung.
Office 365 Outlook
Das folgende Beispiel läuft, wenn eine neue E-Mail im konfigurierten Office 365 Outlook-Postfach eingeht:
const {
connectors,
} = require('@azure/functions-extensions-connectors');
connectors.office365.onNewEmail('OnNewEmail', {
handler: async (context, invocationContext) => {
invocationContext.log(
`Received ${context.emails.length} new email message(s).`,
);
},
});
Der Handler-Kontext stellt die Nachrichten über das emails Array sichtbar.
SharePoint Online
Das folgende Beispiel läuft, wenn eine Datei in der konfigurierten SharePoint Online-Dokumentbibliothek erstellt wird:
const {
connectors,
} = require('@azure/functions-extensions-connectors');
connectors.sharepoint.onNewFile('OnSharepointNewFile', {
handler: async (context, invocationContext) => {
invocationContext.log(
`Received ${context.files.length} new SharePoint file(s).`,
);
},
});
Der Handler-Kontext stellt die Dateimetadaten über das files Array frei.
Microsoft Teams
Das folgende Beispiel gilt, wenn eine neue Nachricht zu einem Microsoft Teams-Kanal hinzugefügt wird:
const {
connectors,
} = require('@azure/functions-extensions-connectors');
connectors.teams.onNewChannelMessage('OnNewChannelMessage', {
handler: async (context, invocationContext) => {
invocationContext.log(
`Received ${context.messages.length} new Teams message(s).`,
);
},
});
Der Handler-Kontext stellt die Nachrichten über das messages Array sichtbar.
Registration
Verwenden Sie die generische connectorTrigger Funktion für eine Operation, die keine steckerspezifische Registrierung hat:
const {
connectorTrigger,
} = require('@azure/functions-extensions-connectors');
connectorTrigger('OnConnectorEvent', {
handler: async (context, invocationContext) => {
invocationContext.log(JSON.stringify(context.rawPayload));
},
});
Die generische Registrierung normalisiert den Rückruf-Umschlag, validiert jedoch nicht die operation-spezifische Nutzlastform. Validiere die Nutzlast, bevor du auf operation-spezifische Eigenschaften zugreifst. Konfigurieren Sie den Connector, die Operation, die Betriebsparameter, die Zielfunktion und die Rückruf-Authentifizierung in der Trigger-Konfiguration im Azure Connector Namespace.
Beispiele
Das Office 365 Outlook Beispiel verwendet eine stark typisierte Nutzlast, die von der Python Connector-Erweiterung registriert wird. Die Beispiele str für SharePoint Online und Microsoft Teams binden und parsen das rohe JSON, da diese Operationen derzeit keine registrierten Python-Konverter mit Typisierung haben. Diese Beispiele protokollieren absichtlich nur grundlegende Nutzlastinformationen, um sich auf die Definition von Connector-ausgelösten Funktionen zu konzentrieren. Ersetzen Sie das Logging durch die Verarbeitungslogik Ihrer Anwendung.
Office 365 Outlook
Das folgende Beispiel läuft, wenn eine neue E-Mail im konfigurierten Office 365 Outlook-Postfach eingeht:
import logging
from typing import List
import azure.functions as func
import azurefunctions.extensions.connectors.office365 as office365
app = func.FunctionApp()
@app.function_name(name="OnNewEmail")
@app.connector_trigger(arg_name="emails")
def on_new_email(
emails: List[office365.ClientReceiveMessage],
) -> None:
logging.info(
"Received %s new email message(s).",
len(emails),
)
Der Typ ClientReceiveMessage wird bereitgestellt durch azurefunctions-extensions-connectors und repräsentiert die Office 365 Outlook Nachrichten im Batch.
Für das vollständige Codebeispiel, einschließlich Infrastruktur und Trigger-Registrierung, siehe Office 365 Outlook Trigger für Python.
SharePoint Online
Das folgende Beispiel läuft, wenn eine Datei in der konfigurierten SharePoint Online-Dokumentbibliothek erstellt wird:
import json
import logging
import azure.functions as func
app = func.FunctionApp()
@app.function_name(name="OnSharepointNewFile")
@app.connector_trigger(arg_name="payload")
def on_sharepoint_new_file(payload: str) -> None:
data = json.loads(payload)
files = data.get("body", {}).get("value", [])
logging.info(
"Received %s new SharePoint file(s).",
len(files),
)
Für das vollständige Codebeispiel, einschließlich Infrastruktur und Trigger-Registrierung, siehe SharePoint Online Trigger für Python.
Steckverbinder ohne stark typisierte Nutzlast
Das folgende Beispiel läuft, wenn eine neue Nachricht zu einem Microsoft Teams-Kanal hinzugefügt wird und die Nutzlast an strbindet:
import json
import logging
import azure.functions as func
app = func.FunctionApp()
@app.function_name(name="OnNewChannelMessage")
@app.connector_trigger(arg_name="payload")
def on_new_channel_message(payload: str) -> None:
data = json.loads(payload)
messages = data.get("body", {}).get("value", [])
logging.info(
"Received %s new Teams message(s).",
len(messages),
)
Um Connector-Operationen zu identifizieren, die noch keine stark typisierten Python-Payloads besitzen, siehe Operations to Azure Functions signature mapping.
Für das vollständige Codebeispiel, einschließlich Infrastruktur und Trigger-Registrierung, siehe Microsoft Teams Trigger für Python.
Dekorateure
Wenden Sie connector_trigger auf die Funktion an, die die Ereignisnutzlast empfängt:
import azure.functions as func
app = func.FunctionApp()
@app.function_name(name="OnConnectorEvent")
@app.connector_trigger(arg_name="payload")
def on_connector_event(payload: str) -> None:
# Process the raw JSON payload.
pass
Der Wert arg_name identifiziert den Funktionsparameter, der die Nutzlast empfängt. Konfigurieren Sie den Connector, die Operation, die Betriebsparameter, die Zielfunktion und die Rückruf-Authentifizierung in der Trigger-Konfiguration im Azure Connector Namespace.
Den Trigger konfigurieren
Eine Trigger-Konfiguration im Azure Connector Namespace verknüpft ein externes Service-Ereignis mit dem Callback der Zielfunktion.
Trigger-Konfigurationswerte
| Konfigurationswert | Description |
|---|---|
| Verbindung | Die autorisierte verwaltete Verbindung, wie Office 365 Outlook oder SharePoint Online. |
| Vorgangsname | Der Steckverbinder löst die Funktionsweise aus OnNewEmailV3 , wie zum Beispiel oder GetOnNewFileItems. |
| Parameters | Für die Operation benötigte Werte wie ein Outlook-Ordner oder eine SharePoint-Seite und Dokumentbibliothek. |
| Rückruf-URL | Der Webhook-Endpunkt der Connector-Erweiterung für die Zielfunktion. Siehe Rückrufe authentifizieren. |
| Funktionsname | Der Name der registrierten Funktion in deinem App-Code. |
| Authentication | Die Authentifizierungskonfiguration, mit der die Funktions-App aufgerufen wird. |
Der functionName Wert der Abfrage-String in der Callback-URL der Trigger-Konfiguration muss mit dem Namen der registrierten Funktion übereinstimmen. Gültige Funktionsnamen enthalten 1 bis 128 Buchstaben, Zahlen, Unterstriche oder Bindestriche.
Der Operationsname wird vom verwalteten Connector definiert. Du wählst den Funktionsnamen in deinem Code, und die Trigger-Konfiguration ordnet die Operation dieser Funktion zu. Die Beispiele in diesem Artikel verwenden folgende Abbildungen:
| Konnektor-Ereignis | Vorgangsname | Funktionsname |
|---|---|---|
| Neue Office 365 Outlook-E-Mail | OnNewEmailV3 |
OnNewEmail |
| Neue SharePoint Online-Datei | GetOnNewFileItems |
OnNewFile |
| Neue Microsoft Teams-Chat- oder Kanalnachricht | WebhookNewMessageTrigger |
OnNewTeamsMessage |
| Konnektor-Ereignis | Vorgangsname | Funktionsname |
|---|---|---|
| Neue Office 365 Outlook-E-Mail | OnNewEmailV3 |
OnNewEmail |
| Neue SharePoint Online-Datei | GetOnNewFileItems |
OnSharepointNewFile |
| Neue Microsoft Teams-Kanalnachricht | WebhookNewMessageTrigger |
OnNewChannelMessage |
Erstellen Sie eine Trigger-Konfiguration
Erstellen Sie eine Trigger-Konfiguration mithilfe der Azure CLI oder des Connector Namespace Portals.
Bevor Sie die Trigger-Konfiguration erstellen, erstellen Sie eine autorisierte verwaltete Connector-Verbindung in Ihrem Connector-Namensraum und bereiten Sie die Funktions-App aus, die die Zielfunktion enthält.
Das folgende Bash-Beispiel verwendet Azure CLI undjq, um einen Office 365 Outlook Neue-Mail-Trigger zu erstellen. Ersetzen Sie die Platzhalterwerte für Ihre Ressourcen und Ihre Verbindung:
resourceGroup="<RESOURCE_GROUP>"
namespaceName="<CONNECTOR_NAMESPACE>"
functionAppName="<FUNCTION_APP>"
functionName="OnNewEmail"
triggerName="<TRIGGER_NAME>"
connectionName="<CONNECTION_NAME>"
connectorName="office365"
operationName="OnNewEmailV3"
subscriptionId=$(az account show --query id --output tsv)
connectorKey=$(az functionapp keys list \
--resource-group "$resourceGroup" \
--name "$functionAppName" \
--query "systemKeys.connector_extension" \
--output tsv)
callbackUrl="https://${functionAppName}.azurewebsites.net/runtime/webhooks/connector?functionName=${functionName}"
notificationFile=$(mktemp)
trap 'rm -f "$notificationFile"' EXIT
jq -n \
--arg callbackUrl "$callbackUrl" \
--arg connectorKey "$connectorKey" \
'{
callbackUrl: $callbackUrl,
authentication: {
type: "QueryString",
name: "code",
value: $connectorKey
}
}' > "$notificationFile"
az connector-namespace trigger create \
--resource-group "$resourceGroup" \
--namespace "$namespaceName" \
--name "$triggerName" \
--connection-details "{connectionName:${connectionName},connectorName:${connectorName}}" \
--operation-name "$operationName" \
--parameters "[{name:folderPath,value:'Inbox'}]" \
--notification-details "@$notificationFile" \
--description "${connectorName} ${operationName} -> ${functionName}" \
--metadata "{destinationType:functionApp,functionAppName:${functionAppName},functionAppResourceGroup:${resourceGroup},functionAppSubscriptionId:${subscriptionId},functionName:${functionName},recurrenceFrequency:Minute,recurrenceInterval:'5'}"
rm -f "$notificationFile"
trap - EXIT
Der Wert --parameters ist spezifisch für den Steckverbinderbetrieb. In diesem Beispiel folderPath wählt er den Outlook-Ordner aus, den überwacht werden soll. Die Rückruf-URL enthält keinen Systemschlüssel. Das notificationDetails.authentication Objekt fügt den Schlüssel als Geheimnis der Abfrage-String hinzu, wenn Connector Namespace die Funktion aufruft.
Usage
Der Trigger bindet den JSON-Anforderungskörper an einen der von der Erweiterung unterstützten .NET-Binding-Typen.
Connector-Operationen können ein Ereignis oder eine Reihe von Ereignissen zurückgeben. Verwenden Sie das operation-spezifische Nutzlastmodell, da dessen Form den Antwortvertrag für diese Verbindungsoperation darstellt.
Usage
Die generische Registrierung erhält ein ConnectorTriggerContext<T>. Seine Eigenschaft enthält den normalisierten Rückruf-Umschlag payload , items enthält die Ereigniselemente und rawPayload bewahrt den ursprünglichen Anforderungskörper. Steckerspezifische Registrierungen liefern benannte typisierte Arrays wie emails, files, oder messages.
Für eine Operation ohne konnektorspezifische Registrierung lautet der Item-Typ standardmäßig .unknown Validiere die Nutzlast, bevor du auf operation-spezifische Eigenschaften zugreifst.
Usage
Der Trigger kann den Anforderungskörper an str, dict, oder bytesbinden. Wenn azurefunctions-extensions-connectors ein Konverter für die SDK-Annotation der Funktion registriert wird, deserialisiert der Worker stattdessen den Anforderungskörper in den unterstützten operation-spezifischen Typ.
Connector-Operationen können ein Ereignis oder eine Reihe von Ereignissen zurückgeben. Verwenden Sie die für die Operation angegebene Typ- oder Sammlungsannotation in der Operation Signature Mapping.
Die Erweiterung akzeptiert HTTP POST und PUT Anfragen mit dem Inhaltstyp application/json . Ein nichtleerer Anforderungskörper muss gültiges JSON enthalten. Die Erweiterung lehnt Anfragekörper größer als 10 MB ab.
Metadata
Der Connector-Trigger stellt derzeit keine Callback-Header oder andere Anforderungsmetadaten als Bindungsdaten frei. Die Erweiterung definiert einen leeren Bindungsdatenvertrag, sodass die Funktion nur den JSON-Anforderungskörper in einem von der gewählten Sprache unterstützten Bindungstyp empfängt.