Liaisons Microsoft Graph pour Azure FunctionsMicrosoft Graph bindings for Azure Functions

Cet article explique comment configurer et utiliser des déclencheurs et liaisons Microsoft Graph dans Azure Functions.This article explains how to configure and work with Microsoft Graph triggers and bindings in Azure Functions. Ces fonctions vous permettent d’utiliser Azure Functions pour travailler sur des données, des informations et des événements à partir de Microsoft Graph.With these, you can use Azure Functions to work with data, insights, and events from the Microsoft Graph.

L’extension Microsoft Graph fournit les liaisons suivantes :The Microsoft Graph extension provides the following bindings:

Il s’agit des informations de référence pour les développeurs Azure Functions.This is reference information for Azure Functions developers. Si vous ne connaissez pas bien Azure Functions, commencez par consulter les ressources suivantes :If you're new to Azure Functions, start with the following resources:

Notes

Les liaisons Microsoft Graph sont actuellement en préversion pour les versions 2.x et ultérieures d’Azure Functions.Microsoft Graph bindings are currently in preview for Azure Functions version 2.x and higher. Elles ne sont pas prises en charge dans la version 1.x.They are not supported in Functions version 1.x.

.Packages

La liaison d’entrée du jeton d’authentification est fournie dans le package NuGet Microsoft.Azure.WebJobs.Extensions.AuthTokens.The auth token input binding is provided in the Microsoft.Azure.WebJobs.Extensions.AuthTokens NuGet package. Les autres liaisons Microsoft Graph sont fournies dans le package Microsoft.Azure.WebJobs.Extensions.MicrosoftGraph.The other Microsoft Graph bindings are provided in the Microsoft.Azure.WebJobs.Extensions.MicrosoftGraph package. Le code source du package se trouve dans le référentiel GitHub azure-functions-microsoftgraph-extension.Source code for the packages is in the azure-functions-microsoftgraph-extension GitHub repository.

Le tableau suivant indique comment ajouter la prise en charge de cette liaison dans chaque environnement de développement.The following table tells how to add support for this binding in each development environment.

Environnement de développementDevelopment environment Pour ajouter la prise en chargeTo add support
Développement local - Bibliothèque de classes C#Local development - C# class library Installer le package.Install the package
Développement local - Script C#, JavaScript, F#, Java et PythonLocal development - C# script, JavaScript, F#, Java and Python Enregistrer l’extensionRegister the extension
Développement sur le portailPortal development Installer lors de l’ajout d’une liaison de sortieInstall when adding output binding

Pour apprendre comment mettre à jour les extensions de liaison existantes dans le portail sans avoir à republier votre projet d'application de fonction, voir Mettre à jour vos extensions.To learn how to update existing binding extensions in the portal without having to republish your function app project, see Update your extensions.

Configuration des extensionsSetting up the extensions

Les liaisons Microsoft Graph sont disponibles via des extensions de liaison.Microsoft Graph bindings are available through binding extensions. Les extensions de liaison sont des composants facultatifs du runtime Azure Functions.Binding extensions are optional components to the Azure Functions runtime. Cette section explique comment configurer l’élément Microsoft Graph et les extensions de jeton d’authentification.This section shows how to set up the Microsoft Graph and auth token extensions.

Activation de la préversion d’Azure Functions 2.0Enabling Functions 2.0 preview

Les extensions de liaison sont uniquement disponibles pour la préversion d’Azure Functions 2.0.Binding extensions are available only for Azure Functions 2.0 preview.

Pour plus d’informations sur la façon de configurer une application de fonction pour utiliser la préversion 2.0 du runtime de Functions, consultez Comment cibler des versions du runtime Azure Functions.For information about how to set a function app to use the preview 2.0 version of the Functions runtime, see How to target Azure Functions runtime versions.

Installation de l’extensionInstalling the extension

Pour installer une extension à partir du portail Azure, accédez à un modèle ou à une liaison qui y fait référence.To install an extension from the Azure portal, navigate to either a template or binding that references it. Créez une fonction, puis dans l’écran de sélection de modèle, choisissez le scénario de « Microsoft Graph ».Create a new function, and while in the template selection screen, choose the "Microsoft Graph" scenario. Sélectionnez l’un des modèles à partir de ce scénario.Select one of the templates from this scenario. Vous pouvez également accéder à l’onglet « Intégrer » d’une fonction existante et sélectionner l’une des liaisons décrites dans cet article.Alternatively, you can navigate to the "Integrate" tab of an existing function and select one of the bindings covered in this article.

Dans les deux cas, un avertissement s’affiche, qui spécifie l’extension à installer.In both cases, a warning will appear which specifies the extension to be installed. Cliquez sur Installer pour obtenir de l’extension.Click Install to obtain the extension. Chaque extension ne doit être installée qu’une seule fois par application de fonction.Each extension only needs to be installed once per function app.

Notes

Le processus d’installation dans le portail peut prendre jusqu’à 10 minutes d’un plan Consommation.The in-portal installation process can take up to 10 minutes on a Consumption plan.

Si vous utilisez Visual Studio, vous pouvez obtenir les extensions en installant les packages NuGet mentionnés plus haut dans cet article.If you are using Visual Studio, you can get the extensions by installing the NuGet packages that are listed earlier in this article.

Configuration de l'authentification et des autorisationsConfiguring Authentication / Authorization

Une identité est nécessaire pour pouvoir utiliser les liaisons décrites dans cet article.The bindings outlined in this article require an identity to be used. Cela permet à l’élément Microsoft Graph d’appliquer des autorisations et des interactions d’audit.This allows the Microsoft Graph to enforce permissions and audit interactions. L’identité peut être un utilisateur accédant à votre application ou à l’application proprement dite.The identity can be a user accessing your application or the application itself. Pour configurer cette identité, configurez Authentification et autorisations App Service avec Azure Active Directory.To configure this identity, set up App Service Authentication / Authorization with Azure Active Directory. Vous devez également de demander les autorisations de ressources éventuelles que vos fonctions requièrent.You will also need to request any resource permissions your functions require.

Notes

L’extension Microsoft Graph ne prend en charge que l’authentification Azure AD.The Microsoft Graph extension only supports Azure AD authentication. Les utilisateurs doivent se connecter avec un compte professionnel ou scolaire.Users need to log in with a work or school account.

Si vous utilisez le portail Azure, un avertissement s’affichera sous l’invite pour installer l’extension.If you're using the Azure portal, you'll see a warning below the prompt to install the extension. L’avertissement vous invite à configurer l’authentification et les autorisations App Service et à demander toute autorisation requise par le modèle ou la liaison.The warning prompts you to configure App Service Authentication / Authorization and request any permissions the template or binding requires. Cliquez sur Configurer Azure AD maintenant ou Ajouter des autorisations maintenant selon le cas.Click Configure Azure AD now or Add permissions now as appropriate.

Jeton d'authentificationAuth token

La liaison d’entrée de jeton d’authentification obtient un jeton Azure AD pour une ressource donnée, puis fournit celui-ci à votre code en tant que chaîne.The auth token input binding gets an Azure AD token for a given resource and provides it to your code as a string. La ressource peut être toute ressource pour laquelle l’application dispose d’autorisations.The resource can be any for which the application has permissions.

Cette section comporte les sous-sections suivantes :This section contains the following subsections:

Jeton d’authentification - exempleAuth token - example

Consultez l’exemple propre à un langage particulier :See the language-specific example:

Jeton d’authentification - exemple de script C#Auth token - C# script example

L’exemple suivant obtient les informations sur le profil utilisateur.The following example gets user profile information.

Le fichier function.json définit un déclencheur HTTP avec une liaison d’entrée de jeton :The function.json file defines an HTTP trigger with a token input binding:

{
  "bindings": [
    {
      "name": "req",
      "type": "httpTrigger",
      "direction": "in"
    },
    {
      "type": "token",
      "direction": "in",
      "name": "graphToken",
      "resource": "https://graph.microsoft.com",
      "identity": "userFromRequest"
    },
    {
      "name": "$return",
      "type": "http",
      "direction": "out"
    }
  ],
  "disabled": false
}

Le code de script C# utilise le jeton pour effectuer un appel HTTP à l’élément Microsoft Graph, puis retourne le résultat :The C# script code uses the token to make an HTTP call to the Microsoft Graph and returns the result:

using System.Net; 
using System.Net.Http; 
using System.Net.Http.Headers;
using Microsoft.Extensions.Logging; 

public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, string graphToken, ILogger log)
{
    HttpClient client = new HttpClient();
    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", graphToken);
    return await client.GetAsync("https://graph.microsoft.com/v1.0/me/");
}

Jeton d’authentification - exemple JavaScriptAuth token - JavaScript example

L’exemple suivant obtient les informations sur le profil utilisateur.The following example gets user profile information.

Le fichier function.json définit un déclencheur HTTP avec une liaison d’entrée de jeton :The function.json file defines an HTTP trigger with a token input binding:

{
  "bindings": [
    {
      "name": "req",
      "type": "httpTrigger",
      "direction": "in"
    },
    {
      "type": "token",
      "direction": "in",
      "name": "graphToken",
      "resource": "https://graph.microsoft.com",
      "identity": "userFromRequest"
    },
    {
      "name": "res",
      "type": "http",
      "direction": "out"
    }
  ],
  "disabled": false
}

Le code JavaScript utilise le jeton pour effectuer un appel HTTP à l’élément Microsoft Graph, puis retourne le résultat.The JavaScript code uses the token to make an HTTP call to the Microsoft Graph and returns the result.

const rp = require('request-promise');

module.exports = function (context, req) {
    let token = "Bearer " + context.bindings.graphToken;

    let options = {
        uri: 'https://graph.microsoft.com/v1.0/me/',
        headers: {
            'Authorization': token
        }
    };
    
    rp(options)
        .then(function(profile) {
            context.res = {
                body: profile
            };
            context.done();
        })
        .catch(function(err) {
            context.res = {
                status: 500,
                body: err
            };
            context.done();
        });
};

Jeton d’authentification - attributsAuth token - attributes

Dans les bibliothèques de classes C#, utilisez l’attribut Token.In C# class libraries, use the Token attribute.

Jeton d’authentification - configurationAuth token - configuration

Le tableau suivant décrit les propriétés de configuration de liaison que vous définissez dans le fichier function.json et l’attribut Token.The following table explains the binding configuration properties that you set in the function.json file and the Token attribute.

Propriété function.jsonfunction.json property Propriété d’attributAttribute property DescriptionDescription
namename n/an/a Obligatoire : nom de variable utilisé dans le code de fonction pour le jeton d'authentification.Required - the variable name used in function code for the auth token. Voir Utilisation d’une liaison d’entrée de jeton d’authentification à partir du code.See Using an auth token input binding from code.
typetype n/an/a Obligatoire : doit être défini sur token.Required - must be set to token.
directiondirection n/an/a Obligatoire : doit être défini sur in.Required - must be set to in.
identityidentity IdentitéIdentity Obligatoire : identité utilisée pour effectuer l’action.Required - The identity that will be used to perform the action. Il peut s'agir de l'une des valeurs suivantes :Can be one of the following values:
  • userFromRequest : valide uniquement avec Déclencheur HTTP.userFromRequest - Only valid with HTTP trigger. Utilise l’identité de l’utilisateur appelant.Uses the identity of the calling user.
  • userFromId : utilise l’identité d’un utilisateur qui s’est précédemment connecté avec l’ID spécifié.userFromId - Uses the identity of a previously logged-in user with the specified ID. Voir la propriété userId.See the userId property.
  • userFromToken : utilise l’identité représentée par le jeton spécifié.userFromToken - Uses the identity represented by the specified token. Voir la propriété userToken.See the userToken property.
  • clientCredentials : utilise l’identité de l’application de fonction.clientCredentials - Uses the identity of the function app.
userIduserId UserIdUserId Obligatoire si et seulement si la propriété identity a la valeur userFromId.Needed if and only if identity is set to userFromId. ID principal associé à un utilisateur qui s’est précédemment connecté.A user principal ID associated with a previously logged-in user.
userTokenuserToken UserTokenUserToken Obligatoire si et seulement si la propriété identity a la valeur userFromToken.Needed if and only if identity is set to userFromToken. Jeton valide pour l’application de fonction.A token valid for the function app.
RessourceResource resourceresource Obligatoire : URL de la ressource Azure AD pour laquelle le jeton est demandé.Required - An Azure AD resource URL for which the token is being requested.

Jeton d’authentification - utilisationAuth token - usage

La liaison elle-même ne nécessite pas d’autorisations Azure AD mais, selon la façon dont le jeton est utilisé, il se peut que vous deviez demander des autorisations supplémentaires.The binding itself does not require any Azure AD permissions, but depending on how the token is used, you may need to request additional permissions. Vérifiez les exigences de la ressource à laquelle vous avez l’intention d’accéder avec le jeton.Check the requirements of the resource you intend to access with the token.

Le jeton est toujours présenté au code sous forme de chaîne.The token is always presented to code as a string.

Notes

Quand vous développez localement avec l’une des options userFromId, userFromToken ou userFromRequest, le jeton requis peut être obtenu manuellement et spécifié dans l’en-tête de demande X-MS-TOKEN-AAD-ID-TOKEN à partir d’une application cliente appelante.When developing locally with either of userFromId, userFromToken or userFromRequest options, required token can be obtained manually and specified in X-MS-TOKEN-AAD-ID-TOKEN request header from a calling client application.

Entrée ExcelExcel input

La liaison d’entrée de tableau Excel lit le contenu d’un tableau Excel stocké sur OneDrive.The Excel table input binding reads the contents of an Excel table stored in OneDrive.

Cette section comporte les sous-sections suivantes :This section contains the following subsections:

Entrée Excel - exempleExcel input - example

Consultez l’exemple propre à un langage particulier :See the language-specific example:

Entrée Excel - exemple de script C#Excel input - C# script example

Le fichier function.json suivant définit un déclencheur HTTP avec une liaison d’entrée Excel :The following function.json file defines an HTTP trigger with an Excel input binding:

{
  "bindings": [
    {
      "authLevel": "anonymous",
      "name": "req",
      "type": "httpTrigger",
      "direction": "in"
    },
    {
      "type": "excel",
      "direction": "in",
      "name": "excelTableData",
      "path": "{query.workbook}",
      "identity": "UserFromRequest",
      "tableName": "{query.table}"
    },
    {
      "name": "$return",
      "type": "http",
      "direction": "out"
    }
  ],
  "disabled": false
}

Le code de script C# suivant lit le contenu du tableau spécifié, puis le retourne à l’utilisateur :The following C# script code reads the contents of the specified table and returns them to the user:

using System.Net;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Primitives;
using Microsoft.Extensions.Logging;

public static IActionResult Run(HttpRequest req, string[][] excelTableData, ILogger log)
{
    return new OkObjectResult(excelTableData);
}

Entrée Excel - exemple JavaScriptExcel input - JavaScript example

Le fichier function.json suivant définit un déclencheur HTTP avec une liaison d’entrée Excel :The following function.json file defines an HTTP trigger with an Excel input binding:

{
  "bindings": [
    {
      "authLevel": "anonymous",
      "name": "req",
      "type": "httpTrigger",
      "direction": "in"
    },
    {
      "type": "excel",
      "direction": "in",
      "name": "excelTableData",
      "path": "{query.workbook}",
      "identity": "UserFromRequest",
      "tableName": "{query.table}"
    },
    {
      "name": "res",
      "type": "http",
      "direction": "out"
    }
  ],
  "disabled": false
}

Le code JavaScript suivant lit le contenu du tableau spécifié, puis le retourne à l’utilisateur.The following JavaScript code reads the contents of the specified table and returns them to the user.

module.exports = function (context, req) {
    context.res = {
        body: context.bindings.excelTableData
    };
    context.done();
};

Entrée Excel - attributsExcel input - attributes

Dans les bibliothèques de classes C#, utilisez l’attribut Excel.In C# class libraries, use the Excel attribute.

Entrée Excel - configurationExcel input - configuration

Le tableau suivant décrit les propriétés de configuration de liaison que vous définissez dans le fichier function.json et l’attribut Excel.The following table explains the binding configuration properties that you set in the function.json file and the Excel attribute.

Propriété function.jsonfunction.json property Propriété d’attributAttribute property DescriptionDescription
namename n/an/a Obligatoire : nom de variable utilisé dans le code de fonction pour le tableau Excel.Required - the variable name used in function code for the Excel table. Voir Utilisation d’une liaison d’entrée de tableau Excel à partir du code.See Using an Excel table input binding from code.
typetype n/an/a Obligatoire : doit être défini sur excel.Required - must be set to excel.
directiondirection n/an/a Obligatoire : doit être défini sur in.Required - must be set to in.
identityidentity IdentitéIdentity Obligatoire : identité utilisée pour effectuer l’action.Required - The identity that will be used to perform the action. Il peut s'agir de l'une des valeurs suivantes :Can be one of the following values:
  • userFromRequest : valide uniquement avec Déclencheur HTTP.userFromRequest - Only valid with HTTP trigger. Utilise l’identité de l’utilisateur appelant.Uses the identity of the calling user.
  • userFromId : utilise l’identité d’un utilisateur qui s’est précédemment connecté avec l’ID spécifié.userFromId - Uses the identity of a previously logged-in user with the specified ID. Voir la propriété userId.See the userId property.
  • userFromToken : utilise l’identité représentée par le jeton spécifié.userFromToken - Uses the identity represented by the specified token. Voir la propriété userToken.See the userToken property.
  • clientCredentials : utilise l’identité de l’application de fonction.clientCredentials - Uses the identity of the function app.
userIduserId UserIdUserId Obligatoire si et seulement si la propriété identity a la valeur userFromId.Needed if and only if identity is set to userFromId. ID principal associé à un utilisateur qui s’est précédemment connecté.A user principal ID associated with a previously logged-in user.
userTokenuserToken UserTokenUserToken Obligatoire si et seulement si la propriété identity a la valeur userFromToken.Needed if and only if identity is set to userFromToken. Jeton valide pour l’application de fonction.A token valid for the function app.
pathpath Chemin d’accèsPath Obligatoire : chemin d’accès au classeur Excel sur OneDrive.Required - the path in OneDrive to the Excel workbook.
worksheetNameworksheetName WorksheetNameWorksheetName La feuille de calcul dans laquelle se trouve le tableau.The worksheet in which the table is found.
tableNametableName TableNameTableName Nom de la table.The name of the table. Si non spécifié, le contenu de la feuille de calcul est utilisé.If not specified, the contents of the worksheet will be used.

Entrée Excel - utilisationExcel input - usage

Cette liaison nécessite les autorisations Azure AD suivantes :This binding requires the following Azure AD permissions:

RessourceResource AutorisationPermission
Microsoft GraphMicrosoft Graph Lire les fichiers utilisateurRead user files

La liaison expose les types suivants de fonctions .NET :The binding exposes the following types to .NET functions:

  • string[][]string[][]
  • Microsoft.Graph.WorkbookTableMicrosoft.Graph.WorkbookTable
  • Types d’objets personnalisés (utilisant une liaison de modèle structurel)Custom object types (using structural model binding)

Sortie ExcelExcel output

La liaison de sortie Excel modifie le contenu d’un tableau Excel stocké sur OneDrive.The Excel output binding modifies the contents of an Excel table stored in OneDrive.

Cette section comporte les sous-sections suivantes :This section contains the following subsections:

Sortie Excel - exempleExcel output - example

Consultez l’exemple propre à un langage particulier :See the language-specific example:

Sortie Excel - exemple de script C#Excel output - C# script example

L’exemple suivant ajoute des lignes à un tableau Excel.The following example adds rows to an Excel table.

Le fichier function.json définit un déclencheur HTTP avec une liaison de sortie Excel :The function.json file defines an HTTP trigger with an Excel output binding:

{
  "bindings": [
    {
      "authLevel": "anonymous",
      "name": "req",
      "type": "httpTrigger",
      "direction": "in"
    },
    {
      "name": "newExcelRow",
      "type": "excel",
      "direction": "out",
      "identity": "userFromRequest",
      "updateType": "append",
      "path": "{query.workbook}",
      "tableName": "{query.table}"
    },
    {
      "name": "$return",
      "type": "http",
      "direction": "out"
    }
  ],
  "disabled": false
}

Le code de script C# ajoute une ligne au tableau (supposé ne contenir qu’une seule colonne) basée sur l’entrée de la chaîne de requête :The C# script code adds a new row to the table (assumed to be single-column) based on input from the query string:

using System.Net;
using System.Text;
using Microsoft.Extensions.Logging;

public static async Task Run(HttpRequest req, IAsyncCollector<object> newExcelRow, ILogger log)
{
    string input = req.Query
        .FirstOrDefault(q => string.Compare(q.Key, "text", true) == 0)
        .Value;
    await newExcelRow.AddAsync(new {
        Text = input
        // Add other properties for additional columns here
    });
    return;
}

Sortie Excel - exemple JavaScriptExcel output - JavaScript example

L’exemple suivant ajoute des lignes à un tableau Excel.The following example adds rows to an Excel table.

Le fichier function.json définit un déclencheur HTTP avec une liaison de sortie Excel :The function.json file defines an HTTP trigger with an Excel output binding:

{
  "bindings": [
    {
      "authLevel": "anonymous",
      "name": "req",
      "type": "httpTrigger",
      "direction": "in"
    },
    {
      "name": "newExcelRow",
      "type": "excel",
      "direction": "out",
      "identity": "userFromRequest",
      "updateType": "append",
      "path": "{query.workbook}",
      "tableName": "{query.table}"
    },
    {
      "name": "res",
      "type": "http",
      "direction": "out"
    }
  ],
  "disabled": false
}

Le code JavaScript suivant ajoute une ligne au tableau (supposé ne contenir qu’une seule colonne) basée sur l’entrée de la chaîne de requête.The following JavaScript code adds a new row to the table (assumed to be single-column) based on input from the query string.

module.exports = function (context, req) {
    context.bindings.newExcelRow = {
        text: req.query.text
        // Add other properties for additional columns here
    }
    context.done();
};

Sortie Excel - attributsExcel output - attributes

Dans les bibliothèques de classes C#, utilisez l’attribut Excel.In C# class libraries, use the Excel attribute.

Sortie Excel - configurationExcel output - configuration

Le tableau suivant décrit les propriétés de configuration de liaison que vous définissez dans le fichier function.json et l’attribut Excel.The following table explains the binding configuration properties that you set in the function.json file and the Excel attribute.

Propriété function.jsonfunction.json property Propriété d’attributAttribute property DescriptionDescription
namename n/an/a Obligatoire : nom de variable utilisé dans le code de fonction pour le jeton d'authentification.Required - the variable name used in function code for the auth token. Voir Utilisation d’une liaison de sortie de tableau Excel à partir du code.See Using an Excel table output binding from code.
typetype n/an/a Obligatoire : doit être défini sur excel.Required - must be set to excel.
directiondirection n/an/a Obligatoire : doit être défini sur out.Required - must be set to out.
identityidentity IdentitéIdentity Obligatoire : identité utilisée pour effectuer l’action.Required - The identity that will be used to perform the action. Il peut s'agir de l'une des valeurs suivantes :Can be one of the following values:
  • userFromRequest : valide uniquement avec Déclencheur HTTP.userFromRequest - Only valid with HTTP trigger. Utilise l’identité de l’utilisateur appelant.Uses the identity of the calling user.
  • userFromId : utilise l’identité d’un utilisateur qui s’est précédemment connecté avec l’ID spécifié.userFromId - Uses the identity of a previously logged-in user with the specified ID. Voir la propriété userId.See the userId property.
  • userFromToken : utilise l’identité représentée par le jeton spécifié.userFromToken - Uses the identity represented by the specified token. Voir la propriété userToken.See the userToken property.
  • clientCredentials : utilise l’identité de l’application de fonction.clientCredentials - Uses the identity of the function app.
UserIdUserId userIduserId Obligatoire si et seulement si la propriété identity a la valeur userFromId.Needed if and only if identity is set to userFromId. ID principal associé à un utilisateur qui s’est précédemment connecté.A user principal ID associated with a previously logged-in user.
userTokenuserToken UserTokenUserToken Obligatoire si et seulement si la propriété identity a la valeur userFromToken.Needed if and only if identity is set to userFromToken. Jeton valide pour l’application de fonction.A token valid for the function app.
pathpath Chemin d’accèsPath Obligatoire : chemin d’accès au classeur Excel sur OneDrive.Required - the path in OneDrive to the Excel workbook.
worksheetNameworksheetName WorksheetNameWorksheetName La feuille de calcul dans laquelle se trouve le tableau.The worksheet in which the table is found.
tableNametableName TableNameTableName Nom de la table.The name of the table. Si non spécifié, le contenu de la feuille de calcul est utilisé.If not specified, the contents of the worksheet will be used.
updateTypeupdateType UpdateTypeUpdateType Obligatoire : type de modification à apporter au tableau.Required - The type of change to make to the table. Il peut s'agir de l'une des valeurs suivantes :Can be one of the following values:
  • update : remplace le contenu du tableau sur OneDrive.update - Replaces the contents of the table in OneDrive.
  • append : ajoute la charge utile à la fin du tableau sur OneDrive en créant des lignes.append - Adds the payload to the end of the table in OneDrive by creating new rows.

Sortie Excel - utilisationExcel output - usage

Cette liaison nécessite les autorisations Azure AD suivantes :This binding requires the following Azure AD permissions:

RessourceResource AutorisationPermission
Microsoft GraphMicrosoft Graph Avoir un accès total aux fichiers utilisateurHave full access to user files

La liaison expose les types suivants de fonctions .NET :The binding exposes the following types to .NET functions:

  • string[][]string[][]
  • Newtonsoft.Json.Linq.JObjectNewtonsoft.Json.Linq.JObject
  • Microsoft.Graph.WorkbookTableMicrosoft.Graph.WorkbookTable
  • Types d’objets personnalisés (utilisant une liaison de modèle structurel)Custom object types (using structural model binding)

Entrée de fichierFile input

La liaison d’entrée de fichier OneDrive lit le contenu d’un fichier stocké sur OneDrive.The OneDrive File input binding reads the contents of a file stored in OneDrive.

Cette section comporte les sous-sections suivantes :This section contains the following subsections:

Entrée de fichier - exempleFile input - example

Consultez l’exemple propre à un langage particulier :See the language-specific example:

Entrée de fichier - exemple de script C#File input - C# script example

L’exemple suivant lit un fichier stocké sur OneDrive.The following example reads a file that is stored in OneDrive.

Le fichier function.json définit un déclencheur HTTP avec une liaison d’entrée de fichier OneDrive :The function.json file defines an HTTP trigger with a OneDrive file input binding:

{
  "bindings": [
    {
      "authLevel": "anonymous",
      "name": "req",
      "type": "httpTrigger",
      "direction": "in"
    },
    {
      "name": "myOneDriveFile",
      "type": "onedrive",
      "direction": "in",
      "path": "{query.filename}",
      "identity": "userFromRequest"
    },
    {
      "name": "$return",
      "type": "http",
      "direction": "out"
    }
  ],
  "disabled": false
}

Le code de script C# lit le fichier spécifié dans la chaîne de requête et enregistre sa longueur :The C# script code reads the file specified in the query string and logs its length:

using System.Net;
using Microsoft.Extensions.Logging;

public static void Run(HttpRequestMessage req, Stream myOneDriveFile, ILogger log)
{
    log.LogInformation(myOneDriveFile.Length.ToString());
}

Entrée de fichier - exemple JavaScriptFile input - JavaScript example

L’exemple suivant lit un fichier stocké sur OneDrive.The following example reads a file that is stored in OneDrive.

Le fichier function.json définit un déclencheur HTTP avec une liaison d’entrée de fichier OneDrive :The function.json file defines an HTTP trigger with a OneDrive file input binding:

{
  "bindings": [
    {
      "authLevel": "anonymous",
      "name": "req",
      "type": "httpTrigger",
      "direction": "in"
    },
    {
      "name": "myOneDriveFile",
      "type": "onedrive",
      "direction": "in",
      "path": "{query.filename}",
      "identity": "userFromRequest"
    },
    {
      "name": "res",
      "type": "http",
      "direction": "out"
    }
  ],
  "disabled": false
}

Le code JavaScript suivant lit le fichier spécifié dans la chaîne de requête et retourne sa longueur.The following JavaScript code reads the file specified in the query string and returns its length.

module.exports = function (context, req) {
    context.res = {
        body: context.bindings.myOneDriveFile.length
    };
    context.done();
};

Entrée de fichier - attributsFile input - attributes

Dans les bibliothèques de classes C#, utilisez l’attribut OneDrive.In C# class libraries, use the OneDrive attribute.

Entrée de fichier - configurationFile input - configuration

Le tableau suivant décrit les propriétés de configuration de liaison que vous définissez dans le fichier function.json et l’attribut OneDrive.The following table explains the binding configuration properties that you set in the function.json file and the OneDrive attribute.

Propriété function.jsonfunction.json property Propriété d’attributAttribute property DescriptionDescription
namename n/an/a Obligatoire : nom de variable utilisé dans le code de fonction pour le fichier.Required - the variable name used in function code for the file. Voir Utilisation d’une liaison d’entrée de fichier OneDrive à partir du code.See Using a OneDrive file input binding from code.
typetype n/an/a Obligatoire : doit être défini sur onedrive.Required - must be set to onedrive.
directiondirection n/an/a Obligatoire : doit être défini sur in.Required - must be set to in.
identityidentity IdentitéIdentity Obligatoire : identité utilisée pour effectuer l’action.Required - The identity that will be used to perform the action. Il peut s'agir de l'une des valeurs suivantes :Can be one of the following values:
  • userFromRequest : valide uniquement avec Déclencheur HTTP.userFromRequest - Only valid with HTTP trigger. Utilise l’identité de l’utilisateur appelant.Uses the identity of the calling user.
  • userFromId : utilise l’identité d’un utilisateur qui s’est précédemment connecté avec l’ID spécifié.userFromId - Uses the identity of a previously logged-in user with the specified ID. Voir la propriété userId.See the userId property.
  • userFromToken : utilise l’identité représentée par le jeton spécifié.userFromToken - Uses the identity represented by the specified token. Voir la propriété userToken.See the userToken property.
  • clientCredentials : utilise l’identité de l’application de fonction.clientCredentials - Uses the identity of the function app.
userIduserId UserIdUserId Obligatoire si et seulement si la propriété identity a la valeur userFromId.Needed if and only if identity is set to userFromId. ID principal associé à un utilisateur qui s’est précédemment connecté.A user principal ID associated with a previously logged-in user.
userTokenuserToken UserTokenUserToken Obligatoire si et seulement si la propriété identity a la valeur userFromToken.Needed if and only if identity is set to userFromToken. Jeton valide pour l’application de fonction.A token valid for the function app.
pathpath Chemin d’accèsPath Obligatoire : chemin d’accès au fichier sur OneDrive.Required - the path in OneDrive to the file.

Entrée de fichier - utilisationFile input - usage

Cette liaison nécessite les autorisations Azure AD suivantes :This binding requires the following Azure AD permissions:

RessourceResource AutorisationPermission
Microsoft GraphMicrosoft Graph Lire les fichiers utilisateurRead user files

La liaison expose les types suivants de fonctions .NET :The binding exposes the following types to .NET functions:

  • byte[]byte[]
  • STREAMStream
  • stringstring
  • Microsoft.Graph.DriveItemMicrosoft.Graph.DriveItem

Sortie de fichierFile output

La liaison de sortie de fichier OneDrive modifie le contenu d’un fichier stocké sur OneDrive.The OneDrive file output binding modifies the contents of a file stored in OneDrive.

Cette section comporte les sous-sections suivantes :This section contains the following subsections:

Sortie de fichier - exempleFile output - example

Consultez l’exemple propre à un langage particulier :See the language-specific example:

Sortie de fichier - exemple de script C#File output - C# script example

L’exemple suivant écrit dans un fichier stocké sur OneDrive.The following example writes to a file that is stored in OneDrive.

Le fichier function.json définit un déclencheur HTTP avec une liaison de sortie OneDrive :The function.json file defines an HTTP trigger with a OneDrive output binding:

{
  "bindings": [
    {
      "authLevel": "anonymous",
      "name": "req",
      "type": "httpTrigger",
      "direction": "in"
    },
    {
      "name": "myOneDriveFile",
      "type": "onedrive",
      "direction": "out",
      "path": "FunctionsTest.txt",
      "identity": "userFromRequest"
    },
    {
      "name": "$return",
      "type": "http",
      "direction": "out"
    }
  ],
  "disabled": false
}

Le code de script C# obtient le texte de la chaîne de requête et écrit ce texte dans un fichier texte (FunctionsTest.txt, tel que défini dans l’exemple précédent) à la racine du OneDrive de l’appelant :The C# script code gets text from the query string and writes it to a text file (FunctionsTest.txt as defined in the preceding example) at the root of the caller's OneDrive:

using System.Net;
using System.Text;
using Microsoft.Extensions.Logging;

public static async Task Run(HttpRequest req, ILogger log, Stream myOneDriveFile)
{
    string data = req.Query
        .FirstOrDefault(q => string.Compare(q.Key, "text", true) == 0)
        .Value;
    await myOneDriveFile.WriteAsync(Encoding.UTF8.GetBytes(data), 0, data.Length);
    myOneDriveFile.Close();
    return;
}

Sortie de fichier - exemple JavaScriptFile output - JavaScript example

L’exemple suivant écrit dans un fichier stocké sur OneDrive.The following example writes to a file that is stored in OneDrive.

Le fichier function.json définit un déclencheur HTTP avec une liaison de sortie OneDrive :The function.json file defines an HTTP trigger with a OneDrive output binding:

{
  "bindings": [
    {
      "authLevel": "anonymous",
      "name": "req",
      "type": "httpTrigger",
      "direction": "in"
    },
    {
      "name": "myOneDriveFile",
      "type": "onedrive",
      "direction": "out",
      "path": "FunctionsTest.txt",
      "identity": "userFromRequest"
    },
    {
      "name": "res",
      "type": "http",
      "direction": "out"
    }
  ],
  "disabled": false
}

Le code JavaScript obtient le texte de la chaîne de requête et écrit ce texte dans un fichier texte (FunctionsTest.txt, tel que défini dans la configuration ci-dessus) à la racine du OneDrive de l’appelant.The JavaScript code gets text from the query string and writes it to a text file (FunctionsTest.txt as defined in the config above) at the root of the caller's OneDrive.

module.exports = function (context, req) {
    context.bindings.myOneDriveFile = req.query.text;
    context.done();
};

Sortie de fichier - attributsFile output - attributes

Dans les bibliothèques de classes C#, utilisez l’attribut OneDrive.In C# class libraries, use the OneDrive attribute.

Sortie de fichier - configurationFile output - configuration

Le tableau suivant décrit les propriétés de configuration de liaison que vous définissez dans le fichier function.json et l’attribut OneDrive.The following table explains the binding configuration properties that you set in the function.json file and the OneDrive attribute.

Propriété function.jsonfunction.json property Propriété d’attributAttribute property DescriptionDescription
namename n/an/a Obligatoire : nom de variable utilisé dans le code de fonction pour le fichier.Required - the variable name used in function code for file. Voir Utilisation d’une liaison de sortie de fichier OneDrive à partir du code.See Using a OneDrive file output binding from code.
typetype n/an/a Obligatoire : doit être défini sur onedrive.Required - must be set to onedrive.
directiondirection n/an/a Obligatoire : doit être défini sur out.Required - must be set to out.
identityidentity IdentitéIdentity Obligatoire : identité utilisée pour effectuer l’action.Required - The identity that will be used to perform the action. Il peut s'agir de l'une des valeurs suivantes :Can be one of the following values:
  • userFromRequest : valide uniquement avec Déclencheur HTTP.userFromRequest - Only valid with HTTP trigger. Utilise l’identité de l’utilisateur appelant.Uses the identity of the calling user.
  • userFromId : utilise l’identité d’un utilisateur qui s’est précédemment connecté avec l’ID spécifié.userFromId - Uses the identity of a previously logged-in user with the specified ID. Voir la propriété userId.See the userId property.
  • userFromToken : utilise l’identité représentée par le jeton spécifié.userFromToken - Uses the identity represented by the specified token. Voir la propriété userToken.See the userToken property.
  • clientCredentials : utilise l’identité de l’application de fonction.clientCredentials - Uses the identity of the function app.
UserIdUserId userIduserId Obligatoire si et seulement si la propriété identity a la valeur userFromId.Needed if and only if identity is set to userFromId. ID principal associé à un utilisateur qui s’est précédemment connecté.A user principal ID associated with a previously logged-in user.
userTokenuserToken UserTokenUserToken Obligatoire si et seulement si la propriété identity a la valeur userFromToken.Needed if and only if identity is set to userFromToken. Jeton valide pour l’application de fonction.A token valid for the function app.
pathpath Chemin d’accèsPath Obligatoire : chemin d’accès au fichier sur OneDrive.Required - the path in OneDrive to the file.

Sortie de fichier - utilisationFile output - usage

Cette liaison nécessite les autorisations Azure AD suivantes :This binding requires the following Azure AD permissions:

RessourceResource AutorisationPermission
Microsoft GraphMicrosoft Graph Avoir un accès total aux fichiers utilisateurHave full access to user files

La liaison expose les types suivants de fonctions .NET :The binding exposes the following types to .NET functions:

  • byte[]byte[]
  • STREAMStream
  • stringstring
  • Microsoft.Graph.DriveItemMicrosoft.Graph.DriveItem

Sortie OutlookOutlook output

La liaison de sortie de message Outlook envoie un message électronique via Outlook.The Outlook message output binding sends a mail message through Outlook.

Cette section comporte les sous-sections suivantes :This section contains the following subsections:

Sortie Outlook - exempleOutlook output - example

Consultez l’exemple propre à un langage particulier :See the language-specific example:

Sortie Outlook - exemple de script C#Outlook output - C# script example

L’exemple suivant envoie un message électronique via Outlook.The following example sends an email through Outlook.

Le fichier function.json définit un déclencheur HTTP avec une liaison de sortie de message Outlook :The function.json file defines an HTTP trigger with an Outlook message output binding:

{
  "bindings": [
    {
      "name": "req",
      "type": "httpTrigger",
      "direction": "in"
    },
    {
      "name": "message",
      "type": "outlook",
      "direction": "out",
      "identity": "userFromRequest"
    }
  ],
  "disabled": false
}

Le code de script C# envoie un e-mail de l’appelant à un destinataire spécifié dans la chaîne de requête :The C# script code sends a mail from the caller to a recipient specified in the query string:

using System.Net;
using Microsoft.Extensions.Logging;

public static void Run(HttpRequest req, out Message message, ILogger log)
{ 
    string emailAddress = req.Query["to"];
    message = new Message(){
        subject = "Greetings",
        body = "Sent from Azure Functions",
        recipient = new Recipient() {
            address = emailAddress
        }
    };
}

public class Message {
    public String subject {get; set;}
    public String body {get; set;}
    public Recipient recipient {get; set;}
}

public class Recipient {
    public String address {get; set;}
    public String name {get; set;}
}

Sortie Outlook - exemple JavaScriptOutlook output - JavaScript example

L’exemple suivant envoie un message électronique via Outlook.The following example sends an email through Outlook.

Le fichier function.json définit un déclencheur HTTP avec une liaison de sortie de message Outlook :The function.json file defines an HTTP trigger with an Outlook message output binding:

{
  "bindings": [
    {
      "name": "req",
      "type": "httpTrigger",
      "direction": "in"
    },
    {
      "name": "message",
      "type": "outlook",
      "direction": "out",
      "identity": "userFromRequest"
    }
  ],
  "disabled": false
}

Le code JavaScript envoie un e-mail de l’appelant à un destinataire spécifié dans la chaîne de requête :The JavaScript code sends a mail from the caller to a recipient specified in the query string:

module.exports = function (context, req) {
    context.bindings.message = {
        subject: "Greetings",
        body: "Sent from Azure Functions with JavaScript",
        recipient: {
            address: req.query.to 
        } 
    };
    context.done();
};

Sortie Outlook - attributsOutlook output - attributes

Dans les bibliothèques de classes C#, utilisez l’attribut Outlook.In C# class libraries, use the Outlook attribute.

Sortie Outlook - configurationOutlook output - configuration

Le tableau suivant décrit les propriétés de configuration de liaison que vous définissez dans le fichier function.json et l’attribut Outlook.The following table explains the binding configuration properties that you set in the function.json file and the Outlook attribute.

Propriété function.jsonfunction.json property Propriété d’attributAttribute property DescriptionDescription
namename n/an/a Obligatoire : nom de variable utilisé dans le code de fonction pour l’e-mail.Required - the variable name used in function code for the mail message. Voir Utilisation d’une liaison de sortie de message Outlook à partir du code.See Using an Outlook message output binding from code.
typetype n/an/a Obligatoire : doit être défini sur outlook.Required - must be set to outlook.
directiondirection n/an/a Obligatoire : doit être défini sur out.Required - must be set to out.
identityidentity IdentitéIdentity Obligatoire : identité utilisée pour effectuer l’action.Required - The identity that will be used to perform the action. Il peut s'agir de l'une des valeurs suivantes :Can be one of the following values:
  • userFromRequest : valide uniquement avec Déclencheur HTTP.userFromRequest - Only valid with HTTP trigger. Utilise l’identité de l’utilisateur appelant.Uses the identity of the calling user.
  • userFromId : utilise l’identité d’un utilisateur qui s’est précédemment connecté avec l’ID spécifié.userFromId - Uses the identity of a previously logged-in user with the specified ID. Voir la propriété userId.See the userId property.
  • userFromToken : utilise l’identité représentée par le jeton spécifié.userFromToken - Uses the identity represented by the specified token. Voir la propriété userToken.See the userToken property.
  • clientCredentials : utilise l’identité de l’application de fonction.clientCredentials - Uses the identity of the function app.
userIduserId UserIdUserId Obligatoire si et seulement si la propriété identity a la valeur userFromId.Needed if and only if identity is set to userFromId. ID principal associé à un utilisateur qui s’est précédemment connecté.A user principal ID associated with a previously logged-in user.
userTokenuserToken UserTokenUserToken Obligatoire si et seulement si la propriété identity a la valeur userFromToken.Needed if and only if identity is set to userFromToken. Jeton valide pour l’application de fonction.A token valid for the function app.

Sortie Outlook - utilisationOutlook output - usage

Cette liaison nécessite les autorisations Azure AD suivantes :This binding requires the following Azure AD permissions:

RessourceResource AutorisationPermission
Microsoft GraphMicrosoft Graph Envoyer un e-mail en tant qu’utilisateurSend mail as user

La liaison expose les types suivants de fonctions .NET :The binding exposes the following types to .NET functions:

  • Microsoft.Graph.MessageMicrosoft.Graph.Message
  • Newtonsoft.Json.Linq.JObjectNewtonsoft.Json.Linq.JObject
  • stringstring
  • Types d’objets personnalisés (utilisant une liaison de modèle structurel)Custom object types (using structural model binding)

webhooksWebhooks

Les webhooks vous permettent de réagir à événements dans l’élément Microsoft Graph.Webhooks allow you to react to events in the Microsoft Graph. Pour prendre en charge les webhooks, des fonctions sont requises pour créer et actualiser les webhook abonnements, ainsi qu’y réagir.To support webhooks, functions are needed to create, refresh, and react to webhook subscriptions. Une solution webhook complète nécessite une combinaison des liaisons suivantes :A complete webhook solution requires a combination of the following bindings:

Les liaisons proprement dites ne nécessitent pas d’autorisations Azure AD, mais vous devez demander des autorisations appropriées pour le type de ressource auquel vous souhaitez réagir.The bindings themselves do not require any Azure AD permissions, but you need to request permissions relevant to the resource type you wish to react to. Pour la liste des autorisations nécessaires pour chaque type de ressource, voir Autorisations.For a list of which permissions are needed for each resource type, see subscription permissions.

Pour plus d’informations sur les webhooks, consultez Utilisation de webhooks dans Microsoft Graph.For more information about webhooks, see Working with webhooks in Microsoft Graph.

Déclencheur de webhookWebhook trigger

Le déclencheur de webhook Microsoft Graph permet à une fonction de réagir à un webhook entrant à partir de l’élément Microsoft Graph.The Microsoft Graph webhook trigger allows a function to react to an incoming webhook from the Microsoft Graph. Chaque instance de ce déclencheur peut réagir à un seul type de ressource Microsoft Graph.Each instance of this trigger can react to one Microsoft Graph resource type.

Cette section comporte les sous-sections suivantes :This section contains the following subsections:

Déclencheur webhook - exempleWebhook trigger - example

Consultez l’exemple propre à un langage particulier :See the language-specific example:

Déclencheur de webhook - exemple de script C#Webhook trigger - C# script example

L’exemple suivant gère les webhooks pour les messages entrants Outlook.The following example handles webhooks for incoming Outlook messages. Pour utiliser un déclencheur de webhook, vous devez créer un abonnement et pouvez actualiser l’abonnement pour éviter qu’il n’expire.To use a webhook trigger you create a subscription, and you can refresh the subscription to prevent it from expiring.

Le fichier function.json définit un déclencheur de webhook :The function.json file defines a webhook trigger:

{
  "bindings": [
    {
      "name": "msg",
      "type": "GraphWebhookTrigger",
      "direction": "in",
      "resourceType": "#Microsoft.Graph.Message"
    }
  ],
  "disabled": false
}

Le code de script C# réagit aux e-mails entrants et enregistre le corps de ceux qui sont envoyés par le destinataire et dont l’objet contient la mention « Azure Functions » :The C# script code reacts to incoming mail messages and logs the body of those sent by the recipient and containing "Azure Functions" in the subject:

#r "Microsoft.Graph"
using Microsoft.Graph;
using System.Net;
using Microsoft.Extensions.Logging;

public static async Task Run(Message msg, ILogger log)  
{
    log.LogInformation("Microsoft Graph webhook trigger function processed a request.");

    // Testable by sending oneself an email with the subject "Azure Functions" and some text body
    if (msg.Subject.Contains("Azure Functions") && msg.From.Equals(msg.Sender)) {
        log.LogInformation($"Processed email: {msg.BodyPreview}");
    }
}

Déclencheur de webhook - exemple JavaScriptWebhook trigger - JavaScript example

L’exemple suivant gère les webhooks pour les messages entrants Outlook.The following example handles webhooks for incoming Outlook messages. Pour utiliser un déclencheur de webhook, vous devez créer un abonnement et pouvez actualiser l’abonnement pour éviter qu’il n’expire.To use a webhook trigger you create a subscription, and you can refresh the subscription to prevent it from expiring.

Le fichier function.json définit un déclencheur de webhook :The function.json file defines a webhook trigger:

{
  "bindings": [
    {
      "name": "msg",
      "type": "GraphWebhookTrigger",
      "direction": "in",
      "resourceType": "#Microsoft.Graph.Message"
    }
  ],
  "disabled": false
}

Le code JavaScript réagit aux e-mails entrants et enregistre le corps de ceux qui sont envoyés par le destinataire et dont l’objet contient la mention « Azure Functions » :The JavaScript code reacts to incoming mail messages and logs the body of those sent by the recipient and containing "Azure Functions" in the subject:

module.exports = function (context) {
    context.log("Microsoft Graph webhook trigger function processed a request.");
    const msg = context.bindings.msg
    // Testable by sending oneself an email with the subject "Azure Functions" and some text body
    if((msg.subject.indexOf("Azure Functions") > -1) && (msg.from === msg.sender) ) {
      context.log(`Processed email: ${msg.bodyPreview}`);
    }
    context.done();
};

Déclencheur de webhook - attributsWebhook trigger - attributes

Dans les bibliothèques de classes C#, utilisez l’attribut GraphWebhookTrigger.In C# class libraries, use the GraphWebhookTrigger attribute.

Déclencheur de webhook - configurationWebhook trigger - configuration

Le tableau suivant décrit les propriétés de configuration de liaison que vous définissez dans le fichier function.json et l’attribut GraphWebhookTrigger.The following table explains the binding configuration properties that you set in the function.json file and the GraphWebhookTrigger attribute.

Propriété function.jsonfunction.json property Propriété d’attributAttribute property DescriptionDescription
namename n/an/a Obligatoire : nom de variable utilisé dans le code de fonction pour l’e-mail.Required - the variable name used in function code for the mail message. Voir Utilisation d’une liaison de sortie de message Outlook à partir du code.See Using an Outlook message output binding from code.
typetype n/an/a Obligatoire : doit être défini sur graphWebhook.Required - must be set to graphWebhook.
directiondirection n/an/a Obligatoire : doit être défini sur trigger.Required - must be set to trigger.
resourceTyperesourceType ResourceTypeResourceType Obligatoire : ressource graphique pour laquelle cette fonction doit répondre aux webhooks.Required - the graph resource for which this function should respond to webhooks. Il peut s'agir de l'une des valeurs suivantes :Can be one of the following values:
  • #Microsoft.Graph.Message : modifications apportées aux messages Outlook.#Microsoft.Graph.Message - changes made to Outlook messages.
  • #Microsoft.Graph.DriveItem : modifications apportées aux éléments racine de OneDrive.#Microsoft.Graph.DriveItem - changes made to OneDrive root items.
  • #Microsoft.Graph.Contact : modifications apportées aux contacts personnels dans Outlook.#Microsoft.Graph.Contact - changes made to personal contacts in Outlook.
  • #Microsoft.Graph.Event : modifications apportées aux éléments du calendrier Outlook.#Microsoft.Graph.Event - changes made to Outlook calendar items.

Notes

Une application de fonction ne peut avoir qu’une seule fonction inscrite par rapport à une valeur resourceType donnée.A function app can only have one function that is registered against a given resourceType value.

Déclencheur de webhook - utilisationWebhook trigger - usage

La liaison expose les types suivants de fonctions .NET :The binding exposes the following types to .NET functions:

  • Types de Kit SDK Microsoft Graph pertinents pour le type de ressource, tels que Microsoft.Graph.Message ou Microsoft.Graph.DriveItem.Microsoft Graph SDK types relevant to the resource type, such as Microsoft.Graph.Message or Microsoft.Graph.DriveItem.
  • Types d’objets personnalisés (utilisant une liaison de modèle structurel)Custom object types (using structural model binding)

Entrée de webhookWebhook input

La liaison d’entrée de webhook Microsoft Graph permet de récupérer la liste des abonnements gérés par cette application de fonction.The Microsoft Graph webhook input binding allows you to retrieve the list of subscriptions managed by this function app. La liaison lit à partir d’un stockage d’applications de fonction, et ne reflète donc pas les autres abonnements créés en dehors de l’application.The binding reads from function app storage, so it does not reflect other subscriptions created from outside the app.

Cette section comporte les sous-sections suivantes :This section contains the following subsections:

Entrée de webhook - exempleWebhook input - example

Consultez l’exemple propre à un langage particulier :See the language-specific example:

Entrée de webhook - exemple de script C#Webhook input - C# script example

L’exemple suivant obtient tous les abonnements pour l’utilisateur appelant et les supprime.The following example gets all subscriptions for the calling user and deletes them.

Le fichier function.json définit un déclencheur HTTP avec une liaison d’entrée d’abonnement et une liaison de sortie d’abonnement qui utilise l’action delete :The function.json file defines an HTTP trigger with a subscription input binding and a subscription output binding that uses the delete action:

{
  "bindings": [
    {
      "name": "req",
      "type": "httpTrigger",
      "direction": "in"
    },
    {
      "type": "graphWebhookSubscription",
      "name": "existingSubscriptions",
      "direction": "in",
      "filter": "userFromRequest"
    },
    {
      "type": "graphWebhookSubscription",
      "name": "subscriptionsToDelete",
      "direction": "out",
      "action": "delete",
      "identity": "userFromRequest"
    },
    {
      "type": "http",
      "name": "res",
      "direction": "out"
    }
  ],
  "disabled": false
}

Le code de script C# obtient les abonnements et les supprime :The C# script code gets the subscriptions and deletes them:

using System.Net;
using Microsoft.Extensions.Logging;

public static async Task Run(HttpRequest req, string[] existingSubscriptions, IAsyncCollector<string> subscriptionsToDelete, ILogger log)
{
    log.LogInformation("C# HTTP trigger function processed a request.");
    foreach (var subscription in existingSubscriptions)
    {
        log.LogInformation($"Deleting subscription {subscription}");
        await subscriptionsToDelete.AddAsync(subscription);
    }
}

Entrée de webhook - exemple JavaScriptWebhook input - JavaScript example

L’exemple suivant obtient tous les abonnements pour l’utilisateur appelant et les supprime.The following example gets all subscriptions for the calling user and deletes them.

Le fichier function.json définit un déclencheur HTTP avec une liaison d’entrée d’abonnement et une liaison de sortie d’abonnement qui utilise l’action delete :The function.json file defines an HTTP trigger with a subscription input binding and a subscription output binding that uses the delete action:

{
  "bindings": [
    {
      "name": "req",
      "type": "httpTrigger",
      "direction": "in"
    },
    {
      "type": "graphWebhookSubscription",
      "name": "existingSubscriptions",
      "direction": "in",
      "filter": "userFromRequest"
    },
    {
      "type": "graphWebhookSubscription",
      "name": "subscriptionsToDelete",
      "direction": "out",
      "action": "delete",
      "identity": "userFromRequest"
    },
    {
      "type": "http",
      "name": "res",
      "direction": "out"
    }
  ],
  "disabled": false
}

Le code JavaScript obtient les abonnements et les supprime :The JavaScript code gets the subscriptions and deletes them:

module.exports = function (context, req) {
    const existing = context.bindings.existingSubscriptions;
    var toDelete = [];
    for (var i = 0; i < existing.length; i++) {
        context.log(`Deleting subscription ${existing[i]}`);
        todelete.push(existing[i]);
    }
    context.bindings.subscriptionsToDelete = toDelete;
    context.done();
};

Entrée de webhook - attributsWebhook input - attributes

Dans les bibliothèques de classes C#, utilisez l’attribut GraphWebhookSubscription.In C# class libraries, use the GraphWebhookSubscription attribute.

Entrée de webhook - configurationWebhook input - configuration

Le tableau suivant décrit les propriétés de configuration de liaison que vous définissez dans le fichier function.json et l’attribut GraphWebhookSubscription.The following table explains the binding configuration properties that you set in the function.json file and the GraphWebhookSubscription attribute.

Propriété function.jsonfunction.json property Propriété d’attributAttribute property DescriptionDescription
namename n/an/a Obligatoire : nom de variable utilisé dans le code de fonction pour l’e-mail.Required - the variable name used in function code for the mail message. Voir Utilisation d’une liaison de sortie de message Outlook à partir du code.See Using an Outlook message output binding from code.
typetype n/an/a Obligatoire : doit être défini sur graphWebhookSubscription.Required - must be set to graphWebhookSubscription.
directiondirection n/an/a Obligatoire : doit être défini sur in.Required - must be set to in.
filterfilter FilterFilter Si la valeur est définie sur userFromRequest, la liaison extrait uniquement les abonnements appartenant à l’utilisateur appelant (valide uniquement avec un déclencheur HTTP).If set to userFromRequest, then the binding will only retrieve subscriptions owned by the calling user (valid only with HTTP trigger).

Entrée de webhook - utilisationWebhook input - usage

La liaison expose les types suivants de fonctions .NET :The binding exposes the following types to .NET functions:

  • string[]string[]
  • Tableaux de types d’objets personnalisésCustom object type arrays
  • Newtonsoft.Json.Linq.JObject[]Newtonsoft.Json.Linq.JObject[]
  • Microsoft.Graph.Subscription[]Microsoft.Graph.Subscription[]

Sortie de webhookWebhook output

La liaison de sortie d’abonnement webhook permet de créer, de supprimer et d’actualiser des abonnements webhook dans l’élément Microsoft Graph.The webhook subscription output binding allows you to create, delete, and refresh webhook subscriptions in the Microsoft Graph.

Cette section comporte les sous-sections suivantes :This section contains the following subsections:

Sortie d’abonnement - exempleWebhook output - example

Consultez l’exemple propre à un langage particulier :See the language-specific example:

Sortie de webhook - exemple de script C#Webhook output - C# script example

L’exemple suivant permet de créer un abonnement.The following example creates a subscription. Vous pouvez actualiser l’abonnement pour éviter qu’il n’expire.You can refresh the subscription to prevent it from expiring.

Le fichier function.json définit un déclencheur HTTP avec une liaison de sortie d’abonnement en utilisant l’action create :The function.json file defines an HTTP trigger with a subscription output binding using the create action:

{
  "bindings": [
    {
      "name": "req",
      "type": "httpTrigger",
      "direction": "in"
    },
    {
      "type": "graphWebhookSubscription",
      "name": "clientState",
      "direction": "out",
      "action": "create",
      "subscriptionResource": "me/mailFolders('Inbox')/messages",
      "changeTypes": [
        "created"
      ],
      "identity": "userFromRequest"
    },
    {
      "type": "http",
      "name": "$return",
      "direction": "out"
    }
  ],
  "disabled": false
}

Le code de script C# inscrit un webhook qui informe cette application de fonction quand l’utilisateur appelant reçoit un message Outlook :The C# script code registers a webhook that will notify this function app when the calling user receives an Outlook message:

using System;
using System.Net;
using Microsoft.Extensions.Logging;

public static HttpResponseMessage run(HttpRequestMessage req, out string clientState, ILogger log)
{
  log.LogInformation("C# HTTP trigger function processed a request.");
    clientState = Guid.NewGuid().ToString();
    return new HttpResponseMessage(HttpStatusCode.OK);
}

Sortie de webhook - exemple JavaScriptWebhook output - JavaScript example

L’exemple suivant permet de créer un abonnement.The following example creates a subscription. Vous pouvez actualiser l’abonnement pour éviter qu’il n’expire.You can refresh the subscription to prevent it from expiring.

Le fichier function.json définit un déclencheur HTTP avec une liaison de sortie d’abonnement en utilisant l’action create :The function.json file defines an HTTP trigger with a subscription output binding using the create action:

{
  "bindings": [
    {
      "name": "req",
      "type": "httpTrigger",
      "direction": "in"
    },
    {
      "type": "graphWebhookSubscription",
      "name": "clientState",
      "direction": "out",
      "action": "create",
      "subscriptionResource": "me/mailFolders('Inbox')/messages",
      "changeTypes": [
        "created"
      ],
      "identity": "userFromRequest"
    },
    {
      "type": "http",
      "name": "$return",
      "direction": "out"
    }
  ],
  "disabled": false
}

Le code JavaScript inscrit un webhook qui informe cette application de fonction quand l’utilisateur appelant reçoit un message Outlook :The JavaScript code registers a webhook that will notify this function app when the calling user receives an Outlook message:

const uuidv4 = require('uuid/v4');

module.exports = function (context, req) {
    context.bindings.clientState = uuidv4();
    context.done();
};

Sortie de webhook - attributsWebhook output - attributes

Dans les bibliothèques de classes C#, utilisez l’attribut GraphWebhookSubscription.In C# class libraries, use the GraphWebhookSubscription attribute.

Sortie de webhook - configurationWebhook output - configuration

Le tableau suivant décrit les propriétés de configuration de liaison que vous définissez dans le fichier function.json et l’attribut GraphWebhookSubscription.The following table explains the binding configuration properties that you set in the function.json file and the GraphWebhookSubscription attribute.

Propriété function.jsonfunction.json property Propriété d’attributAttribute property DescriptionDescription
namename n/an/a Obligatoire : nom de variable utilisé dans le code de fonction pour l’e-mail.Required - the variable name used in function code for the mail message. Voir Utilisation d’une liaison de sortie de message Outlook à partir du code.See Using an Outlook message output binding from code.
typetype n/an/a Obligatoire : doit être défini sur graphWebhookSubscription.Required - must be set to graphWebhookSubscription.
directiondirection n/an/a Obligatoire : doit être défini sur out.Required - must be set to out.
identityidentity IdentitéIdentity Obligatoire : identité utilisée pour effectuer l’action.Required - The identity that will be used to perform the action. Il peut s'agir de l'une des valeurs suivantes :Can be one of the following values:
  • userFromRequest : valide uniquement avec Déclencheur HTTP.userFromRequest - Only valid with HTTP trigger. Utilise l’identité de l’utilisateur appelant.Uses the identity of the calling user.
  • userFromId : utilise l’identité d’un utilisateur qui s’est précédemment connecté avec l’ID spécifié.userFromId - Uses the identity of a previously logged-in user with the specified ID. Voir la propriété userId.See the userId property.
  • userFromToken : utilise l’identité représentée par le jeton spécifié.userFromToken - Uses the identity represented by the specified token. Voir la propriété userToken.See the userToken property.
  • clientCredentials : utilise l’identité de l’application de fonction.clientCredentials - Uses the identity of the function app.
userIduserId UserIdUserId Obligatoire si et seulement si la propriété identity a la valeur userFromId.Needed if and only if identity is set to userFromId. ID principal associé à un utilisateur qui s’est précédemment connecté.A user principal ID associated with a previously logged-in user.
userTokenuserToken UserTokenUserToken Obligatoire si et seulement si la propriété identity a la valeur userFromToken.Needed if and only if identity is set to userFromToken. Jeton valide pour l’application de fonction.A token valid for the function app.
actionaction ActionAction Obligatoire : spécifie l’action que la liaison doit effectuer.Required - specifies the action the binding should perform. Il peut s'agir de l'une des valeurs suivantes :Can be one of the following values:
  • create : inscrit un nouvel abonnement.create - Registers a new subscription.
  • delete : supprime un abonnement spécifié.delete - Deletes a specified subscription.
  • refresh : actualise un abonnement spécifié pour empêcher son expiration.refresh - Refreshes a specified subscription to keep it from expiring.
subscriptionResourcesubscriptionResource SubscriptionResourceSubscriptionResource Obligatoire si et seulement si la propriété action a la valeur create.Needed if and only if the action is set to create. Spécifie la ressource Microsoft Graph dont les modifications doivent être surveillées.Specifies the Microsoft Graph resource that will be monitored for changes. Voir Utilisation de webhooks dans Microsoft Graph.See Working with webhooks in Microsoft Graph.
changeTypechangeType ChangeTypeChangeType Obligatoire si et seulement si la propriété action a la valeur create.Needed if and only if the action is set to create. Indique le type de modification de la ressource d’abonnement qui déclenche une notification.Indicates the type of change in the subscribed resource that will raise a notification. Les valeurs prises en charge sont les suivantes : created, updated, deleted.The supported values are: created, updated, deleted. Plusieurs valeurs peuvent être combinées à l’aide d’une liste séparée par des virgules.Multiple values can be combined using a comma-separated list.

Sortie de webhook - utilisationWebhook output - usage

La liaison expose les types suivants de fonctions .NET :The binding exposes the following types to .NET functions:

  • stringstring
  • Microsoft.Graph.SubscriptionMicrosoft.Graph.Subscription

Actualisation de l’abonnement webhookWebhook subscription refresh

Il existe deux approches de l’actualisation d’abonnements :There are two approaches to refreshing subscriptions:

  • Utiliser l’identité de l’application pour gérer tous les abonnements.Use the application identity to deal with all subscriptions. Cette opération nécessite le consentement d’un administrateur Azure Active Directory. Elle peut être utilisée par tous les langages qu’Azure Functions prend en charge.This will require consent from an Azure Active Directory admin. This can be used by all languages supported by Azure Functions.
  • Utiliser l’identité associée à chaque abonnement en liant manuellement chaque ID utilisateur.Use the identity associated with each subscription by manually binding each user ID. Un code personnalisé est nécessaire pour établir la liaison.This will require some custom code to perform the binding. Cette approche ne peut être utilisée que par des fonctions .NET.This can only be used by .NET functions.

Cette section offre un exemple de chacune de ces approches :This section contains an example for each of these approaches:

Actualisation de l’abonnement webhook - exemple d’identité d’applicationWebhook Subscription refresh - app identity example

Consultez l’exemple propre à un langage particulier :See the language-specific example:

Actualisation d’identité d’application - exemple de script C#App identity refresh - C# script example

L’exemple suivant utilise l’identité de l’application pour actualiser un abonnement.The following example uses the application identity to refresh a subscription.

Le fichier function.json définit un déclencheur de minuteur avec une liaison d’entrée d’abonnement et une liaison de sortie d’abonnement :The function.json defines a timer trigger with a subscription input binding and a subscription output binding:

{
  "bindings": [
    {
      "name": "myTimer",
      "type": "timerTrigger",
      "direction": "in",
      "schedule": "0 * * */2 * *"
    },
    {
      "type": "graphWebhookSubscription",
      "name": "existingSubscriptions",
      "direction": "in"
    },
    {
      "type": "graphWebhookSubscription",
      "name": "subscriptionsToRefresh",
      "direction": "out",
      "action": "refresh",
      "identity": "clientCredentials"
    }
  ],
  "disabled": false
}

Le code de script C# actualise les abonnements :The C# script code refreshes the subscriptions:

using System;
using Microsoft.Extensions.Logging;

public static void Run(TimerInfo myTimer, string[] existingSubscriptions, ICollector<string> subscriptionsToRefresh, ILogger log)
{
    // This template uses application permissions and requires consent from an Azure Active Directory admin.
    // See https://go.microsoft.com/fwlink/?linkid=858780
    log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");
    foreach (var subscription in existingSubscriptions)
    {
      log.LogInformation($"Refreshing subscription {subscription}");
      subscriptionsToRefresh.Add(subscription);
    }
}

Actualisation d’identité d’application - exemple de script C#App identity refresh - C# script example

L’exemple suivant utilise l’identité de l’application pour actualiser un abonnement.The following example uses the application identity to refresh a subscription.

Le fichier function.json définit un déclencheur de minuteur avec une liaison d’entrée d’abonnement et une liaison de sortie d’abonnement :The function.json defines a timer trigger with a subscription input binding and a subscription output binding:

{
  "bindings": [
    {
      "name": "myTimer",
      "type": "timerTrigger",
      "direction": "in",
      "schedule": "0 * * */2 * *"
    },
    {
      "type": "graphWebhookSubscription",
      "name": "existingSubscriptions",
      "direction": "in"
    },
    {
      "type": "graphWebhookSubscription",
      "name": "subscriptionsToRefresh",
      "direction": "out",
      "action": "refresh",
      "identity": "clientCredentials"
    }
  ],
  "disabled": false
}

Le code JavaScript actualise les abonnements :The JavaScript code refreshes the subscriptions:

// This template uses application permissions and requires consent from an Azure Active Directory admin.
// See https://go.microsoft.com/fwlink/?linkid=858780

module.exports = function (context) {
    const existing = context.bindings.existingSubscriptions;
    var toRefresh = [];
    for (var i = 0; i < existing.length; i++) {
        context.log(`Refreshing subscription ${existing[i]}`);
        toRefresh.push(existing[i]);
    }
    context.bindings.subscriptionsToRefresh = toRefresh;
    context.done();
};

Actualisation de l’abonnement webhook - exemple d’identité d’utilisateurWebhook Subscription refresh - user identity example

L’exemple suivant utilise l’identité de l’utilisateur pour actualiser un abonnement.The following example uses the user identity to refresh a subscription.

Le fichier function.json définit un déclencheur de minuteur et confie la liaison d’entrée d’abonnement au code de fonction :The function.json file defines a timer trigger and defers the subscription input binding to the function code:

{
  "bindings": [
    {
      "name": "myTimer",
      "type": "timerTrigger",
      "direction": "in",
      "schedule": "0 * * */2 * *"
    },
    {
      "type": "graphWebhookSubscription",
      "name": "existingSubscriptions",
      "direction": "in"
    }
  ],
  "disabled": false
}

Le code de script C# actualise les abonnements et crée la liaison de sortie dans le code à l’aide de l’identité de chaque utilisateur :The C# script code refreshes the subscriptions and creates the output binding in code, using each user's identity:

using System;
using Microsoft.Extensions.Logging;

public static async Task Run(TimerInfo myTimer, UserSubscription[] existingSubscriptions, IBinder binder, ILogger log)
{
  log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");
    foreach (var subscription in existingSubscriptions)
    {
        // binding in code to allow dynamic identity
        using (var subscriptionsToRefresh = await binder.BindAsync<IAsyncCollector<string>>(
            new GraphWebhookSubscriptionAttribute() {
                Action = "refresh",
                Identity = "userFromId",
                UserId = subscription.UserId
            }
        ))
        {
            log.LogInformation($"Refreshing subscription {subscription}");
            await subscriptionsToRefresh.AddAsync(subscription);
        }

    }
}

public class UserSubscription {
    public string UserId {get; set;}
    public string Id {get; set;}
}

Étapes suivantesNext steps