Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Använd Connector-triggern för att köra en funktion när en händelse inträffar i en tjänst som Office 365, SharePoint, Dataverse, SMTP, Salesforce och många fler. Triggern tar emot händelser från en hanterad connector i Azure Connector Namespace. För att utforska tillgängliga hanterade kontakter, se referensen för kontakter.
För information om installation av tillägget, stödda bindningstyper, autentisering av callbacks och applikationsövergripande konfiguration, se översikten över Connector-tillägget.
Important
Connector-triggern är för närvarande i offentlig förhandsvisning. Funktioner, konfigurationsnamn och stödda kontakter kan ändras innan allmän tillgänglighet (GA). Användning av denna funktion omfattas av de tilläggsvillkoren för Microsoft Azure Previews.
Note
Connector-triggern stöds för närvarande inte för detta språk.
Examples
Exemplen Office 365 Outlook och SharePoint Online använder starkt typade payloads från Azure Connectors SDK. För anslutningsoperationer som ännu inte har starkt typade nyttolaster, bind till string för att ta emot rå JSON-nyttolasten. Dessa exempel loggar medvetet endast grundläggande nyttolastinformation för att hålla fokus på hur man definierar Connector-utlösta funktioner. Byt ut loggningen mot applikationens bearbetningslogik.
Office 365 Outlook
Följande exempel körs när ett nytt e-postmeddelande anländer till den konfigurerade Office 365 Outlook-brevlådan:
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);
}
}
Typen Office365OnNewEmailTriggerPayload definieras i Azure.Connectors.Sdk.Office365.Models namnrymden.
För det kompletta kodexemplet, inklusive infrastruktur och triggerregistrering, se Office 365 Outlook triggers för .NET.
SharePoint Online
Följande exempel körs när en fil skapas i det konfigurerade SharePoint Online-dokumentbiblioteket:
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);
}
}
Typen SharePointOnlineOnNewFileItemsTriggerPayload definieras i Azure.Connectors.Sdk.SharePointOnline.Models namnrymden.
För hela kodexemplet, inklusive infrastruktur och registrering av triggers, se SharePoint Online-triggers för .NET.
Koppling utan starkt typad nyttolast
Vissa connector-händelser har ännu inte en starkt typad .NET-payload. Följande exempel körs när ett nytt meddelande läggs till i en Microsoft Teams-chatt eller kanal och binder nyttolasten till string:
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);
}
}
För att identifiera anslutningsoperationer som ännu inte har starkt typade payloads, se Operations to Azure Functions signature mapping.
Attributes
I en .NET-isolerad arbetsapplikation, applicera [ConnectorTrigger] på funktionsparametern som tar emot händelsepayloaden:
[Function("OnConnectorEvent")]
public void Run([ConnectorTrigger] string payload)
{
// Process the raw JSON payload.
}
Attributet ConnectorTrigger har inga konfigurerbara egenskaper. Konfigurera connector, operation, operationsparametrar, destinationsfunktion och callback-autentisering i triggerkonfigurationen i Azure Connector Namespace.
Examples
Node.js-anslutningstillägget tillhandahåller typade kontexter för Office 365 Outlook-, SharePoint Online- och Microsoft Teams-operationerna som visas i detta avsnitt. Dessa exempel loggar medvetet endast grundläggande nyttolastinformation för att hålla fokus på hur man definierar Connector-utlösta funktioner. Byt ut loggningen mot applikationens bearbetningslogik.
Office 365 Outlook
Följande exempel körs när ett nytt e-postmeddelande anländer till den konfigurerade Office 365 Outlook-brevlådan:
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).`,
);
},
});
Typen EmailTriggerContext exponerar meddelandena som en typad emails matris.
För det kompletta kodexemplet, inklusive infrastruktur och triggerregistrering, se Office 365 Outlook triggers för TypeScript.
SharePoint Online
Följande exempel körs när en fil skapas i det konfigurerade SharePoint Online-dokumentbiblioteket:
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).`,
);
},
});
Typen FileTriggerContext exponerar filmetadata som en typad files array.
För det fullständiga kodexemplet, inklusive infrastruktur och registrering av triggers, se SharePoint Online-triggers för TypeScript.
Microsoft Teams
Följande exempel körs när ett nytt meddelande läggs till i en Microsoft Teams-kanal:
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).`,
);
},
});
Typen ChannelMessageTriggerContext exponerar meddelandena som en typad messages matris.
För hela kodexemplet, inklusive infrastruktur och registrering av triggers, se Microsoft Teams-triggers för TypeScript.
Registration
Använd den generiska connectorTrigger funktionen för en operation som inte har en kopplingsspecifik registrering:
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));
},
});
Den generiska registreringen sätter föremålstypen som standard till unknown. Validera nyttolasten innan du får tillgång till operationsspecifika egenskaper. Konfigurera connector, operation, operationsparametrar, destinationsfunktion och callback-autentisering i triggerkonfigurationen i Azure Connector Namespace.
Examples
Node.js-anslutningstillägget tillhandahåller connector-specifika kontexter för Office 365 Outlook-, SharePoint Online- och Microsoft Teams-operationerna som visas i detta avsnitt. Dessa exempel loggar medvetet endast grundläggande nyttolastinformation för att hålla fokus på hur man definierar Connector-utlösta funktioner. Byt ut loggningen mot applikationens bearbetningslogik.
Office 365 Outlook
Följande exempel körs när ett nytt e-postmeddelande anländer till den konfigurerade Office 365 Outlook-brevlådan:
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).`,
);
},
});
Handlerns kontext exponerar meddelandena genom arrayen emails .
SharePoint Online
Följande exempel körs när en fil skapas i det konfigurerade SharePoint Online-dokumentbiblioteket:
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).`,
);
},
});
Handler-kontexten exponerar filmetadata genom arrayen files .
Microsoft Teams
Följande exempel körs när ett nytt meddelande läggs till i en Microsoft Teams-kanal:
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).`,
);
},
});
Handlerns kontext exponerar meddelandena genom arrayen messages .
Registration
Använd den generiska connectorTrigger funktionen för en operation som inte har en kopplingsspecifik registrering:
const {
connectorTrigger,
} = require('@azure/functions-extensions-connectors');
connectorTrigger('OnConnectorEvent', {
handler: async (context, invocationContext) => {
invocationContext.log(JSON.stringify(context.rawPayload));
},
});
Den generiska registreringen normaliserar callback-kuvertet men validerar inte den operationspecifika payload-formen. Validera nyttolasten innan du får tillgång till operationsspecifika egenskaper. Konfigurera connector, operation, operationsparametrar, destinationsfunktion och callback-autentisering i triggerkonfigurationen i Azure Connector Namespace.
Examples
Det Office 365 Outlook exemplet använder en starkt typad nyttolast som registreras av Python connector-förlängningen. Exemplen från SharePoint Online och Microsoft Teams binder till str och tolkar den råa JSON-filen eftersom dessa operationer för närvarande inte har registrerade typade Python-konverterare. Dessa exempel loggar medvetet endast grundläggande nyttolastinformation för att hålla fokus på hur man definierar Connector-utlösta funktioner. Byt ut loggningen mot applikationens bearbetningslogik.
Office 365 Outlook
Följande exempel körs när ett nytt e-postmeddelande anländer till den konfigurerade Office 365 Outlook-brevlådan:
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),
)
Typen ClientReceiveMessage tillhandahålls av azurefunctions-extensions-connectors och representerar de Office 365 Outlook meddelandena i batchen.
För det kompletta kodexemplet, inklusive infrastruktur och triggerregistrering, se Office 365 Outlook triggers för Python.
SharePoint Online
Följande exempel körs när en fil skapas i det konfigurerade SharePoint Online-dokumentbiblioteket:
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 hela kodexemplet, inklusive infrastruktur och registrering av triggers, se SharePoint Online-triggers för Python.
Koppling utan starkt typad nyttolast
Följande exempel körs när ett nytt meddelande läggs till i en Microsoft Teams-kanal och binder nyttolasten till str:
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),
)
För att identifiera connector-operationer som ännu inte har starkt typade Python-payloads, se Operations to Azure Functions signature mapping.
För hela kodexemplet, inklusive infrastruktur och registrering av triggers, se Microsoft Teams triggers för Python.
Decorators
Applicera connector_trigger på funktionen som tar emot händelsepayloaden:
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
Värdet arg_name identifierar funktionsparametern som tar emot nyttolasten. Konfigurera connector, operation, operationsparametrar, destinationsfunktion och callback-autentisering i triggerkonfigurationen i Azure Connector Namespace.
Konfigurera utlösaren
En triggerkonfiguration i Azure Connector Namespace kopplar en extern tjänstehändelse till destinationsfunktionens callback.
Triggerkonfigurationsvärden
| Konfigurationsvärde | Description |
|---|---|
| Anslutning | Den auktoriserade hanterade anslutningen, såsom Office 365 Outlook eller SharePoint Online. |
| Operationsnamn | Kontaktens utlösande funktion, såsom OnNewEmailV3 eller GetOnNewFileItems. |
| Parameters | Värden som krävs av operationen, såsom en Outlook-mapp eller en SharePoint-webbplats och dokumentbibliotek. |
| Återanrops-URL | Connector-tilläggets webhook-slutpunkt för destinationsfunktionen. Se Autentisera återkallelser. |
| Funktionsnamn | Det registrerade funktionsnamnet i din appkod. |
| Authentication | Autentiseringskonfigurationen som används för att anropa funktionsappen. |
Frågesträngsvärdet functionName i triggerkonfigurationens callback-URL måste matcha det registrerade funktionsnamnet. Giltiga funktionsnamn innehåller 1 till 128 bokstäver, siffror, understreck eller bindestreck.
Operationsnamnet definieras av den hanterade kontakten. Du väljer funktionsnamnet i din kod, och triggerkonfigurationen mappar operationen till den funktionen. Exemplen i denna artikel använder dessa avbildningar:
| Händesle kopplad till anslutningsprogram | Operationsnamn | Funktionsnamn |
|---|---|---|
| Ny Office 365 Outlook e-post | OnNewEmailV3 |
OnNewEmail |
| Ny SharePoint Online-fil | GetOnNewFileItems |
OnNewFile |
| Nytt Microsoft Teams-chattmeddelande eller kanalmeddelande | WebhookNewMessageTrigger |
OnNewTeamsMessage |
| Händesle kopplad till anslutningsprogram | Operationsnamn | Funktionsnamn |
|---|---|---|
| Ny Office 365 Outlook e-post | OnNewEmailV3 |
OnNewEmail |
| Ny SharePoint Online-fil | GetOnNewFileItems |
OnSharepointNewFile |
| Nytt meddelande om Microsoft Teams-kanalen | WebhookNewMessageTrigger |
OnNewChannelMessage |
Skapa en triggerkonfiguration
Skapa en triggerkonfiguration genom att använda Azure CLI eller Connector Namespace-portalen.
Innan du skapar triggerkonfigurationen, skapa en auktoriserad managed connector-anslutning i ditt connector-namnrymd och distribuera funktionsappen som innehåller destinationsfunktionen.
Följande Bash-exempel använder Azure CLI och jq för att skapa en Office 365 Outlook ny-e-post-trigger. Byt ut platshållarvärdena för dina resurser och din kontakt:
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
Värdet --parameters är specifikt för kontaktens operation. I detta exempel folderPath väljer den Outlook-mappen att övervaka. Callback-URL:en innehåller inte systemnyckeln. Objektet notificationDetails.authentication lägger till nyckeln som en hemlig frågesträng när Connector Namespace anropar funktionen.
Användning
Triggern binder JSON-begärselkroppen till någon av de .NET-bindningstyper som stöds av tillägget.
Kopplingsoperationer kan returnera en händelse eller en batch av händelser. Använd den operationspecifika nyttolastmodellen eftersom dess form representerar responskontraktet för den anslutningsoperationen.
Användning
Den generiska registreringen får en ConnectorTriggerContext<T>. Dess payload egenskap innehåller det normaliserade callback-kuvertet, items innehåller händelseobjekten och rawPayload bevarar den ursprungliga begäransökningskroppen. Kopplingsspecifika registreringar tillhandahåller namngivna typade arrayer, såsom emails, files, eller messages.
För en operation utan en kopplingsspecifik registrering är artikeltypen som standard .unknown Validera nyttolasten innan du får tillgång till operationspecifika egenskaper.
Användning
Triggern kan binda förfrågan-kroppen till str, dict, eller bytes. När azurefunctions-extensions-connectors en konverterare registrerar funktionen SDK-annotering, deserialiserar arbetaren istället begärandelen till den stödda operationsspecifika typen.
Kopplingsoperationer kan returnera en händelse eller en batch av händelser. Använd den typ eller samlingsannotation som identifierats för operationen i operationens signaturmappning.
Tillägget accepterar HTTP POST och PUT förfrågningar med innehållstypen application/json . En icke-tom begäranarkropp måste innehålla giltig JSON. Tillägget avvisar begäranarkroppar större än 10 MB.
Metadata
Connector-triggern exponerar för närvarande inte callback-headers eller annan requestmetadata som bindningsdata. Tillägget definierar ett tomt bindande datakontrakt, så funktionen tar endast emot JSON-begäransökningskroppen i en bindningstyp som stöds av det valda språket.