Avvio rapido: Ricevere e rispondere a SMS
Servizi di comunicazione di Azure funzionalità SMS offrono agli sviluppatori opzioni per l'utilizzo di eventi ricevuti tramite SMS. Gli eventi vengono pubblicati in Griglia di eventi di Azure che fornisce integrazioni predefinite per elaborare tali elementi usando webhook, Funzioni di Azure, connettori di Power Automate/App per la logica e altro ancora.
Una volta ricevuti, i messaggi SMS possono essere elaborati per rispondere o per registrarli semplicemente in un database per l'accesso futuro.
In questa guida introduttiva verrà illustrato l'elaborazione degli eventi ricevuti tramite Funzioni di Azure tramite trigger griglia di eventi e connettori senza codice per Power Automate/App per la logica.
L'evento SMSReceived
generato quando viene inviato un SMS a un numero di telefono Servizi di comunicazione di Azure viene formattato nel modo seguente:
[{
"id": "Incoming_20200918002745d29ebbea-3341-4466-9690-0a03af35228e",
"topic": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/acse2e/providers/microsoft.communication/communicationservices/{communication-services-resource-name}",
"subject": "/phonenumber/15555555555",
"data": {
"MessageId": "Incoming_20200918002745d29ebbea-3341-4466-9690-0a03af35228e",
"From": "15555555555",
"To": "15555555555",
"Message": "Great to connect with Azure Communication Services events",
"ReceivedTimestamp": "2020-09-18T00:27:45.32Z"
},
"eventType": "Microsoft.Communication.SMSReceived",
"dataVersion": "1.0",
"metadataVersion": "1",
"eventTime": "2020-09-18T00:27:47Z"
}]
Per iniziare a generare gli eventi, è necessario configurare Griglia di eventi di Azure per la risorsa Servizi di comunicazione di Azure.
Nota
L'uso di Griglia di eventi di Azure comporta costi aggiuntivi. Per altre informazioni, vedere prezzi Griglia di eventi di Azure.
Prerequisiti
- Un account Azure con una sottoscrizione attiva. Creare un account gratuitamente.
- Una stringa di connessione e una risorsa attiva di Servizi di comunicazione. Creare una risorsa di Servizi di comunicazione.
- Numero di telefono abilitato per SMS. Ottenere un numero di telefono.
- Abilitare la risorsa Griglia di eventi specificare nella sottoscrizione. Vedere le istruzioni.
Griglia di eventi offre il supporto out-of-box per Funzioni di Azure, semplificando la configurazione di un listener di eventi senza la necessità di gestire la complessità delle intestazioni di analisi o del debug di webhook. Usando il trigger out-of-box, è possibile configurare una funzione di Azure che viene eseguita ogni volta che viene rilevato un evento che corrisponde al trigger. In questo documento ci concentriamo sui trigger ricevuti da SMS.
Configurazione dell'ambiente locale
Usando Visual Studio Code, installare l'estensione Funzioni di Azure.
Con l'estensione creare una funzione di Azure seguendo queste istruzioni.
Configurare la funzione con le istruzioni seguenti:
- Linguaggio: TypeScript
- Modello: trigger Griglia di eventi di Azure
- Nome funzione: definito dall'utente
Dopo aver creato, viene visualizzata una funzione creata nella directory come illustrato di seguito:
import { AzureFunction, Context } from "@azure/functions" const eventGridTrigger: AzureFunction = async function (context: Context, eventGridEvent: any): Promise<void> { context.log(eventGridEvent); }; export default eventGridTrigger;
Configurare la funzione di Azure per ricevere l'evento SMS
Configurare la funzione di Azure per analizzare i valori dall'evento come chi l'ha inviato, al numero e al numero del messaggio.
import { AzureFunction, Context } from "@azure/functions" const eventGridTrigger: AzureFunction = async function (context: Context, eventGridEvent: any): Promise<void> { context.log(eventGridEvent); const to = eventGridEvent['data']['to']; const from = eventGridEvent['data']['from']; const message = eventGridEvent['data']['message']; }; export default eventGridTrigger;
A questo punto, è stato gestito correttamente la ricezione di un SMS tramite eventi. Ora le possibilità di cosa fare con tale evento vanno dalla sola registrazione a rispondere a esso. Nella sezione successiva ci concentriamo sulla risposta a tale SMS ricevuto. Se non si vuole rispondere all'SMS, passare alla sezione successiva sull'esecuzione della funzione in locale.
Risposta all'SMS
- Per rispondere all'SMS in ingresso, usare le funzionalità SMS del servizio di comunicazione di Azure per l'invio di SMS. Si inizia richiamando l'oggetto
SmsClient
e inizializzandolo con laconnection string
risorsa. È possibile incollare la stringa di connessione direttamente nel codice o inserirla all'interno del file local.settings.json nella directory della funzione di Azure in valori.
{
"IsEncrypted": false,
"Values": {
"FUNCTIONS_WORKER_RUNTIME": "node",
"ACS_CONNECTION_STRING": "<<CONNECTION STRING>>"
}
}
Comporre quindi un SMS da inviare in base ai
to
valori efrom
dell'evento ottenuto.import { AzureFunction, Context } from "@azure/functions" import { SmsClient } from "@azure/communication-sms"; const connectionString = process.env.ACS_CONNECTION_STRING; //Replace with your connection string const eventGridTrigger: AzureFunction = async function (context: Context, eventGridEvent: any): Promise<void> { context.log(eventGridEvent); const to = eventGridEvent['data']['to']; const from = eventGridEvent['data']['from']; const message = eventGridEvent['data']['message']; const smsClient = new SmsClient(connectionString); const sendResults = await smsClient.send({ from: to, to: [from], message: "Message received successfully. Will respond shortly." }); }; export default eventGridTrigger;
Da qui, le possibilità sono infinite. Dalla risposta a un messaggio con una risposta pre-canede, per aggiungere un bot o semplicemente archiviare le risposte, è possibile adattare il codice nell'ultimo passaggio a tale scopo.
Esecuzione in locale
Per eseguire la funzione in locale, premere F5
in Visual Studio Code. Viene usato ngrok per collegare la funzione di Azure in esecuzione locale con Griglia di eventi di Azure.
Dopo aver eseguito la funzione, viene configurato ngrok. È necessario scaricare ngrok per l'ambiente.
ngrok http 7071
Copiare il collegamento ngrok specificato in cui è in esecuzione la funzione.
Configurare gli eventi SMS tramite Griglia di eventi all'interno della risorsa Servizi di comunicazione di Azure. Questa operazione viene eseguita usando l'interfaccia della riga di comando di Azure. È necessario l'ID risorsa per la risorsa Servizi di comunicazione di Azure trovata nel portale di Azure. L'ID risorsa sarà simile al seguente: /subscriptions//resourceGroups/
<<AZURE SUBSCRIPTION ID>>
/providers/Microsoft.Communication/CommunicationServices<<RESOURCE GROUP NAME>>
/<<RESOURCE NAME>>
)az eventgrid event-subscription create --name "<<EVENT_SUBSCRIPTION_NAME>>" --endpoint-type webhook --endpoint "<<NGROK URL>> " --source-resource-id "<<RESOURCE_ID>>" --included-event-types Microsoft.Communication.SMSReceived
Ora che tutto è collegato, testare il flusso inviando un SMS al numero di telefono presente nella risorsa Servizi di comunicazione di Azure. Verranno visualizzati i log della console nel terminale in cui è in esecuzione la funzione. Se è stato aggiunto il codice per rispondere all'SMS, verrà visualizzato il messaggio di testo restituito all'utente.
Distribuisci in Azure
Per distribuire la funzione di Azure in Azure, è necessario seguire queste istruzioni. Dopo la distribuzione, viene configurata Griglia di eventi per la risorsa Servizi di comunicazione di Azure. Con l'URL per la funzione di Azure distribuita (URL trovato nella portale di Azure nella funzione), viene eseguito il comando seguente:
az eventgrid event-subscription update --name "<<EVENT_SUBSCRIPTION_NAME>>" --endpoint-type azurefunction --endpoint "<<AZ FUNCTION URL>> " --source-resource-id "<<RESOURCE_ID>>"
Poiché si aggiorna la sottoscrizione dell'evento creata per i test locali, assicurarsi di usare lo stesso nome di sottoscrizione dell'evento usato in precedenza.
È possibile testare inviando un SMS al numero di telefono acquistato tramite Servizi di comunicazione di Azure risorsa.
App per la logica e Power Automate forniscono connettori predefiniti per gestire gli eventi generati da Servizi di comunicazione di Azure tramite Griglia di eventi. App per la logica e Power Automate forniscono lo stesso set di connettori. È consigliabile decidere cosa si preferisce, leggere le differenze tra i servizi per informare la decisione.
Gestione degli eventi con il connettore Griglia di eventi
Iniziare creando un nuovo flusso nell'ambiente preferito. Selezionare il
When a resource event occurs
trigger per iniziare.Ora, consente di configurarlo. Il connettore richiede di fornire una sottoscrizione che si vuole usare. Deve essere la stessa sottoscrizione in cui è presente la risorsa Servizi di comunicazione di Azure. Specificare il tipo di risorsa. In questo caso scegliere
Microsoft.Communication.CommunicationServices
. È quindi necessario specificare un nome di risorsa per la risorsa Servizi di comunicazione di Azure a cui si vuole connettersi. Infine, è necessario selezionare i tipi di evento che si desidera ricevere, in questo caso:Microsoft.Communication.SMSReceived
.Il connettore configura automaticamente la sottoscrizione dell'evento per conto dell'utente e configura gli eventi che vuole ricevere.
Per semplificare la vita in un secondo momento, aggiungere una
Parse JSON connector
risposta al processo proveniente dal connettore griglia di eventi. Configurare il connettore per accettare l'oggettoBody
dal connettore Griglia di eventi e aggiungerlo allo schema previsto per l'evento:Schema di esempio (aperto per vedere)
{ "properties": { "data": { "properties": { "From": { "type": "string" }, "Message": { "type": "string" }, "MessageId": { "type": "string" }, "ReceivedTimestamp": { "type": "string" }, "To": { "type": "string" } }, "type": "object" }, "dataVersion": { "type": "string" }, "eventTime": { "type": "string" }, "eventType": { "type": "string" }, "id": { "type": "string" }, "metadataVersion": { "type": "string" }, "subject": { "type": "string" }, "topic": { "type": "string" } }, "type": "object" }
A questo punto, è stato gestito correttamente l'evento SMS. Si hanno quindi più opzioni di cosa fare con esso che vanno dalla registrazione dell'evento a rispondere all'SMS. Nel contesto di questo documento verrà illustrato come rispondere. Continuare a leggere per apprendere i passaggi da rispondere all'SMS.
Risposta all'SMS
Iniziare aggiungendo il connettore SMS nel flusso e configurandolo con le informazioni per la risorsa Servizi di comunicazione di Azure. Consente al connettore di accedere alla risorsa e inviare l'SMS per conto dell'utente. È necessario per
connection string
la risorsa.Viene quindi configurato il connettore con le informazioni per il mittente e il destinatario. Vengono usate le informazioni dell'evento ricevuto per popolarle. Fip i
to
numeri efrom
per inviare un SMS al mittente originale. Infine, aggiungere un messaggio.
È ora possibile salvare il flusso e testarlo inviando un SMS al numero di telefono associato alla risorsa Servizi di comunicazione di Azure. Dovrebbe essere visualizzato un messaggio di testo.
Da qui, le possibilità sono infinite. Dalla risposta a un messaggio con una risposta pre-canede, all'aggiunta di un bot o semplicemente all'archiviazione di risposte, è possibile aggiungere più logica al flusso.
Pulire le risorse
Per pulire e rimuovere una sottoscrizione di Servizi di comunicazione, è possibile eliminare la risorsa o il gruppo di risorse. Eliminando il gruppo di risorse vengono eliminate anche tutte le altre risorse associate. Vedere altre informazioni sulla pulizia delle risorse.
Verifica gratuita
Se si ha un nuovo numero verde e si vuole inviare un volume elevato di messaggi SMS o inviare messaggi SMS ai numeri di telefono canadesi, visitare qui per informazioni su come verificare il numero verde.
Passaggi successivi
In questa guida introduttiva si è appreso come inviare messaggi SMS usando Servizi di comunicazione.