Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Utilisez le déclencheur Connector pour exécuter une fonction lorsqu’un événement survient dans un service tel qu’Office 365, SharePoint, Dataverse, SMTP, Salesforce, et bien d’autres. Le déclencheur reçoit des événements d’un connecteur géré dans l’espace de noms Azure Connector. Pour explorer les connecteurs gérés disponibles, voir la référence des connecteurs.
Pour des informations sur l’installation de l’extension, les types de liaison supportés, l’authentification de rappel et la configuration à l’échelle de l’application, voir l’aperçu de l’extension Connector.
Important
Le déclencheur du Connecteur est actuellement en aperçu public. Les fonctionnalités, les noms de configuration et les connecteurs pris en charge peuvent changer avant la disponibilité générale (GA). L’utilisation de cette fonctionnalité est soumise aux Conditions d’utilisation supplémentaires pour les Aperçus Microsoft Azure.
Note
Le déclencheur Connector n’est pas actuellement pris en charge pour ce langage.
Examples
Les exemples Office 365 Outlook et SharePoint Online utilisent des charges utiles fortement typées issues du SDK Azure Connectors. Pour les opérations de connecteur qui n’ont pas encore de charges utiles fortement typées, liez pour string recevoir la charge utile JSON brute. Ces exemples enregistrent intentionnellement uniquement les informations de base sur la charge utile afin de rester concentrés sur la définition des fonctions déclenchées par le Connecteur. Remplacez la journalisation par la logique de traitement de votre application.
Office 365 Outlook
L’exemple suivant s’exécute lorsqu’un nouvel e-mail arrive dans la boîte aux lettres Office 365 Outlook configurée :
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);
}
}
Le Office365OnNewEmailTriggerPayload type est défini dans l’espace Azure.Connectors.Sdk.Office365.Models de noms.
Pour l’exemple complet de code, y compris l’infrastructure et l’enregistrement des déclencheurs, voir Office 365 Outlook déclencheurs pour .NET.
SharePoint en ligne
L’exemple suivant s’exécute lorsqu’un fichier est créé dans la bibliothèque de documents SharePoint Online configurée :
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);
}
}
Le SharePointOnlineOnNewFileItemsTriggerPayload type est défini dans l’espace Azure.Connectors.Sdk.SharePointOnline.Models de noms.
Pour l’exemple complet de code, y compris l’infrastructure et l’enregistrement des déclencheurs, voir SharePoint Online déclencheurs pour .NET.
Connecteur sans charge utile fortement typée
Certains événements de connecteur n'ont pas encore de charge utile .NET fortement typée. L’exemple suivant s’exécute lorsqu’un nouveau message est ajouté à un chat ou canal Microsoft Teams et lie la charge utile à 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);
}
}
Pour identifier les opérations de connecteurs qui n'ont pas encore de charges utiles fortement typées, voir Operations to Azure Functions signature mapping.
Attributes
Dans une application worker isolée .NET, appliquez [ConnectorTrigger] au paramètre de fonction qui reçoit la charge utile d’événement :
[Function("OnConnectorEvent")]
public void Run([ConnectorTrigger] string payload)
{
// Process the raw JSON payload.
}
L’attribut ConnectorTrigger n’a aucune propriété configurable. Configurez le connecteur, le fonctionnement, les paramètres de fonctionnement, la fonction de destination et l’authentification de rappel dans la configuration du déclencheur dans l’espace de noms Azure Connector.
Examples
L’extension du connecteur Node.js fournit des contextes typés pour les opérations Office 365 Outlook, SharePoint Online et Microsoft Teams présentées dans cette section. Ces exemples enregistrent intentionnellement uniquement les informations de base sur la charge utile afin de rester concentrés sur la définition des fonctions déclenchées par le Connecteur. Remplacez la journalisation par la logique de traitement de votre application.
Office 365 Outlook
L’exemple suivant s’exécute lorsqu’un nouvel e-mail arrive dans la boîte aux lettres Office 365 Outlook configurée :
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).`,
);
},
});
Le EmailTriggerContext type expose les messages sous forme d’un tableau typé emails .
Pour l’exemple complet de code, y compris l’infrastructure et l’enregistrement des déclencheurs, voir Office 365 Outlook déclencheurs pour TypeScript.
SharePoint en ligne
L’exemple suivant s’exécute lorsqu’un fichier est créé dans la bibliothèque de documents SharePoint Online configurée :
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).`,
);
},
});
Le FileTriggerContext type expose les métadonnées du fichier sous forme d’un tableau typé files .
Pour l’exemple complet de code, incluant l’infrastructure et l’enregistrement des déclencheurs, voir SharePoint Online déclencheurs pour TypeScript.
Microsoft Teams
L’exemple suivant s’exécute lorsqu’un nouveau message est ajouté à un canal Microsoft Teams :
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).`,
);
},
});
Le ChannelMessageTriggerContext type expose les messages sous forme d’un tableau typé messages .
Pour l’exemple complet de code, y compris l’infrastructure et l’enregistrement des déclencheurs, voir Microsoft Teams triggers pour TypeScript.
Enregistrement
Utilisez la fonction générique connectorTrigger pour une opération qui n’a pas d’enregistrement spécifique au connecteur :
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));
},
});
L’enregistrement générique met par défaut le type d’objet à unknown. Validez la charge utile avant d’accéder aux propriétés spécifiques à l’opération. Configurez le connecteur, le fonctionnement, les paramètres de fonctionnement, la fonction de destination et l’authentification de rappel dans la configuration du déclencheur dans l’espace de noms Azure Connector.
Examples
L’extension du connecteur Node.js fournit des contextes spécifiques au connecteur pour les opérations Office 365 Outlook, SharePoint Online et Microsoft Teams présentées dans cette section. Ces exemples enregistrent intentionnellement uniquement les informations de base sur la charge utile afin de rester concentrés sur la définition des fonctions déclenchées par le Connecteur. Remplacez la journalisation par la logique de traitement de votre application.
Office 365 Outlook
L’exemple suivant s’exécute lorsqu’un nouvel e-mail arrive dans la boîte aux lettres Office 365 Outlook configurée :
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).`,
);
},
});
Le contexte du gestionnaire expose les messages via le emails tableau.
SharePoint en ligne
L’exemple suivant s’exécute lorsqu’un fichier est créé dans la bibliothèque de documents SharePoint Online configurée :
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).`,
);
},
});
Le contexte du gestionnaire expose les métadonnées du fichier via le files tableau.
Microsoft Teams
L’exemple suivant s’exécute lorsqu’un nouveau message est ajouté à un canal Microsoft Teams :
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).`,
);
},
});
Le contexte du gestionnaire expose les messages via le messages tableau.
Enregistrement
Utilisez la fonction générique connectorTrigger pour une opération qui n’a pas d’enregistrement spécifique au connecteur :
const {
connectorTrigger,
} = require('@azure/functions-extensions-connectors');
connectorTrigger('OnConnectorEvent', {
handler: async (context, invocationContext) => {
invocationContext.log(JSON.stringify(context.rawPayload));
},
});
L’enregistrement générique normalise l’enveloppe de rappel mais ne valide pas la forme spécifique de la charge utile à l’opération. Validez la charge utile avant d’accéder aux propriétés spécifiques à l’opération. Configurez le connecteur, le fonctionnement, les paramètres de fonctionnement, la fonction de destination et l’authentification de rappel dans la configuration du déclencheur dans l’espace de noms Azure Connector.
Examples
L’exemple Office 365 Outlook utilise une charge utile fortement typée enregistrée par l’extension du connecteur Python. Les exemples de SharePoint Online et Microsoft Teams lient et str analysent le JSON brut car ces opérations ne disposent actuellement pas de convertisseurs Python typés enregistrés. Ces exemples enregistrent intentionnellement uniquement les informations de base sur la charge utile afin de rester concentrés sur la définition des fonctions déclenchées par le Connecteur. Remplacez la journalisation par la logique de traitement de votre application.
Office 365 Outlook
L’exemple suivant s’exécute lorsqu’un nouvel e-mail arrive dans la boîte aux lettres Office 365 Outlook configurée :
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),
)
Le ClientReceiveMessage type est fourni par azurefunctions-extensions-connectors et représente les Office 365 Outlook messages du lot.
Pour l’exemple complet de code, y compris l’infrastructure et l’enregistrement des déclencheurs, voir Office 365 Outlook déclencheurs pour Python.
SharePoint en ligne
L’exemple suivant s’exécute lorsqu’un fichier est créé dans la bibliothèque de documents SharePoint Online configurée :
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),
)
Pour l’exemple complet de code, incluant l’infrastructure et l’enregistrement des déclencheurs, voir SharePoint Online déclencheurs pour Python.
Connecteur sans charge utile fortement typée
L’exemple suivant s’exécute lorsqu’un nouveau message est ajouté à un canal Microsoft Teams et lie la charge utile à 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),
)
Pour identifier les opérations de connecteurs qui n'ont pas encore de charges utiles Python fortement typées, voir Operations to Azure Functions signature mapping.
Pour l’exemple complet de code, y compris l’infrastructure et l’enregistrement des déclencheurs, voir Microsoft Teams triggers pour Python.
Décorateurs
Appliquer connector_trigger à la fonction qui reçoit la charge utile de l’événement :
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
La arg_name valeur identifie le paramètre de fonction qui reçoit la charge utile. Configurez le connecteur, le fonctionnement, les paramètres de fonctionnement, la fonction de destination et l’authentification de rappel dans la configuration du déclencheur dans l’espace de noms Azure Connector.
Configurer le déclencheur
Une configuration de déclenchement dans Azure Connector Namespace associe un événement de service externe au rappel de la fonction de destination.
Valeurs de configuration des déclencheurs
| Valeur de configuration | Description |
|---|---|
| Connexion | La connexion de connecteur gérée autorisée, telle que Office 365 Outlook ou SharePoint Online. |
| Nom de l’opération | Le déclencheur du connecteur, tel que OnNewEmailV3 ou GetOnNewFileItems. |
| Parameters | Valeurs requises par l’opération, telles qu’un dossier Outlook ou un site SharePoint et une bibliothèque de documents. |
| Callback URL (URL de rappel) | L’extension Connector webhook endpoint pour la fonction de destination. Voir Authentifier les rappels. |
| Nom de la fonction | Le nom de la fonction enregistrée dans votre code d’application. |
| Authentication | La configuration d’authentification utilisée pour appeler l’application de fonction. |
La functionName valeur de la chaîne de requête dans l’URL de rappel de la configuration du déclencheur doit correspondre au nom de la fonction enregistrée. Les noms de fonctions valides contiennent de 1 à 128 lettres, chiffres, sous-traits ou traits d’union.
Le nom de l’opération est défini par le connecteur géré. Vous choisissez le nom de la fonction dans votre code, et la configuration du déclencheur associe l’opération à cette fonction. Les exemples de cet article utilisent ces mappages :
| Événement de connecteur | Nom de l’opération | Nom de la fonction |
|---|---|---|
| Nouvel e-mail Office 365 Outlook | OnNewEmailV3 |
OnNewEmail |
| Nouveau fichier SharePoint Online | GetOnNewFileItems |
OnNewFile |
| Nouveau message de chat ou de canal Microsoft Teams | WebhookNewMessageTrigger |
OnNewTeamsMessage |
| Événement de connecteur | Nom de l’opération | Nom de la fonction |
|---|---|---|
| Nouvel e-mail Office 365 Outlook | OnNewEmailV3 |
OnNewEmail |
| Nouveau fichier SharePoint Online | GetOnNewFileItems |
OnSharepointNewFile |
| Nouveau message du canal Microsoft Teams | WebhookNewMessageTrigger |
OnNewChannelMessage |
Créer une configuration de déclencheur
Créez une configuration de déclencheur en utilisant Azure CLI ou le portail Connector Namespace.
Avant de créer la configuration du déclencheur, créez une connexion de connecteur gérée autorisée dans votre espace de noms de connecteurs et déployez l’application de fonction contenant la fonction de destination.
L’exemple Bash suivant utilise Azure CLI et jq pour créer un déclencheur Office 365 Outlook de nouveau message. Remplacez les valeurs provisoires pour vos ressources et vos liens :
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
La --parameters valeur est spécifique à l’opération du connecteur. Dans cet exemple, folderPath sélectionne le dossier Outlook à suivre. L’URL de rappel ne contient pas la clé système. L’objet notificationDetails.authentication ajoute la clé comme un secret de requête lors de l’invoque de l’espace de noms Connector la fonction.
Usage
Le déclencheur lie le corps de la requête JSON à l’un des types de liaison .NET supportés par l’extension.
Les opérations de connecteur peuvent renvoyer un événement ou un lot d’événements. Utilisez le modèle de charge utile spécifique à l’opération car sa forme représente le contrat de réponse pour cette opération de connecteur.
Usage
L’enregistrement générique reçoit un ConnectorTriggerContext<T>. Sa payload propriété contient l’enveloppe de rappel normalisée, items contient les éléments de l’événement et rawPayload préserve le corps de la requête original. Les enregistrements spécifiques au connecteur fournissent des tableaux typés nommés, tels que emails, files, ou messages.
Pour une opération sans enregistrement spécifique au connecteur, le type d’élément est unknownpar défaut . Validez la charge utile avant d’accéder aux propriétés spécifiques à l’opération.
Usage
Le déclencheur peut lier le corps de la requête à str, dict, ou bytes. Lorsqu’il azurefunctions-extensions-connectors enregistre un convertisseur pour l’annotation SDK de la fonction, le travailleur désérialise le corps de la requête dans le type spécifique à l’opération supporté.
Les opérations de connecteur peuvent renvoyer un événement ou un lot d’événements. Utilisez le type ou l’annotation de collection identifiée pour l’opération dans la correspondance de signature d’opération.
L’extension accepte HTTP POST et PUT les requêtes avec le application/json type de contenu. Un corps de requête non vide doit contenir un JSON valide. L’extension rejette les corps de demande supérieurs à 10 Mo.
Metadata
Le déclencheur Connector n’expose actuellement pas les en-têtes de rappel ni d’autres métadonnées de requête comme données de liaison. L’extension définit un contrat de liaison vide, de sorte que la fonction ne reçoit que le corps de la requête JSON dans un type de liaison supporté par le langage sélectionné.