Ligações do Microsoft Graph para funções azureMicrosoft Graph bindings for Azure Functions

Este artigo explica como configurar e trabalhar com os gatilhos e encadernações do Microsoft Graph em Funções Azure.This article explains how to configure and work with Microsoft Graph triggers and bindings in Azure Functions. Com isto, pode utilizar funções Azure para trabalhar com dados, insights e eventos a partir do Microsoft Graph.With these, you can use Azure Functions to work with data, insights, and events from the Microsoft Graph.

A extensão do Microsoft Graph fornece as seguintes encadernações:The Microsoft Graph extension provides the following bindings:

Esta é uma informação de referência para desenvolvedores de Funções Azure.This is reference information for Azure Functions developers. Se for novo nas Funções Azure, comece com os seguintes recursos:If you're new to Azure Functions, start with the following resources:

Nota

As encadernações do Microsoft Graph estão atualmente em pré-visualização para a versão 2.x e superior das Funções Azure.Microsoft Graph bindings are currently in preview for Azure Functions version 2.x and higher. Não são suportados na versão 1.x das Funções.They are not supported in Functions version 1.x.

PacotesPackages

A ligação de entrada auth token é fornecida no pacote Microsoft.Azure.WebJobs.Extensions.AuthTokens NuGet.The auth token input binding is provided in the Microsoft.Azure.WebJobs.Extensions.AuthTokens NuGet package. As outras encadernações do Microsoft Graph são fornecidas no pacote Microsoft.Azure.WebJobs.Extensions.MicrosoftGraph.The other Microsoft Graph bindings are provided in the Microsoft.Azure.WebJobs.Extensions.MicrosoftGraph package. O código fonte para as embalagens está no repositório GitHub de extensão de funções azure-microsoftgraph.Source code for the packages is in the azure-functions-microsoftgraph-extension GitHub repository.

Adicione suporte no ambiente de desenvolvimento preferido usando os seguintes métodos.Add support in you preferred development environment using the following methods.

Ambiente de programaçãoDevelopment environment Tipo de aplicaçãoApplication type Para adicionar suporteTo add support
Visual StudioVisual Studio Biblioteca de classe C#C# class library Instale o pacote NuGetInstall the NuGet package
Visual Studio CodeVisual Studio Code Baseado em ferramentas nuclearesBased on core tools Registe o pacote de extensãoRegister the extension bundle

Recomenda-se a instalação da extensão Ferramentas Azure.Installing the Azure Tools extension is recommended.
Qualquer outro editor/IDEAny other editor/IDE Baseado em ferramentas nuclearesBased on core tools Registe o pacote de extensãoRegister the extension bundle
Portal do AzureAzure Portal Online apenas no portalOnline only in portal Instala ao adicionar uma ligaçãoInstalls when adding a binding

Consulte a Atualização das extensões para atualizar as extensões de ligação existentes sem ter de voltar a publicar a sua aplicação de funções.See Update your extensions to update existing binding extensions without having to republish your function app.

Configuração das extensõesSetting up the extensions

As encadernações do Microsoft Graph estão disponíveis através de extensões de ligação.Microsoft Graph bindings are available through binding extensions. As extensões de ligação são componentes opcionais para o tempo de funcionamento das Funções Azure.Binding extensions are optional components to the Azure Functions runtime. Esta secção mostra como configurar as extensões do Microsoft Graph e do auth token.This section shows how to set up the Microsoft Graph and auth token extensions.

Visualização das Funções de Habilitação 2.0Enabling Functions 2.0 preview

As extensões de encadernação estão disponíveis apenas para pré-visualização das Funções Azure 2.0.Binding extensions are available only for Azure Functions 2.0 preview.

Para obter informações sobre como definir uma aplicação de funções para utilizar a versão pré-visualização 2.0 do tempo de execução das Funções, consulte como direcionar as versõesde execução das Funções Azure .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.

Instalação da extensãoInstalling the extension

Para instalar uma extensão do portal Azure, navegue para um modelo ou encadernação que o refira.To install an extension from the Azure portal, navigate to either a template or binding that references it. Crie uma nova função e, enquanto no ecrã de seleção do modelo, escolha o cenário "Microsoft Graph".Create a new function, and while in the template selection screen, choose the "Microsoft Graph" scenario. Selecione um dos modelos deste cenário.Select one of the templates from this scenario. Em alternativa, pode navegar para o separador "Integrar" de uma função existente e selecionar uma das encadernações abrangidas por este artigo.Alternatively, you can navigate to the "Integrate" tab of an existing function and select one of the bindings covered in this article.

Em ambos os casos, aparecerá um aviso que especifica a extensão a instalar.In both cases, a warning will appear which specifies the extension to be installed. Clique em Instalar para obter a extensão.Click Install to obtain the extension. Cada extensão só precisa de ser instalada uma vez por aplicação de função.Each extension only needs to be installed once per function app.

Nota

O processo de instalação no portal pode demorar até 10 minutos num plano de consumo.The in-portal installation process can take up to 10 minutes on a Consumption plan.

Se estiver a utilizar o Visual Studio, pode obter as extensões instalando os pacotes NuGet que estão listados anteriormente neste artigo.If you are using Visual Studio, you can get the extensions by installing the NuGet packages that are listed earlier in this article.

Configuração da autenticação / autorizaçãoConfiguring Authentication / Authorization

As encadernações descritas neste artigo exigem a sua identidade.The bindings outlined in this article require an identity to be used. Isto permite que o Microsoft Graph aplique permissões e interações de auditoria.This allows the Microsoft Graph to enforce permissions and audit interactions. A identidade pode ser um utilizador que acede à sua aplicação ou à própria aplicação.The identity can be a user accessing your application or the application itself. Para configurar esta identidade, configure a autenticação/autorização do Serviço app com o Diretório Ativo Azure.To configure this identity, set up App Service Authentication / Authorization with Azure Active Directory. Também terá de solicitar quaisquer permissões de recursos que as suas funções exijam.You will also need to request any resource permissions your functions require.

Nota

A extensão do Microsoft Graph apenas suporta a autenticação Azure AD.The Microsoft Graph extension only supports Azure AD authentication. Os utilizadores precisam de fazer login com uma conta de trabalho ou escola.Users need to log in with a work or school account.

Se estiver a utilizar o portal Azure, verá um aviso abaixo do pedido para instalar a extensão.If you're using the Azure portal, you'll see a warning below the prompt to install the extension. O aviso leva-o a configurar a autenticação/autorização do serviço de aplicações e a solicitar quaisquer permissões que o modelo ou encadernação exija.The warning prompts you to configure App Service Authentication / Authorization and request any permissions the template or binding requires. Clique em Configurar O D.C. Agora ou adicione permissões agora, conforme apropriado.Click Configure Azure AD now or Add permissions now as appropriate.

Símbolo de AuthAuth token

A ligação de entrada de token auth recebe um token Azure AD para um determinado recurso e fornece-o ao seu código como uma cadeia.The auth token input binding gets an Azure AD token for a given resource and provides it to your code as a string. O recurso pode ser qualquer um para o qual o pedido tem permissões.The resource can be any for which the application has permissions.

Esta secção contém as seguintes subsecções:This section contains the following subsections:

Auth token - exemploAuth token - example

Consulte o exemplo específico da linguagem:See the language-specific example:

Auth token - C# exemplo de scriptAuth token - C# script example

O exemplo seguinte obtém informações sobre o perfil do utilizador.The following example gets user profile information.

O ficheiro function.json define um gatilho HTTP com uma ligação de entrada simbólica: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
}

O código de script C# usa o símbolo para fazer uma chamada HTTP para o Microsoft Graph e devolve o resultado: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/");
}

Auth token - Exemplo JavaScriptAuth token - JavaScript example

O exemplo seguinte obtém informações sobre o perfil do utilizador.The following example gets user profile information.

O ficheiro function.json define um gatilho HTTP com uma ligação de entrada simbólica: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
}

O código JavaScript utiliza o símbolo para fazer uma chamada HTTP para o Microsoft Graph e devolve o resultado.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();
        });
};

Auth token - atributosAuth token - attributes

Nas bibliotecas da classe C#,use o atributo Token.In C# class libraries, use the Token attribute.

Auth token - configuraçãoAuth token - configuration

A tabela a seguir explica as propriedades de configuração de ligação que definiu no ficheiro função.json e no Token atributo.The following table explains the binding configuration properties that you set in the function.json file and the Token attribute.

propriedade fun.jsonfunction.json property Propriedade de atributoAttribute property DescriçãoDescription
nomename n/dn/a Necessário - o nome variável utilizado no código de função para o símbolo do auth.Required - the variable name used in function code for the auth token. Consulte A utilização de uma incadernaçãode token a uth a partir do código .See Using an auth token input binding from code.
tipotype n/dn/a Obrigatório - deve ser tokendefinido para .Required - must be set to token.
direçãodirection n/dn/a Obrigatório - deve ser indefinido para .Required - must be set to in.
identidadeidentity IdentidadeIdentity Obrigatório - A identidade que será usada para realizar a ação.Required - The identity that will be used to perform the action. Pode ser um dos seguintes valores:Can be one of the following values:
  • userFromRequest- Apenas válido com gatilho HTTP.userFromRequest - Only valid with HTTP trigger. Usa a identidade do utilizador que chama.Uses the identity of the calling user.
  • userFromId- Utiliza a identidade de um utilizador previamente registado com o ID especificado.userFromId - Uses the identity of a previously logged-in user with the specified ID. Veja userId a propriedade.See the userId property.
  • userFromToken- Utiliza a identidade representada pelo símbolo especificado.userFromToken - Uses the identity represented by the specified token. Veja userToken a propriedade.See the userToken property.
  • clientCredentials- Utiliza a identidade da aplicação de funções.clientCredentials - Uses the identity of the function app.
userIduserId UseridUserId Necessário se e apenas userFromIdse a identidade for definida para .Needed if and only if identity is set to userFromId. Um ID principal do utilizador associado a um utilizador previamente iniciado.A user principal ID associated with a previously logged-in user.
userTokenuserToken UserTokenUserToken Necessário se e apenas userFromTokense a identidade for definida para .Needed if and only if identity is set to userFromToken. Um símbolo válido para a aplicação de funções.A token valid for the function app.
RecursoResource recursoresource Necessário - Um URL de recurso Azure AD para o qual o símbolo está a ser solicitado.Required - An Azure AD resource URL for which the token is being requested.

Auth token - usoAuth token - usage

A ligação em si não requer permissões ads Azure, mas dependendo da forma como o token é usado, você pode precisar solicitar permissões adicionais.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. Verifique os requisitos do recurso a que pretende aceder com o símbolo.Check the requirements of the resource you intend to access with the token.

O símbolo é sempre apresentado ao código como uma corda.The token is always presented to code as a string.

Nota

Ao desenvolver-se localmente userFromToken userFromRequest com uma das userFromIdopções ou opções necessárias, o token necessário pode ser obtido manualmente e especificado no X-MS-TOKEN-AAD-ID-TOKEN cabeçalho de pedido a partir de uma aplicação de cliente de chamada.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.

Entrada excelExcel input

A ligação de entrada da tabela Excel lê o conteúdo de uma tabela Excel armazenada no OneDrive.The Excel table input binding reads the contents of an Excel table stored in OneDrive.

Esta secção contém as seguintes subsecções:This section contains the following subsections:

Excel entrada - exemploExcel input - example

Consulte o exemplo específico da linguagem:See the language-specific example:

Excel entrada - C# exemplo de scriptExcel input - C# script example

O ficheiro função.json define um gatilho HTTP com uma ligação de entrada 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
}

O seguinte código de script C# lê o conteúdo da tabela especificada e devolve-os ao utilizador: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);
}

Excel entrada - Exemplo JavaScriptExcel input - JavaScript example

O ficheiro função.json define um gatilho HTTP com uma ligação de entrada 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
}

O seguinte código JavaScript lê o conteúdo da tabela especificada e devolve-os ao utilizador.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();
};

Excel entrada - atributosExcel input - attributes

Nas bibliotecas da classe C#,use o atributo Excel.In C# class libraries, use the Excel attribute.

Entrada Excel - configuraçãoExcel input - configuration

A tabela a seguir explica as propriedades de configuração de ligação que definiu no ficheiro função.json e no Excel atributo.The following table explains the binding configuration properties that you set in the function.json file and the Excel attribute.

propriedade fun.jsonfunction.json property Propriedade de atributoAttribute property DescriçãoDescription
nomename n/dn/a Obrigatório - o nome variável utilizado no código de função para a tabela Excel.Required - the variable name used in function code for the Excel table. Consulte A utilização de uma encadernação de entrada de mesa Excel a partir do código.See Using an Excel table input binding from code.
tipotype n/dn/a Obrigatório - deve ser exceldefinido para .Required - must be set to excel.
direçãodirection n/dn/a Obrigatório - deve ser indefinido para .Required - must be set to in.
identidadeidentity IdentidadeIdentity Obrigatório - A identidade que será usada para realizar a ação.Required - The identity that will be used to perform the action. Pode ser um dos seguintes valores:Can be one of the following values:
  • userFromRequest- Apenas válido com gatilho HTTP.userFromRequest - Only valid with HTTP trigger. Usa a identidade do utilizador que chama.Uses the identity of the calling user.
  • userFromId- Utiliza a identidade de um utilizador previamente registado com o ID especificado.userFromId - Uses the identity of a previously logged-in user with the specified ID. Veja userId a propriedade.See the userId property.
  • userFromToken- Utiliza a identidade representada pelo símbolo especificado.userFromToken - Uses the identity represented by the specified token. Veja userToken a propriedade.See the userToken property.
  • clientCredentials- Utiliza a identidade da aplicação de funções.clientCredentials - Uses the identity of the function app.
userIduserId UseridUserId Necessário se e apenas userFromIdse a identidade for definida para .Needed if and only if identity is set to userFromId. Um ID principal do utilizador associado a um utilizador previamente iniciado.A user principal ID associated with a previously logged-in user.
userTokenuserToken UserTokenUserToken Necessário se e apenas userFromTokense a identidade for definida para .Needed if and only if identity is set to userFromToken. Um símbolo válido para a aplicação de funções.A token valid for the function app.
caminhopath CaminhoPath Necessário - o caminho no OneDrive para o livro Excel.Required - the path in OneDrive to the Excel workbook.
folha de cálculoNomeworksheetName Folha de cálculoNomeWorksheetName A folha de cálculo na qual a mesa é encontrada.The worksheet in which the table is found.
tableNametableName Nome de mesaTableName O nome da mesa.The name of the table. Se não especificado, o conteúdo da folha de cálculo será utilizado.If not specified, the contents of the worksheet will be used.

Excel entrada - utilizaçãoExcel input - usage

Esta ligação requer as seguintes permissões da AD Azure:This binding requires the following Azure AD permissions:

RecursoResource PermissãoPermission
Microsoft GraphMicrosoft Graph Ler ficheiros de utilizadoresRead user files

A ligação expõe os seguintes tipos às funções .NET:The binding exposes the following types to .NET functions:

  • corda[][]string[][]
  • Microsoft.Graph.WorkbookTableMicrosoft.Graph.WorkbookTable
  • Tipos de objetos personalizados (utilizando a ligação do modelo estrutural)Custom object types (using structural model binding)

Saída excelExcel output

A ligação de saída excel modifica o conteúdo de uma tabela Excel armazenada no OneDrive.The Excel output binding modifies the contents of an Excel table stored in OneDrive.

Esta secção contém as seguintes subsecções:This section contains the following subsections:

Saída excel - exemploExcel output - example

Consulte o exemplo específico da linguagem:See the language-specific example:

Excel output - C# script exemploExcel output - C# script example

O exemplo seguinte adiciona linhas a uma tabela Excel.The following example adds rows to an Excel table.

O ficheiro function.json define um gatilho HTTP com uma ligação de saída 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
}

O código de script C# adiciona uma nova linha à tabela (assumidamente uma coluna única) com base na entrada da cadeia de consulta: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;
}

Saída excel - Exemplo JavaScriptExcel output - JavaScript example

O exemplo seguinte adiciona linhas a uma tabela Excel.The following example adds rows to an Excel table.

O ficheiro function.json define um gatilho HTTP com uma ligação de saída 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
}

O seguinte código JavaScript adiciona uma nova linha à tabela (assumidamente uma coluna única) com base na entrada da cadeia de consulta.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();
};

Saída excel - atributosExcel output - attributes

Nas bibliotecas da classe C#,use o atributo Excel.In C# class libraries, use the Excel attribute.

Saída excel - configuraçãoExcel output - configuration

A tabela a seguir explica as propriedades de configuração de ligação que definiu no ficheiro função.json e no Excel atributo.The following table explains the binding configuration properties that you set in the function.json file and the Excel attribute.

propriedade fun.jsonfunction.json property Propriedade de atributoAttribute property DescriçãoDescription
nomename n/dn/a Necessário - o nome variável utilizado no código de função para o símbolo do auth.Required - the variable name used in function code for the auth token. Consulte A utilização de uma ligação de saída de tabela Excel a partir do código.See Using an Excel table output binding from code.
tipotype n/dn/a Obrigatório - deve ser exceldefinido para .Required - must be set to excel.
direçãodirection n/dn/a Obrigatório - deve ser outdefinido para .Required - must be set to out.
identidadeidentity IdentidadeIdentity Obrigatório - A identidade que será usada para realizar a ação.Required - The identity that will be used to perform the action. Pode ser um dos seguintes valores:Can be one of the following values:
  • userFromRequest- Apenas válido com gatilho HTTP.userFromRequest - Only valid with HTTP trigger. Usa a identidade do utilizador que chama.Uses the identity of the calling user.
  • userFromId- Utiliza a identidade de um utilizador previamente registado com o ID especificado.userFromId - Uses the identity of a previously logged-in user with the specified ID. Veja userId a propriedade.See the userId property.
  • userFromToken- Utiliza a identidade representada pelo símbolo especificado.userFromToken - Uses the identity represented by the specified token. Veja userToken a propriedade.See the userToken property.
  • clientCredentials- Utiliza a identidade da aplicação de funções.clientCredentials - Uses the identity of the function app.
UseridUserId userIduserId Necessário se e apenas userFromIdse a identidade for definida para .Needed if and only if identity is set to userFromId. Um ID principal do utilizador associado a um utilizador previamente iniciado.A user principal ID associated with a previously logged-in user.
userTokenuserToken UserTokenUserToken Necessário se e apenas userFromTokense a identidade for definida para .Needed if and only if identity is set to userFromToken. Um símbolo válido para a aplicação de funções.A token valid for the function app.
caminhopath CaminhoPath Necessário - o caminho no OneDrive para o livro Excel.Required - the path in OneDrive to the Excel workbook.
folha de cálculoNomeworksheetName Folha de cálculoNomeWorksheetName A folha de cálculo na qual a mesa é encontrada.The worksheet in which the table is found.
tableNametableName Nome de mesaTableName O nome da mesa.The name of the table. Se não especificado, o conteúdo da folha de cálculo será utilizado.If not specified, the contents of the worksheet will be used.
atualizaçãoTipoupdateType Tipo de atualizaçãoUpdateType Necessário - O tipo de alteração a fazer à mesa.Required - The type of change to make to the table. Pode ser um dos seguintes valores:Can be one of the following values:
  • update- Substitui o conteúdo da tabela no OneDrive.update - Replaces the contents of the table in OneDrive.
  • append- Adiciona a carga útil à extremidade da tabela no OneDrive criando novas linhas.append - Adds the payload to the end of the table in OneDrive by creating new rows.

Saída excel - utilizaçãoExcel output - usage

Esta ligação requer as seguintes permissões da AD Azure:This binding requires the following Azure AD permissions:

RecursoResource PermissãoPermission
Microsoft GraphMicrosoft Graph Ter acesso total aos ficheiros dos utilizadoresHave full access to user files

A ligação expõe os seguintes tipos às funções .NET:The binding exposes the following types to .NET functions:

  • corda[][]string[][]
  • Newtonsoft.Json.Linq.JObjectNewtonsoft.Json.Linq.JObject
  • Microsoft.Graph.WorkbookTableMicrosoft.Graph.WorkbookTable
  • Tipos de objetos personalizados (utilizando a ligação do modelo estrutural)Custom object types (using structural model binding)

Entrada de ficheirosFile input

A ligação de entrada oneDrive File lê o conteúdo de um ficheiro armazenado no OneDrive.The OneDrive File input binding reads the contents of a file stored in OneDrive.

Esta secção contém as seguintes subsecções:This section contains the following subsections:

Entrada de ficheiros - exemploFile input - example

Consulte o exemplo específico da linguagem:See the language-specific example:

Entrada de ficheiros - C# exemplo de scriptFile input - C# script example

O exemplo que se segue lê um ficheiro que é armazenado no OneDrive.The following example reads a file that is stored in OneDrive.

O ficheiro function.json define um gatilho HTTP com uma ligação de entrada de ficheiro 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
}

O código de script C# lê o ficheiro especificado na corda de consulta e regista o seu comprimento: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());
}

Entrada de ficheiros - Exemplo JavaScriptFile input - JavaScript example

O exemplo que se segue lê um ficheiro que é armazenado no OneDrive.The following example reads a file that is stored in OneDrive.

O ficheiro function.json define um gatilho HTTP com uma ligação de entrada de ficheiro 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
}

O seguinte código JavaScript lê o ficheiro especificado na corda de consulta e devolve o seu comprimento.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();
};

Entrada de ficheiros - atributosFile input - attributes

Nas bibliotecas da classe C#,use o atributo OneDrive.In C# class libraries, use the OneDrive attribute.

Entrada de ficheiros - configuraçãoFile input - configuration

A tabela a seguir explica as propriedades de configuração de ligação que definiu no ficheiro função.json e no OneDrive atributo.The following table explains the binding configuration properties that you set in the function.json file and the OneDrive attribute.

propriedade fun.jsonfunction.json property Propriedade de atributoAttribute property DescriçãoDescription
nomename n/dn/a Obrigatório - o nome variável utilizado no código de função para o ficheiro.Required - the variable name used in function code for the file. Consulte A utilização de uma inserçãode entrada de ficheiro OneDrive a partir do código .See Using a OneDrive file input binding from code.
tipotype n/dn/a Obrigatório - deve ser onedrivedefinido para .Required - must be set to onedrive.
direçãodirection n/dn/a Obrigatório - deve ser indefinido para .Required - must be set to in.
identidadeidentity IdentidadeIdentity Obrigatório - A identidade que será usada para realizar a ação.Required - The identity that will be used to perform the action. Pode ser um dos seguintes valores:Can be one of the following values:
  • userFromRequest- Apenas válido com gatilho HTTP.userFromRequest - Only valid with HTTP trigger. Usa a identidade do utilizador que chama.Uses the identity of the calling user.
  • userFromId- Utiliza a identidade de um utilizador previamente registado com o ID especificado.userFromId - Uses the identity of a previously logged-in user with the specified ID. Veja userId a propriedade.See the userId property.
  • userFromToken- Utiliza a identidade representada pelo símbolo especificado.userFromToken - Uses the identity represented by the specified token. Veja userToken a propriedade.See the userToken property.
  • clientCredentials- Utiliza a identidade da aplicação de funções.clientCredentials - Uses the identity of the function app.
userIduserId UseridUserId Necessário se e apenas userFromIdse a identidade for definida para .Needed if and only if identity is set to userFromId. Um ID principal do utilizador associado a um utilizador previamente iniciado.A user principal ID associated with a previously logged-in user.
userTokenuserToken UserTokenUserToken Necessário se e apenas userFromTokense a identidade for definida para .Needed if and only if identity is set to userFromToken. Um símbolo válido para a aplicação de funções.A token valid for the function app.
caminhopath CaminhoPath Necessário - o caminho no OneDrive para o ficheiro.Required - the path in OneDrive to the file.

Entrada de ficheiros - utilizaçãoFile input - usage

Esta ligação requer as seguintes permissões da AD Azure:This binding requires the following Azure AD permissions:

RecursoResource PermissãoPermission
Microsoft GraphMicrosoft Graph Ler ficheiros de utilizadoresRead user files

A ligação expõe os seguintes tipos às funções .NET:The binding exposes the following types to .NET functions:

  • byte[]byte[]
  • Transmitir em fluxoStream
  • stringstring
  • Microsoft.Graph.DriveItemMicrosoft.Graph.DriveItem

Saída de ficheirosFile output

A ligação de saída do ficheiro OneDrive modifica o conteúdo de um ficheiro armazenado no OneDrive.The OneDrive file output binding modifies the contents of a file stored in OneDrive.

Esta secção contém as seguintes subsecções:This section contains the following subsections:

Saída de ficheiros - exemploFile output - example

Consulte o exemplo específico da linguagem:See the language-specific example:

Saída de ficheiros - C# script exemploFile output - C# script example

O exemplo seguinte escreve para um ficheiro que é armazenado no OneDrive.The following example writes to a file that is stored in OneDrive.

O ficheiro function.json define um gatilho HTTP com uma ligação de saída 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
}

O código de script C# obtém texto da cadeia de consulta e escreve-o para um ficheiro de texto (FunctionsTest.txt, tal como definido no exemplo anterior) na raiz do OneDrive do chamador: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;
}

Saída de ficheiros - Exemplo JavaScriptFile output - JavaScript example

O exemplo seguinte escreve para um ficheiro que é armazenado no OneDrive.The following example writes to a file that is stored in OneDrive.

O ficheiro function.json define um gatilho HTTP com uma ligação de saída 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
}

O código JavaScript obtém texto da cadeia de consulta e escreve-o para um ficheiro de texto (FunctionsTest.txt, tal como definido no config acima) na raiz do OneDrive do chamador.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();
};

Saída de ficheiros - atributosFile output - attributes

Nas bibliotecas da classe C#,use o atributo OneDrive.In C# class libraries, use the OneDrive attribute.

Saída de ficheiros - configuraçãoFile output - configuration

A tabela a seguir explica as propriedades de configuração de ligação que definiu no ficheiro função.json e no OneDrive atributo.The following table explains the binding configuration properties that you set in the function.json file and the OneDrive attribute.

propriedade fun.jsonfunction.json property Propriedade de atributoAttribute property DescriçãoDescription
nomename n/dn/a Obrigatório - o nome variável utilizado no código de função para o ficheiro.Required - the variable name used in function code for file. Ver Utilizar uma ligação de saída de ficheiro OneDrive a partir do código.See Using a OneDrive file output binding from code.
tipotype n/dn/a Obrigatório - deve ser onedrivedefinido para .Required - must be set to onedrive.
direçãodirection n/dn/a Obrigatório - deve ser outdefinido para .Required - must be set to out.
identidadeidentity IdentidadeIdentity Obrigatório - A identidade que será usada para realizar a ação.Required - The identity that will be used to perform the action. Pode ser um dos seguintes valores:Can be one of the following values:
  • userFromRequest- Apenas válido com gatilho HTTP.userFromRequest - Only valid with HTTP trigger. Usa a identidade do utilizador que chama.Uses the identity of the calling user.
  • userFromId- Utiliza a identidade de um utilizador previamente registado com o ID especificado.userFromId - Uses the identity of a previously logged-in user with the specified ID. Veja userId a propriedade.See the userId property.
  • userFromToken- Utiliza a identidade representada pelo símbolo especificado.userFromToken - Uses the identity represented by the specified token. Veja userToken a propriedade.See the userToken property.
  • clientCredentials- Utiliza a identidade da aplicação de funções.clientCredentials - Uses the identity of the function app.
UseridUserId userIduserId Necessário se e apenas userFromIdse a identidade for definida para .Needed if and only if identity is set to userFromId. Um ID principal do utilizador associado a um utilizador previamente iniciado.A user principal ID associated with a previously logged-in user.
userTokenuserToken UserTokenUserToken Necessário se e apenas userFromTokense a identidade for definida para .Needed if and only if identity is set to userFromToken. Um símbolo válido para a aplicação de funções.A token valid for the function app.
caminhopath CaminhoPath Necessário - o caminho no OneDrive para o ficheiro.Required - the path in OneDrive to the file.

Saída de ficheiros - utilizaçãoFile output - usage

Esta ligação requer as seguintes permissões da AD Azure:This binding requires the following Azure AD permissions:

RecursoResource PermissãoPermission
Microsoft GraphMicrosoft Graph Ter acesso total aos ficheiros dos utilizadoresHave full access to user files

A ligação expõe os seguintes tipos às funções .NET:The binding exposes the following types to .NET functions:

  • byte[]byte[]
  • Transmitir em fluxoStream
  • stringstring
  • Microsoft.Graph.DriveItemMicrosoft.Graph.DriveItem

Saída de outlookOutlook output

A ligação de saída de mensagem Outlook envia uma mensagem de correio através do Outlook.The Outlook message output binding sends a mail message through Outlook.

Esta secção contém as seguintes subsecções:This section contains the following subsections:

Saída de outlook - exemploOutlook output - example

Consulte o exemplo específico da linguagem:See the language-specific example:

Saída de outlook - C# script exemploOutlook output - C# script example

O exemplo seguinte envia um e-mail através do Outlook.The following example sends an email through Outlook.

O ficheiro function.json define um gatilho HTTP com uma ligação de saída de mensagem 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
}

O código de script C# envia um correio do chamador para um destinatário especificado na cadeia de consulta: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;}
}

Saída do outlook - Exemplo JavaScriptOutlook output - JavaScript example

O exemplo seguinte envia um e-mail através do Outlook.The following example sends an email through Outlook.

O ficheiro function.json define um gatilho HTTP com uma ligação de saída de mensagem 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
}

O código JavaScript envia um correio do chamador para um destinatário especificado na cadeia de consulta: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();
};

Saída de outlook - atributosOutlook output - attributes

Nas bibliotecas da classe C#,use o atributo Outlook.In C# class libraries, use the Outlook attribute.

Saída do outlook - configuraçãoOutlook output - configuration

A tabela a seguir explica as propriedades de configuração de ligação que definiu no ficheiro função.json e no Outlook atributo.The following table explains the binding configuration properties that you set in the function.json file and the Outlook attribute.

propriedade fun.jsonfunction.json property Propriedade de atributoAttribute property DescriçãoDescription
nomename n/dn/a Obrigatório - o nome variável utilizado no código de função para a mensagem de correio.Required - the variable name used in function code for the mail message. Ver Utilizar uma saída de saída de mensagem Outlook a partir do código.See Using an Outlook message output binding from code.
tipotype n/dn/a Obrigatório - deve ser outlookdefinido para .Required - must be set to outlook.
direçãodirection n/dn/a Obrigatório - deve ser outdefinido para .Required - must be set to out.
identidadeidentity IdentidadeIdentity Obrigatório - A identidade que será usada para realizar a ação.Required - The identity that will be used to perform the action. Pode ser um dos seguintes valores:Can be one of the following values:
  • userFromRequest- Apenas válido com gatilho HTTP.userFromRequest - Only valid with HTTP trigger. Usa a identidade do utilizador que chama.Uses the identity of the calling user.
  • userFromId- Utiliza a identidade de um utilizador previamente registado com o ID especificado.userFromId - Uses the identity of a previously logged-in user with the specified ID. Veja userId a propriedade.See the userId property.
  • userFromToken- Utiliza a identidade representada pelo símbolo especificado.userFromToken - Uses the identity represented by the specified token. Veja userToken a propriedade.See the userToken property.
  • clientCredentials- Utiliza a identidade da aplicação de funções.clientCredentials - Uses the identity of the function app.
userIduserId UseridUserId Necessário se e apenas userFromIdse a identidade for definida para .Needed if and only if identity is set to userFromId. Um ID principal do utilizador associado a um utilizador previamente iniciado.A user principal ID associated with a previously logged-in user.
userTokenuserToken UserTokenUserToken Necessário se e apenas userFromTokense a identidade for definida para .Needed if and only if identity is set to userFromToken. Um símbolo válido para a aplicação de funções.A token valid for the function app.

Saída de perspetivas - utilizaçãoOutlook output - usage

Esta ligação requer as seguintes permissões da AD Azure:This binding requires the following Azure AD permissions:

RecursoResource PermissãoPermission
Microsoft GraphMicrosoft Graph Enviar correio como utilizadorSend mail as user

A ligação expõe os seguintes tipos às funções .NET:The binding exposes the following types to .NET functions:

  • Microsoft.Graph.MessageMicrosoft.Graph.Message
  • Newtonsoft.Json.Linq.JObjectNewtonsoft.Json.Linq.JObject
  • stringstring
  • Tipos de objetos personalizados (utilizando a ligação do modelo estrutural)Custom object types (using structural model binding)

WebhooksWebhooks

Os webhooks permitem-lhe reagir a eventos no Microsoft Graph.Webhooks allow you to react to events in the Microsoft Graph. Para suportar webhooks, são necessárias funções para criar, refrescar e reagir a subscrições de webhook.To support webhooks, functions are needed to create, refresh, and react to webhook subscriptions. Uma solução completa de webhook requer uma combinação das seguintes encadernações:A complete webhook solution requires a combination of the following bindings:

As próprias encadernações não requerem permissões ads azure, mas você precisa solicitar permissões relevantes para o tipo de recurso a que deseja reagir.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. Para obter uma lista das permissões necessárias para cada tipo de recurso, consulte as permissõesde subscrição .For a list of which permissions are needed for each resource type, see subscription permissions.

Para obter mais informações sobre webhooks, consulte Trabalhar com webhooks no Microsoft Graph.For more information about webhooks, see Working with webhooks in Microsoft Graph.

Gatilho webhookWebhook trigger

O gatilho webhook do Microsoft Graph permite que uma função reaja a um webhook que chega a partir do Microsoft Graph.The Microsoft Graph webhook trigger allows a function to react to an incoming webhook from the Microsoft Graph. Todas as instâncias deste acionador podem reagir a um tipo de recurso do Microsoft Graph.Each instance of this trigger can react to one Microsoft Graph resource type.

Esta secção contém as seguintes subsecções:This section contains the following subsections:

Webhook trigger - exemploWebhook trigger - example

Consulte o exemplo específico da linguagem:See the language-specific example:

Webhook trigger - C# script exemploWebhook trigger - C# script example

O exemplo que se segue trata dos webhooks para as mensagens de entrada do Outlook.The following example handles webhooks for incoming Outlook messages. Para utilizar um gatilho webhook cria uma subscrição, e pode atualizar a subscrição para evitar que expire.To use a webhook trigger you create a subscription, and you can refresh the subscription to prevent it from expiring.

O ficheiro função.json define um gatilho webhook:The function.json file defines a webhook trigger:

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

O código de script C# reage às mensagens de correio e regista o corpo das enviadas pelo destinatário e que contém "Funções Azure" no assunto: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}");
    }
}

Webhook trigger - Exemplo JavaScriptWebhook trigger - JavaScript example

O exemplo que se segue trata dos webhooks para as mensagens de entrada do Outlook.The following example handles webhooks for incoming Outlook messages. Para utilizar um gatilho webhook cria uma subscrição, e pode atualizar a subscrição para evitar que expire.To use a webhook trigger you create a subscription, and you can refresh the subscription to prevent it from expiring.

O ficheiro função.json define um gatilho webhook:The function.json file defines a webhook trigger:

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

O código JavaScript reage às mensagens de correio e regista o corpo das enviadas pelo destinatário e contém "Funções Azure" no assunto: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();
};

Webhook trigger - atributosWebhook trigger - attributes

Nas bibliotecas da classe C#,utilize o atributo GraphWebhookTrigger.In C# class libraries, use the GraphWebhookTrigger attribute.

Gatilho webhook - configuraçãoWebhook trigger - configuration

A tabela a seguir explica as propriedades de configuração de ligação que definiu no ficheiro função.json e no GraphWebhookTrigger atributo.The following table explains the binding configuration properties that you set in the function.json file and the GraphWebhookTrigger attribute.

propriedade fun.jsonfunction.json property Propriedade de atributoAttribute property DescriçãoDescription
nomename n/dn/a Obrigatório - o nome variável utilizado no código de função para a mensagem de correio.Required - the variable name used in function code for the mail message. Ver Utilizar uma saída de saída de mensagem Outlook a partir do código.See Using an Outlook message output binding from code.
tipotype n/dn/a Obrigatório - deve ser graphWebhookdefinido para .Required - must be set to graphWebhook.
direçãodirection n/dn/a Obrigatório - deve ser triggerdefinido para .Required - must be set to trigger.
recursosTyperesourceType Tipo de RecursosResourceType Necessário - o recurso gráfico para o qual esta função deve responder aos ganchos web.Required - the graph resource for which this function should respond to webhooks. Pode ser um dos seguintes valores:Can be one of the following values:
  • #Microsoft.Graph.Message- alterações feitas nas mensagens Do Outlook.#Microsoft.Graph.Message - changes made to Outlook messages.
  • #Microsoft.Graph.DriveItem- alterações feitas em itens de raiz OneDrive.#Microsoft.Graph.DriveItem - changes made to OneDrive root items.
  • #Microsoft.Graph.Contact- alterações nos contactos pessoais no Outlook.#Microsoft.Graph.Contact - changes made to personal contacts in Outlook.
  • #Microsoft.Graph.Event- alterações feitas em itens de calendário do Outlook.#Microsoft.Graph.Event - changes made to Outlook calendar items.

Nota

Uma aplicação de função só pode resourceType ter uma função que está registada com um determinado valor.A function app can only have one function that is registered against a given resourceType value.

Webhook trigger - utilizaçãoWebhook trigger - usage

A ligação expõe os seguintes tipos às funções .NET:The binding exposes the following types to .NET functions:

  • Tipos de SDK do Microsoft Graph Microsoft.Graph.Message relevantes para o tipo de recurso, tais como ou Microsoft.Graph.DriveItem.Microsoft Graph SDK types relevant to the resource type, such as Microsoft.Graph.Message or Microsoft.Graph.DriveItem.
  • Tipos de objetos personalizados (utilizando a ligação do modelo estrutural)Custom object types (using structural model binding)

Entrada webhookWebhook input

A ligação de entrada web hook do Microsoft Graph permite-lhe recuperar a lista de subscrições geridas por esta aplicação de função.The Microsoft Graph webhook input binding allows you to retrieve the list of subscriptions managed by this function app. A encadernação lê-se no armazenamento de aplicações de funções, pelo que não reflete outras subscrições criadas a partir de fora da app.The binding reads from function app storage, so it does not reflect other subscriptions created from outside the app.

Esta secção contém as seguintes subsecções:This section contains the following subsections:

Entrada webhook - exemploWebhook input - example

Consulte o exemplo específico da linguagem:See the language-specific example:

Entrada webhook - C# exemplo de scriptWebhook input - C# script example

O exemplo seguinte recebe todas as subscrições para o utilizador de chamadas e elimina-as.The following example gets all subscriptions for the calling user and deletes them.

O ficheiro function.json define um gatilho HTTP com uma ligação de entrada de subscrição e uma ligação de saída de subscrição que utiliza a ação de exclusão: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
}

O código de script C# recebe as subscrições e elimina-as: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);
    }
}

Entrada Webhook - Exemplo JavaScriptWebhook input - JavaScript example

O exemplo seguinte recebe todas as subscrições para o utilizador de chamadas e elimina-as.The following example gets all subscriptions for the calling user and deletes them.

O ficheiro function.json define um gatilho HTTP com uma ligação de entrada de subscrição e uma ligação de saída de subscrição que utiliza a ação de exclusão: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
}

O código JavaScript recebe as subscrições e elimina-as: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();
};

Entrada webhook - atributosWebhook input - attributes

Nas bibliotecas da classe C#,utilize o atributo graphWebhookSubscription.In C# class libraries, use the GraphWebhookSubscription attribute.

Entrada Webhook - configuraçãoWebhook input - configuration

A tabela a seguir explica as propriedades de configuração de ligação que definiu no ficheiro função.json e no GraphWebhookSubscription atributo.The following table explains the binding configuration properties that you set in the function.json file and the GraphWebhookSubscription attribute.

propriedade fun.jsonfunction.json property Propriedade de atributoAttribute property DescriçãoDescription
nomename n/dn/a Obrigatório - o nome variável utilizado no código de função para a mensagem de correio.Required - the variable name used in function code for the mail message. Ver Utilizar uma saída de saída de mensagem Outlook a partir do código.See Using an Outlook message output binding from code.
tipotype n/dn/a Obrigatório - deve ser graphWebhookSubscriptiondefinido para .Required - must be set to graphWebhookSubscription.
direçãodirection n/dn/a Obrigatório - deve ser indefinido para .Required - must be set to in.
filtrofilter FiltroFilter Se definido userFromRequestpara , então a ligação só recuperará subscrições pertencentes ao utilizador de chamada (válido apenas com gatilho HTTP).If set to userFromRequest, then the binding will only retrieve subscriptions owned by the calling user (valid only with HTTP trigger).

Entrada Webhook - utilizaçãoWebhook input - usage

A ligação expõe os seguintes tipos às funções .NET:The binding exposes the following types to .NET functions:

  • cadeia[]string[]
  • Matrizes personalizadas do tipo de objetoCustom object type arrays
  • Newtonsoft.Json.Linq.JObject[]Newtonsoft.Json.Linq.JObject[]
  • Microsoft.Graph.Subscrição[]Microsoft.Graph.Subscription[]

Saída webhookWebhook output

A ligação de saída de subscrição webhook permite-lhe criar, eliminar e atualizar subscrições de webhook no Microsoft Graph.The webhook subscription output binding allows you to create, delete, and refresh webhook subscriptions in the Microsoft Graph.

Esta secção contém as seguintes subsecções:This section contains the following subsections:

Saída webhook - exemploWebhook output - example

Consulte o exemplo específico da linguagem:See the language-specific example:

Saída webhook - C# script exemploWebhook output - C# script example

O exemplo seguinte cria uma subscrição.The following example creates a subscription. Pode renovar a subscrição para evitar que expire.You can refresh the subscription to prevent it from expiring.

O ficheiro function.json define um gatilho HTTP com uma ligação de saída de subscrição utilizando a ação de criação: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
}

O código de script C# regista um webhook que notificará esta aplicação de função quando o utilizador de chamadas receber uma mensagem 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);
}

Saída webhook - Exemplo JavaScriptWebhook output - JavaScript example

O exemplo seguinte cria uma subscrição.The following example creates a subscription. Pode renovar a subscrição para evitar que expire.You can refresh the subscription to prevent it from expiring.

O ficheiro function.json define um gatilho HTTP com uma ligação de saída de subscrição utilizando a ação de criação: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
}

O código JavaScript regista um webhook que notificará esta aplicação de função quando o utilizador de chamadas receber uma mensagem 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();
};

Saída webhook - atributosWebhook output - attributes

Nas bibliotecas da classe C#,utilize o atributo graphWebhookSubscription.In C# class libraries, use the GraphWebhookSubscription attribute.

Saída webhook - configuraçãoWebhook output - configuration

A tabela a seguir explica as propriedades de configuração de ligação que definiu no ficheiro função.json e no GraphWebhookSubscription atributo.The following table explains the binding configuration properties that you set in the function.json file and the GraphWebhookSubscription attribute.

propriedade fun.jsonfunction.json property Propriedade de atributoAttribute property DescriçãoDescription
nomename n/dn/a Obrigatório - o nome variável utilizado no código de função para a mensagem de correio.Required - the variable name used in function code for the mail message. Ver Utilizar uma saída de saída de mensagem Outlook a partir do código.See Using an Outlook message output binding from code.
tipotype n/dn/a Obrigatório - deve ser graphWebhookSubscriptiondefinido para .Required - must be set to graphWebhookSubscription.
direçãodirection n/dn/a Obrigatório - deve ser outdefinido para .Required - must be set to out.
identidadeidentity IdentidadeIdentity Obrigatório - A identidade que será usada para realizar a ação.Required - The identity that will be used to perform the action. Pode ser um dos seguintes valores:Can be one of the following values:
  • userFromRequest- Apenas válido com gatilho HTTP.userFromRequest - Only valid with HTTP trigger. Usa a identidade do utilizador que chama.Uses the identity of the calling user.
  • userFromId- Utiliza a identidade de um utilizador previamente registado com o ID especificado.userFromId - Uses the identity of a previously logged-in user with the specified ID. Veja userId a propriedade.See the userId property.
  • userFromToken- Utiliza a identidade representada pelo símbolo especificado.userFromToken - Uses the identity represented by the specified token. Veja userToken a propriedade.See the userToken property.
  • clientCredentials- Utiliza a identidade da aplicação de funções.clientCredentials - Uses the identity of the function app.
userIduserId UseridUserId Necessário se e apenas userFromIdse a identidade for definida para .Needed if and only if identity is set to userFromId. Um ID principal do utilizador associado a um utilizador previamente iniciado.A user principal ID associated with a previously logged-in user.
userTokenuserToken UserTokenUserToken Necessário se e apenas userFromTokense a identidade for definida para .Needed if and only if identity is set to userFromToken. Um símbolo válido para a aplicação de funções.A token valid for the function app.
açãoaction AçãoAction Obrigatório - especifica a ação que a encadernação deve realizar.Required - specifies the action the binding should perform. Pode ser um dos seguintes valores:Can be one of the following values:
  • create- Regista uma nova subscrição.create - Registers a new subscription.
  • delete- Elimina uma subscrição especificada.delete - Deletes a specified subscription.
  • refresh- Atualiza uma subscrição especificada para evitar que expire.refresh - Refreshes a specified subscription to keep it from expiring.
subscriçãoRecursosubscriptionResource Recurso de SubscriçãoSubscriptionResource Necessário se e action apenas se createa ação estiver definida para .Needed if and only if the action is set to create. Especifica o recurso Microsoft Graph que será monitorizado para alterações.Specifies the Microsoft Graph resource that will be monitored for changes. Ver Trabalhar com webhooks no Microsoft Graph.See Working with webhooks in Microsoft Graph.
changeTypechangeType Tipo de mudançaChangeType Necessário se e action apenas se createa ação estiver definida para .Needed if and only if the action is set to create. Indica o tipo de alteração no recurso subscrito que irá levantar uma notificação.Indicates the type of change in the subscribed resource that will raise a notification. Os valores suportados updated deletedsão: created, .The supported values are: created, updated, deleted. Vários valores podem ser combinados usando uma lista separada da vírvia.Multiple values can be combined using a comma-separated list.

Saída webhook - utilizaçãoWebhook output - usage

A ligação expõe os seguintes tipos às funções .NET:The binding exposes the following types to .NET functions:

  • stringstring
  • Microsoft.Graph.SubscriçãoMicrosoft.Graph.Subscription

Atualização de subscrição webhookWebhook subscription refresh

Existem duas abordagens para subscrições refrescantes:There are two approaches to refreshing subscriptions:

  • Utilize a identidade da aplicação para lidar com todas as subscrições.Use the application identity to deal with all subscriptions. Isto requer o consentimento de um administrador do Azure Ative Directory. Isto pode ser usado por todas as línguas suportadas pelas Funções Azure.This will require consent from an Azure Active Directory admin. This can be used by all languages supported by Azure Functions.
  • Utilize a identidade associada a cada subscrição ligando manualmente cada ID do utilizador.Use the identity associated with each subscription by manually binding each user ID. Isto requer algum código personalizado para executar a ligação.This will require some custom code to perform the binding. Isto só pode ser utilizado por funções .NET.This can only be used by .NET functions.

Esta secção contém um exemplo para cada uma destas abordagens:This section contains an example for each of these approaches:

Atualização de subscrição webhook - exemplo de identidade de aplicativoWebhook Subscription refresh - app identity example

Consulte o exemplo específico da linguagem:See the language-specific example:

Atualização de identidade de aplicativo - C# script exemploApp identity refresh - C# script example

O exemplo seguinte utiliza a identidade da aplicação para renovar uma subscrição.The following example uses the application identity to refresh a subscription.

A função.json define um gatilho temporizador com uma ligação de entrada de subscrição e uma ligação de saída de subscrição: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
}

O código de script C# atualiza as subscrições: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);
    }
}

Atualização de identidade de aplicativo - C# script exemploApp identity refresh - C# script example

O exemplo seguinte utiliza a identidade da aplicação para renovar uma subscrição.The following example uses the application identity to refresh a subscription.

A função.json define um gatilho temporizador com uma ligação de entrada de subscrição e uma ligação de saída de subscrição: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
}

O código JavaScript atualiza as subscrições: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();
};

Atualização de subscrição webhook - exemplo de identidade do utilizadorWebhook Subscription refresh - user identity example

O exemplo que se segue utiliza a identidade do utilizador para renovar uma subscrição.The following example uses the user identity to refresh a subscription.

O ficheiro função.json define um gatilho temporizador e adia a ligação de entrada de subscrição ao código de função: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
}

O código de script C# atualiza as subscrições e cria a ligação de saída em código, utilizando a identidade de cada utilizador: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;}
}

Passos seguintesNext steps