Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Use o gatilho Connector para executar uma função quando ocorre um evento num serviço como Office 365, SharePoint, Dataverse, SMTP, Salesforce e muitos mais. O gatilho recebe eventos de um conector gerido no Azure Connector Namespace. Para explorar os conectores geridos disponíveis, consulte a referência de conectores.
Para informações sobre a instalação da extensão, tipos de binding suportados, autenticação de callback e configuração em toda a aplicação, consulte a visão geral da extensão Connector.
Importante
O gatilho do Conector está atualmente em pré-visualização pública. Funcionalidades, nomes de configuração e conectores suportados podem mudar antes da disponibilidade geral (GA). A utilização desta funcionalidade está sujeita aos Termos Suplementares de Utilização para Prévias do Microsoft Azure.
Note
O disparador Connector não é atualmente suportado para esta linguagem.
Examples
Os exemplos Office 365 Outlook e SharePoint Online usam cargas úteis fortemente tipadas do SDK Azure Connectors. Para operações de conector que ainda não têm cargas úteis fortemente tipadas, vincule para string receber a carga útil JSON bruta. Estes exemplos registam intencionalmente apenas informações básicas de carga útil para manter o foco em como definir funções acionadas pelo Connector. Substitua o registo pela lógica de processamento da sua aplicação.
Office 365 Outlook
O exemplo seguinte executa-se quando um novo email chega à caixa de correio Office 365 Outlook configurada:
using Microsoft.Azure.Functions.Worker;
using Microsoft.Azure.Functions.Worker.Extensions.Connector;
using Microsoft.Extensions.Logging;
using Azure.Connectors.Sdk.Office365.Models;
namespace Office365App;
public class O365Functions
{
private readonly ILogger<O365Functions> _logger;
public O365Functions(ILogger<O365Functions> logger)
{
_logger = logger;
}
[Function("OnNewEmail")]
public void OnNewEmail(
[ConnectorTrigger] Office365OnNewEmailTriggerPayload payload)
{
var messageCount = payload.Body?.Value?.Count ?? 0;
_logger.LogInformation(
"Received {MessageCount} new email message(s).",
messageCount);
}
}
O Office365OnNewEmailTriggerPayload tipo é definido no Azure.Connectors.Sdk.Office365.Models namespace.
Para o exemplo completo de código, incluindo infraestrutura e registo de triggers, veja Office 365 Outlook triggers para .NET.
SharePoint Online
O exemplo seguinte executa-se quando um ficheiro é criado na biblioteca de documentos SharePoint Online configurada:
using Microsoft.Azure.Functions.Worker;
using Microsoft.Azure.Functions.Worker.Extensions.Connector;
using Microsoft.Extensions.Logging;
using Azure.Connectors.Sdk.SharePointOnline.Models;
namespace SharePointApp;
public class SharePointFunctions
{
private readonly ILogger<SharePointFunctions> _logger;
public SharePointFunctions(ILogger<SharePointFunctions> logger)
{
_logger = logger;
}
[Function("OnNewFile")]
public void OnNewFile(
[ConnectorTrigger] SharePointOnlineOnNewFileItemsTriggerPayload payload)
{
var fileCount = payload.Body?.Value?.Count ?? 0;
_logger.LogInformation(
"Received {FileCount} new SharePoint file(s).",
fileCount);
}
}
O SharePointOnlineOnNewFileItemsTriggerPayload tipo é definido no Azure.Connectors.Sdk.SharePointOnline.Models namespace.
Para o exemplo completo de código, incluindo infraestrutura e registo de gatilhos, consulte SharePoint Online gatilhos para .NET.
Conector sem uma carga útil fortemente tipada
Alguns eventos de conector ainda não têm uma carga útil .NET fortemente tipada. O exemplo seguinte executa-se quando uma nova mensagem é adicionada a um chat ou canal do Microsoft Teams e vincula o payload astring:
using Microsoft.Azure.Functions.Worker;
using Microsoft.Azure.Functions.Worker.Extensions.Connector;
using Microsoft.Extensions.Logging;
namespace TeamsApp;
public class TeamsFunctions
{
private readonly ILogger<TeamsFunctions> _logger;
public TeamsFunctions(ILogger<TeamsFunctions> logger)
{
_logger = logger;
}
[Function("OnNewTeamsMessage")]
public void OnNewTeamsMessage([ConnectorTrigger] string payload)
{
_logger.LogInformation("Received a new Teams message: {Payload}", payload);
}
}
Para identificar operações de conectores que ainda não têm payloads fortemente tipados, veja Operations to Funções do Azure signature mapeping.
Attributes
Numa aplicação worker isolada .NET, aplique [ConnectorTrigger] ao parâmetro de função que recebe a carga útil do evento:
[Function("OnConnectorEvent")]
public void Run([ConnectorTrigger] string payload)
{
// Process the raw JSON payload.
}
O ConnectorTrigger atributo não tem propriedades configuráveis. Configure o conector, operação, parâmetros de operação, função de destino e autenticação de callback na configuração do trigger no Azure Connector Namespace.
Examples
A extensão do conector Node.js fornece contextos tipados para as operações Office 365 Outlook, SharePoint Online e Microsoft Teams apresentadas nesta secção. Estes exemplos registam intencionalmente apenas informações básicas de carga útil para manter o foco em como definir funções acionadas pelo Connector. Substitua o registo pela lógica de processamento da sua aplicação.
Office 365 Outlook
O exemplo seguinte executa-se quando um novo email chega à caixa de correio Office 365 Outlook configurada:
import { InvocationContext } from '@azure/functions';
import {
connectors,
EmailTriggerContext,
} from '@azure/functions-extensions-connectors';
connectors.office365.onNewEmail('OnNewEmail', {
handler: async (
context: EmailTriggerContext,
invocationContext: InvocationContext,
) => {
invocationContext.log(
`Received ${context.emails.length} new email message(s).`,
);
},
});
O EmailTriggerContext tipo expõe as mensagens como um array tipado emails .
Para o exemplo completo de código, incluindo infraestrutura e registo de gatilhos, veja Office 365 Outlook gatilhos para o TypeScript.
SharePoint Online
O exemplo seguinte executa-se quando um ficheiro é criado na biblioteca de documentos SharePoint Online configurada:
import { InvocationContext } from '@azure/functions';
import {
connectors,
FileTriggerContext,
} from '@azure/functions-extensions-connectors';
connectors.sharepoint.onNewFile('OnSharepointNewFile', {
handler: async (
context: FileTriggerContext,
invocationContext: InvocationContext,
) => {
invocationContext.log(
`Received ${context.files.length} new SharePoint file(s).`,
);
},
});
O FileTriggerContext tipo expõe os metadados do ficheiro como um array tipado files .
Para o exemplo completo de código, incluindo infraestrutura e registo de gatilhos, consulte SharePoint Online triggers para TypeScript.
Microsoft Teams
O exemplo seguinte executa-se quando uma nova mensagem é adicionada a um canal do Microsoft Teams:
import { InvocationContext } from '@azure/functions';
import {
ChannelMessageTriggerContext,
connectors,
} from '@azure/functions-extensions-connectors';
connectors.teams.onNewChannelMessage('OnNewChannelMessage', {
handler: async (
context: ChannelMessageTriggerContext,
invocationContext: InvocationContext,
) => {
invocationContext.log(
`Received ${context.messages.length} new Teams message(s).`,
);
},
});
O ChannelMessageTriggerContext tipo expõe as mensagens como um array tipado messages .
Para o exemplo completo de código, incluindo infraestrutura e registo de gatilhos, veja Microsoft Teams triggers para TypeScript.
Registration
Use a função genérica connectorTrigger para uma operação que não tenha um registo específico do conector:
import { InvocationContext } from '@azure/functions';
import {
connectorTrigger,
ConnectorTriggerContext,
} from '@azure/functions-extensions-connectors';
connectorTrigger('OnConnectorEvent', {
handler: async (
context: ConnectorTriggerContext,
invocationContext: InvocationContext,
) => {
invocationContext.log(JSON.stringify(context.rawPayload));
},
});
O registo genérico devolve o tipo de item por defeito para unknown. Valide a carga útil antes de aceder a propriedades específicas da operação. Configure o conector, operação, parâmetros de operação, função de destino e autenticação de callback na configuração do trigger no Azure Connector Namespace.
Examples
A extensão do conector Node.js fornece contextos específicos do conector para as operações Office 365 Outlook, SharePoint Online e Microsoft Teams apresentadas nesta secção. Estes exemplos registam intencionalmente apenas informações básicas de carga útil para manter o foco em como definir funções acionadas pelo Connector. Substitua o registo pela lógica de processamento da sua aplicação.
Office 365 Outlook
O exemplo seguinte executa-se quando um novo email chega à caixa de correio Office 365 Outlook configurada:
const {
connectors,
} = require('@azure/functions-extensions-connectors');
connectors.office365.onNewEmail('OnNewEmail', {
handler: async (context, invocationContext) => {
invocationContext.log(
`Received ${context.emails.length} new email message(s).`,
);
},
});
O contexto do handler expõe as mensagens através do emails array.
SharePoint Online
O exemplo seguinte executa-se quando um ficheiro é criado na biblioteca de documentos SharePoint Online configurada:
const {
connectors,
} = require('@azure/functions-extensions-connectors');
connectors.sharepoint.onNewFile('OnSharepointNewFile', {
handler: async (context, invocationContext) => {
invocationContext.log(
`Received ${context.files.length} new SharePoint file(s).`,
);
},
});
O contexto do handler expõe os metadados do ficheiro através do files array.
Microsoft Teams
O exemplo seguinte executa-se quando uma nova mensagem é adicionada a um canal do Microsoft Teams:
const {
connectors,
} = require('@azure/functions-extensions-connectors');
connectors.teams.onNewChannelMessage('OnNewChannelMessage', {
handler: async (context, invocationContext) => {
invocationContext.log(
`Received ${context.messages.length} new Teams message(s).`,
);
},
});
O contexto do handler expõe as mensagens através do messages array.
Registration
Use a função genérica connectorTrigger para uma operação que não tenha um registo específico do conector:
const {
connectorTrigger,
} = require('@azure/functions-extensions-connectors');
connectorTrigger('OnConnectorEvent', {
handler: async (context, invocationContext) => {
invocationContext.log(JSON.stringify(context.rawPayload));
},
});
O registo genérico normaliza o envelope de callback, mas não valida a forma específica da carga útil da operação. Valide a carga útil antes de aceder a propriedades específicas da operação. Configure o conector, operação, parâmetros de operação, função de destino e autenticação de callback na configuração do trigger no Azure Connector Namespace.
Examples
O exemplo Office 365 Outlook utiliza uma carga útil fortemente tipada registada pela extensão do conector Python. Os exemplos do SharePoint Online e do Microsoft Teams vinculam-se e str analisam o JSON bruto porque essas operações não têm atualmente conversores Python tipados registados. Estes exemplos registam intencionalmente apenas informações básicas de carga útil para manter o foco em como definir funções acionadas pelo Connector. Substitua o registo pela lógica de processamento da sua aplicação.
Office 365 Outlook
O exemplo seguinte executa-se quando um novo email chega à caixa de correio Office 365 Outlook configurada:
import logging
from typing import List
import azure.functions as func
import azurefunctions.extensions.connectors.office365 as office365
app = func.FunctionApp()
@app.function_name(name="OnNewEmail")
@app.connector_trigger(arg_name="emails")
def on_new_email(
emails: List[office365.ClientReceiveMessage],
) -> None:
logging.info(
"Received %s new email message(s).",
len(emails),
)
O ClientReceiveMessage tipo é fornecido por azurefunctions-extensions-connectors e representa as Office 365 Outlook mensagens do lote.
Para o exemplo completo de código, incluindo infraestrutura e registo de gatilhos, veja Office 365 Outlook gatilhos para Python.
SharePoint Online
O exemplo seguinte executa-se quando um ficheiro é criado na biblioteca de documentos SharePoint Online configurada:
import json
import logging
import azure.functions as func
app = func.FunctionApp()
@app.function_name(name="OnSharepointNewFile")
@app.connector_trigger(arg_name="payload")
def on_sharepoint_new_file(payload: str) -> None:
data = json.loads(payload)
files = data.get("body", {}).get("value", [])
logging.info(
"Received %s new SharePoint file(s).",
len(files),
)
Para o exemplo completo de código, incluindo infraestrutura e registo de gatilhos, consulte SharePoint Online triggers para Python.
Conector sem uma carga útil fortemente tipada
O exemplo seguinte executa-se quando uma nova mensagem é adicionada a um canal do Microsoft Teams e vincula o payload astr:
import json
import logging
import azure.functions as func
app = func.FunctionApp()
@app.function_name(name="OnNewChannelMessage")
@app.connector_trigger(arg_name="payload")
def on_new_channel_message(payload: str) -> None:
data = json.loads(payload)
messages = data.get("body", {}).get("value", [])
logging.info(
"Received %s new Teams message(s).",
len(messages),
)
Para identificar operações de conector que ainda não têm payloads Python fortemente tipados, veja Operations to Funções do Azure signature mapeping.
Para o exemplo completo de código, incluindo infraestrutura e registo de triggers, veja Microsoft Teams triggers para Python.
Decorators
Aplique connector_trigger à função que recebe a carga útil do evento:
import azure.functions as func
app = func.FunctionApp()
@app.function_name(name="OnConnectorEvent")
@app.connector_trigger(arg_name="payload")
def on_connector_event(payload: str) -> None:
# Process the raw JSON payload.
pass
O arg_name valor identifica o parâmetro da função que recebe a carga útil. Configure o conector, operação, parâmetros de operação, função de destino e autenticação de callback na configuração do trigger no Azure Connector Namespace.
Configurar o gatilho
Uma configuração de trigger no Azure Connector Namespace associa um evento de serviço externo ao callback da função de destino.
Valores de configuração de gatilho
| Valor de configuração | Description |
|---|---|
| Ligação | A ligação gerida autorizada, como Office 365 Outlook ou SharePoint Online. |
| Nome da operação | A operação de disparo do conector, como OnNewEmailV3 ou GetOnNewFileItems. |
| Parameters | Valores exigidos pela operação, como uma pasta do Outlook ou uma biblioteca de sites e documentos do SharePoint. |
| URL de retorno de chamada | O endpoint webhook da extensão Connector para a função de destino. Veja Autenticar callbacks. |
| Nome da função | O nome da função registada no código da sua aplicação. |
| Authentication | A configuração de autenticação usada para chamar a aplicação de funções. |
O functionName valor da string de consulta na URL de chamada de retorno da configuração do trigger deve corresponder ao nome da função registada. Os nomes válidos de funções contêm de 1 a 128 letras, números, sublinhados ou hífens.
O nome da operação é definido pelo conector gerido. Escolhes o nome da função no teu código, e a configuração do trigger mapeia a operação para essa função. Os exemplos neste artigo utilizam estes mapeamentos:
| Evento de conector | Nome da operação | Nome da função |
|---|---|---|
| Novo Office 365 Outlook email | OnNewEmailV3 |
OnNewEmail |
| Novo ficheiro SharePoint Online | GetOnNewFileItems |
OnNewFile |
| Nova mensagem de chat ou canal do Microsoft Teams | WebhookNewMessageTrigger |
OnNewTeamsMessage |
| Evento de conector | Nome da operação | Nome da função |
|---|---|---|
| Novo Office 365 Outlook email | OnNewEmailV3 |
OnNewEmail |
| Novo ficheiro SharePoint Online | GetOnNewFileItems |
OnSharepointNewFile |
| Nova mensagem do canal do Microsoft Teams | WebhookNewMessageTrigger |
OnNewChannelMessage |
Criar uma configuração de gatilho
Crie uma configuração de trigger usando o CLI do Azure ou o portal Connector Namespace.
Antes de criar a configuração do trigger, crie uma ligação de conector gerida autorizada no namespace do seu conector e implemente a aplicação de funções que contém a função de destino.
O exemplo seguinte do Bash usa CLI do Azure e jq para criar um gatilho Office 365 Outlook novo email. Substitua os valores provisórios para os seus recursos e ligação:
resourceGroup="<RESOURCE_GROUP>"
namespaceName="<CONNECTOR_NAMESPACE>"
functionAppName="<FUNCTION_APP>"
functionName="OnNewEmail"
triggerName="<TRIGGER_NAME>"
connectionName="<CONNECTION_NAME>"
connectorName="office365"
operationName="OnNewEmailV3"
subscriptionId=$(az account show --query id --output tsv)
connectorKey=$(az functionapp keys list \
--resource-group "$resourceGroup" \
--name "$functionAppName" \
--query "systemKeys.connector_extension" \
--output tsv)
callbackUrl="https://${functionAppName}.azurewebsites.net/runtime/webhooks/connector?functionName=${functionName}"
notificationFile=$(mktemp)
trap 'rm -f "$notificationFile"' EXIT
jq -n \
--arg callbackUrl "$callbackUrl" \
--arg connectorKey "$connectorKey" \
'{
callbackUrl: $callbackUrl,
authentication: {
type: "QueryString",
name: "code",
value: $connectorKey
}
}' > "$notificationFile"
az connector-namespace trigger create \
--resource-group "$resourceGroup" \
--namespace "$namespaceName" \
--name "$triggerName" \
--connection-details "{connectionName:${connectionName},connectorName:${connectorName}}" \
--operation-name "$operationName" \
--parameters "[{name:folderPath,value:'Inbox'}]" \
--notification-details "@$notificationFile" \
--description "${connectorName} ${operationName} -> ${functionName}" \
--metadata "{destinationType:functionApp,functionAppName:${functionAppName},functionAppResourceGroup:${resourceGroup},functionAppSubscriptionId:${subscriptionId},functionName:${functionName},recurrenceFrequency:Minute,recurrenceInterval:'5'}"
rm -f "$notificationFile"
trap - EXIT
O --parameters valor é específico para a operação do conector. Neste exemplo, folderPath seleciona a pasta Outlook para monitorizar. O URL de retorno de chamada não contém a chave do sistema. O notificationDetails.authentication objeto adiciona a chave como um segredo de query string quando o Espaço de Nomes do Conector invoca a função.
Utilização
O gatilho liga o corpo do pedido JSON a qualquer um dos tipos de ligação .NET suportados pela extensão.
As operações do conector podem devolver um evento ou um conjunto de eventos. Utilize o modelo de carga útil específica da operação porque a sua forma representa o contrato de resposta para essa operação do conector.
Utilização
O registo genérico recebe um ConnectorTriggerContext<T>. A sua payload propriedade contém o envelope de callback normalizado, items contém os itens do evento e rawPayload preserva o corpo original do pedido. Registos específicos de conectores fornecem arrays tipados nomeados, como emails, files, ou messages.
Para uma operação sem registo específico do conector, o tipo de item é unknownpor defeito . Valide a carga útil antes de aceder a propriedades específicas da operação.
Utilização
O gatilho pode vincular o corpo do pedido a str, dict, ou bytes. Quando azurefunctions-extensions-connectors regista um conversor para a anotação do SDK da função, o trabalhador desserializa o corpo do pedido no tipo de operação suportado.
As operações do conector podem devolver um evento ou um conjunto de eventos. Utilize o tipo ou anotação de coleção identificada para a operação no mapeamento de assinatura da operação.
A extensão aceita HTTP POST e PUT pedidos com o tipo de application/json conteúdo. Um corpo de pedido não vazio deve conter JSON válido. A extensão rejeita corpos de pedido superiores a 10 MB.
Metadata
O disparador Connector atualmente não expõe cabeçalhos de callback ou outros metadados de pedidos como dados de ligação. A extensão define um contrato de dados de ligação vazio, pelo que a função recebe apenas o corpo do pedido JSON num tipo de ligação suportado pela linguagem selecionada.