Scenario: Attivare app per la logica con Funzioni di Azure e il bus di servizio di AzureScenario: Trigger a logic app with Azure Functions and Azure Service Bus

È possibile utilizzare Funzioni di Azure per creare un trigger per un'app per la logica quando è necessario distribuire un listener o un'attività con esecuzione prolungata.You can use Azure Functions to create a trigger for a logic app when you need to deploy a long-running listener or task. Ad esempio, è possibile creare una funzione che sia in ascolto su una coda e attivi immediatamente un'app per la logica come trigger di push.For example, you can create a function that listens in on a queue and then immediately fire a logic app as a push trigger.

Compilare l'app per la logicaBuild the logic app

In questo esempio si ha una funzione in esecuzione per ogni app per la logica da attivare.In this example, you have a function running for each logic app that needs to be triggered. Per prima cosa, creare un'app per la logica con un trigger di richiesta HTTP.First, create a logic app that has an HTTP request trigger. La funzione chiamerà tale endpoint ogniqualvolta venga ricevuto un messaggio in coda.The function calls that endpoint whenever a queue message is received.

  1. Creare un'app per la logica.Create a logic app.
  2. Selezionare il trigger Manual - When an HTTP request is received (Manuale - Quando si riceve una richiesta HTTP).Select the Manual - When an HTTP Request is Received trigger. Facoltativamente, è possibile specificare uno schema JSON da utilizzare con il messaggio della coda utilizzando uno strumento come jsonschema.net.Optionally, you can specify a JSON schema to use with the queue message by using a tool like jsonschema.net. Incollare lo schema nel trigger.Paste the schema in the trigger. Grazie agli schemi, la finestra di progettazione potrà riconoscere la forma dei dati e trasferire più facilmente le proprietà nel flusso di lavoro.Schemas help the designer understand the shape of the data and flow properties more easily through the workflow.
  3. Aggiungere eventuali ulteriori passaggi che si desidera vengano eseguiti dopo la ricezione di un messaggio in coda.Add any additional steps that you want to occur after a queue message is received. Ad esempio, inviare un messaggio di posta elettronica tramite Office 365.For example, send an email via Office 365.
  4. Salvare l'app per la logica per generare l'URL di callback per il trigger di questa app per la logica.Save the logic app to generate the callback URL for the trigger to this logic app. L'URL è visualizzato nella scheda del trigger.The URL appears on the trigger card.

L'URL callback è visualizzato nella scheda del trigger

Compilare la funzioneBuild the function

A questo punto è necessario creare una funzione che fungerà da trigger e sarà in ascolto sulla coda.Next, you must create a function that acts as the trigger and listens to the queue.

  1. Nel portale di Funzioni di Azure selezionare Nuova funzione e quindi il modello ServiceBusQueueTrigger - C#.In the Azure Functions portal, select New Function, and then select the ServiceBusQueueTrigger - C# template.

    portale di Funzioni di Azure

  2. Configurare la connessione alla coda del bus di servizio, che userà il listener OnMessageReceive() dell'SDK del bus di servizio di Azure.Configure the connection to the Service Bus queue, which uses the Azure Service Bus SDK OnMessageReceive() listener.
  3. Scrivere una semplice funzione per chiamare l'endpoint dell'app per la logica usando il messaggio nella coda come trigger.Write a basic function to call the logic app endpoint (created earlier) by using the queue message as a trigger. Quello che segue è l'esempio completo di una funzione.Here's a full example of a function. Nell'esempio viene usato il tipo di contenuto di messaggio application/json, ma è possibile modificare questo elemento se necessario.The example uses an application/json message content type, but you can change this type as necessary.

    using System;
    using System.Threading.Tasks;
    using System.Net.Http;
    using System.Text;
    
    private static string logicAppUri = @"https://prod-05.westus.logic.azure.com:443/.........";
    
    public static void Run(string myQueueItem, TraceWriter log)
    {
    
        log.Info($"C# ServiceBus queue trigger function processed message: {myQueueItem}");
        using (var client = new HttpClient())
        {
            var response = client.PostAsync(logicAppUri, new StringContent(myQueueItem, Encoding.UTF8, "application/json")).Result;
        }
    }
    

Per effettuare una prova, aggiungere un messaggio in coda tramite uno strumento quale Service Bus Explorer.To test, add a queue message via a tool like Service Bus Explorer. L'app per la logica verrà attivata subito dopo che la funzione riceverà il messaggio.See the logic app fire immediately after the function receives the message.