Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Les fonctionnalités SMS d’Azure Communication Services offrent aux développeurs des options permettant de consommer des événements reçus par SMS. Les événements sont publiés sur Azure Event Grid, qui fournit des intégrations prêtes à l’emploi pour traiter celles qui utilisent des webhooks, Azure Functions, Power Automate / Connecteurs d’application logique, etc.
Une fois reçus, les sms peuvent être traités pour y répondre ou les connecter à une base de données pour un accès ultérieur.
Cet article explique comment traiter les événements reçus par SMS via Azure Functions à l’aide de déclencheurs Event Grid et de connecteurs sans code pour Power Automate / Logic Apps.
L’événement SMSReceived généré lorsqu’un SMS est envoyé à un numéro de téléphone Azure Communication Services est mis en forme de la façon suivante :
[{
"id": "d29ebbea-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": "d29ebbea-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"
}]
Remarque
Le format retourné MessageId par cette API est considéré comme un détail d’implémentation interne et peut être modifié sans préavis. Les clients doivent traiter les ID de message comme des identificateurs opaques et ne doivent pas analyser, inférer la structure ou générer une logique basée sur leur format ou leur contenu.
Pour commencer à générer des événements, configurez Azure Event Grid pour utiliser votre ressource Azure Communication Services.
Remarque
L’utilisation d’Azure Event Grid entraîne davantage de coûts. Pour plus d’informations, consultez la tarification d’Azure Event Grid.
Conditions préalables
- Un compte Azure avec un abonnement actif. Créez un compte gratuitement.
- Une ressource des Services de Communication active et une chaîne de connexion active. Créez une ressource Communication Services.
- Numéro de téléphone SMS activé. Obtenez un numéro de téléphone.
- Activez le fournisseur de ressources Event Grid sur votre abonnement. Consultez les instructions.
Event Grid fournit une prise en charge prête à l’emploi pour Azure Functions, ce qui facilite la configuration d’un écouteur d’événements sans avoir à gérer la complexité de l’analyse des en-têtes ou le débogage de webhooks. À l’aide du déclencheur prêt à l’emploi, nous pouvons configurer une fonction Azure qui s’exécute chaque fois qu’un événement est détecté qui correspond au déclencheur. Dans ce document, nous nous concentrons sur les déclencheurs reçus par SMS.
Configuration de notre environnement local
À l’aide de Visual Studio Code, installez l’extension Azure Functions.
Avec l’extension, créez une fonction Azure en suivant ces instructions.
Configurez la fonction avec les instructions suivantes :
- Langage : TypeScript
- Modèle : déclencheur Azure Event Grid
- Nom de la fonction : défini par l’utilisateur
Une fois créée, vous voyez une fonction créée dans votre répertoire comme suit :
import { AzureFunction, Context } from "@azure/functions" const eventGridTrigger: AzureFunction = async function (context: Context, eventGridEvent: any): Promise<void> { context.log(eventGridEvent); }; export default eventGridTrigger;
Configurer Azure Function pour recevoir un événement SMS
Configurez Azure Function pour analyser les valeurs de l’événement comme ceux qui l’ont envoyé, à quel nombre et à quel message il s’agissait.
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;
À ce stade, vous avez correctement géré la réception d’un SMS via des événements. Maintenant, les possibilités d’utilisation de cet événement vont de la simple journalisation à la réponse à celui-ci. Dans la section suivante, nous nous concentrons sur la réponse à ce SMS que nous avons reçu. Si vous ne souhaitez pas répondre au SMS, passez à la section suivante pour exécuter la fonction localement.
Réponse au SMS
- Pour répondre aux SMS entrants, nous utilisons les fonctionnalités SMS d’Azure Communication Service pour l’envoi de SMS. Nous commençons par invoquer le
SmsClientet l’initialiser avec leconnection stringpour notre ressource. Vous pouvez coller la chaîne de connexion directement dans le code ou la placer dans le fichier local.settings.json de votre répertoire Azure Function sous les valeurs.
{
"IsEncrypted": false,
"Values": {
"FUNCTIONS_WORKER_RUNTIME": "node",
"ACS_CONNECTION_STRING": "<<CONNECTION STRING>>"
}
}
Ensuite, nous composons un SMS à envoyer en fonction des valeurs de
toetfromde l’événement que nous avons obtenu.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;
De là, les possibilités sont infinies. Vous pouvez répondre à un message avec une réponse préécrite, ajouter un bot ou stocker des réponses en adaptant le code à la dernière étape.
Exécution locale
Pour exécuter la fonction localement, appuyez F5 sur Visual Studio Code. Nous utilisons ngrok pour raccorder notre fonction Azure localement en cours d’exécution avec Azure Event Grid.
Une fois la fonction en cours d’exécution, configurez
ngrok. Vous devez télécharger ngrok pour votre environnement.ngrok http 7071Copiez le
ngroklien fourni à l’endroit où votre fonction est en cours d’exécution.Configurez des événements SMS via Event Grid dans votre ressource Azure Communication Services. Nous procédons ainsi à l’aide d’Azure CLI. Vous avez besoin de l’ID de ressource de votre ressource Azure Communication Services trouvée dans le portail Azure. L’ID de ressource ressemble à ceci : /subscriptions/
<<AZURE SUBSCRIPTION ID>>/resourceGroups/<<RESOURCE GROUP NAME>>/providers/Microsoft.Communication/CommunicationServices/<<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.SMSReceivedMaintenant que tout est branché, testez le flux en envoyant un SMS au numéro de téléphone sur votre ressource Azure Communication Services. Vous devez voir les journaux de console sur votre terminal où la fonction est en cours d’exécution. Si vous avez ajouté le code pour répondre au SMS, vous devriez recevoir ce SMS.
Déployer sur Azure
Pour déployer la fonction Azure sur Azure, vous devez suivre ces instructions. Une fois déployé, nous configurons Event Grid pour la ressource Azure Communication Services. Avec l’URL de la fonction Azure déployée (URL trouvée dans le portail Azure sous la fonction), nous exécutons la commande suivante :
az eventgrid event-subscription update --name "<<EVENT_SUBSCRIPTION_NAME>>" --endpoint-type azurefunction --endpoint "<<AZ FUNCTION URL>> " --source-resource-id "<<RESOURCE_ID>>"
Étant donné que nous mettons à jour l’abonnement aux événements que nous avons créé pour les tests locaux, veillez à utiliser le même nom d’abonnement d’événement que celui que vous avez utilisé précédemment.
Vous pouvez tester en envoyant un SMS au numéro de téléphone que vous avez configuré dans votre ressource Azure Communication Services.
Logic Apps et Power Automate fournissent des connecteurs prêtes à l’emploi pour aider à gérer les événements générés par Azure Communication Services via Event Grid. Logic Apps et Power Automate fournissent le même ensemble de connecteurs. C’est à vous de décider de ce que vous préférez, lisez les différences entre les services pour informer votre décision.
Gestion des événements avec le connecteur Event Grid
Commencez par créer un flux dans votre environnement préféré. Sélectionnez le
When a resource event occursdéclencheur pour commencer.
À présent, vous pouvez configurer le connecteur. Vous devez fournir un abonnement que vous souhaitez utiliser. (Doit être le même abonnement que celui dans lequel se trouve votre ressource Azure Communication Services). Spécifiez le type de ressource. Dans ce cas, choisissez
Microsoft.Communication.CommunicationServices. Ensuite, vous devez fournir un nom de ressource pour la ressource Azure Communication Services à laquelle vous souhaitez vous connecter. Enfin, nous devons sélectionner les types d’événements que nous voulons recevoir, dans ce cas :Microsoft.Communication.SMSReceived.
Le connecteur configure automatiquement l’abonnement aux événements en votre nom et configure les événements qu’il souhaite recevoir.
Pour nous faciliter la vie plus tard, ajoutez un
Parse JSON connectorpour traiter la réponse provenant du connecteur Event Grid. Configurez le connecteur pour qu’il prenne l’objetBodyà partir du connecteur Event Grid et qu’il corresponde à notre schéma attendu pour l’événement :Exemple de schéma (ouvert pour voir)
{ "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" }
À ce stade, vous avez correctement géré l’événement de SMS. Vous avez plusieurs options de ce qu’il faut faire, allant de la journalisation de l’événement à la réponse au SMS. Dans le contexte de ce document, nous répondons au sms reçu.
Réponse au SMS
Commencez par ajouter le connecteur SMS à notre flux et en le configurant avec les informations de notre ressource Azure Communication Services. Il permet au connecteur d’accéder à la ressource et d’envoyer le SMS en notre nom. Vous avez besoin du
connection stringpour votre ressource.
Ensuite, nous configurons le connecteur avec les informations de l’expéditeur et du destinataire. Nous utilisons les informations de l’événement que nous avons reçu pour les remplir. Inversez les numéros
toetfrompour renvoyer un SMS à l’expéditeur d’origine. Enfin, ajoutez un message.
À présent, vous pouvez enregistrer le flux et le tester en envoyant un SMS au numéro de téléphone associé à votre ressource Azure Communication Services. Vous devriez recevoir un SMS.
De là, les possibilités sont infinies. Vous pouvez répondre à un message avec une réponse préécrite, ajouter un bot, stocker la réponse ou ajouter une automatisation du flux de travail.
Nettoyer les ressources
Si vous voulez nettoyer et supprimer un abonnement Communication Services, vous pouvez supprimer la ressource ou le groupe de ressources. La suppression du groupe de ressources efface également les autres ressources qui y sont associées. En savoir plus sur le nettoyage des ressources.
Vérification de numéro gratuit
Si vous disposez d’un nouveau numéro gratuit et que vous souhaitez envoyer un volume élevé de sms ou envoyer des sms à des numéros de téléphone canadiens, consultez le FAQ > Envoyer une vérification gratuite par SMS pour savoir comment vérifier votre numéro gratuit.