Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Azure Communication Services SMS-Funktionen bieten Entwicklern Optionen zum Nutzen von empfangenen SMS-Ereignissen. Die Ereignisse werden in Azure Event Grid veröffentlicht, das vorgefertigte Integrationen bietet, um diese mithilfe von Webhooks, Azure Functions, Power Automate / Logic App-Connectoren und mehr zu verarbeiten.
Sobald sie empfangen wurden, können SMS-Nachrichten verarbeitet werden, um auf sie zu antworten oder sie für zukünftigen Zugriff bei einer Datenbank zu protokollieren.
In diesem Artikel wird beschrieben, wie SMS-Empfangsereignisse über Azure Functions mithilfe von Event Grid-Triggern und No-Code-Konnektoren für Power Automate / Logic Apps verarbeitet werden.
Das SMSReceived Ereignis, das generiert wird, wenn eine SMS an eine Azure Communication Services-Telefonnummer gesendet wird, wird wie folgt formatiert:
[{
"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"
}]
Hinweis
Das von dieser API zurückgegebene Format MessageId wird als internes Implementierungsdetail betrachtet und kann ohne Vorankündigung geändert werden. Clients müssen Nachrichten-IDs als undurchsichtige Bezeichner behandeln und dürfen keine Logik basierend auf ihrem Format oder Inhalt analysieren, strukturieren oder erstellen.
Um mit dem Generieren von Ereignissen zu beginnen, konfigurieren Sie Azure Event Grid für die Verwendung Ihrer Azure Communication Services-Ressource.
Hinweis
Die Verwendung von Azure Event Grid verursacht mehr Kosten. Weitere Informationen finden Sie unter Azure Event Grid-Preise.
Voraussetzungen
- Ein Azure-Konto mit einem aktiven Abonnement. Sie können kostenlos ein Konto erstellen.
- Eine aktive Communication Services-Ressource und eine Verbindungszeichenfolge. Erstellen Sie eine Communication Services-Ressource.
- Eine für SMS-Nachrichten geeignete Telefonnummer. Erhalten Sie eine Telefonnummer.
- Aktivieren Sie die Event Grid-Ressource, die für Ihr Abonnement bereitgestellt ist. Weitere Informationen finden Sie in den Anweisungen.
Event Grid bietet Standardunterstützung für Azure Functions, die eine einfache Einrichtung eines Ereignis-Listeners ermöglicht, ohne dass es notwendig ist, sich mit der Komplexität des Analysierens von Headern oder dem Debuggen von Webhooks zu befassen. Mithilfe des Out-of-Box-Triggers können wir eine Azure-Funktion einrichten, die jedes Mal ausgeführt wird, wenn ein Ereignis erkannt wird, das dem Trigger entspricht. In diesem Dokument konzentrieren wir uns auf empfangene SMS-Trigger.
Einrichten unserer lokalen Umgebung
Installieren Sie die Azure Functions-Erweiterung mit Visual Studio Code.
Erstellen Sie mit der Erweiterung eine Azure-Funktion, die diesen Anweisungen folgt.
Konfigurieren Sie die Funktion mit den folgenden Anweisungen:
- Sprache: TypeScript
- Vorlage: Azure Event Grid Trigger
- Funktionsname: Benutzerdefiniert
Nach der Erstellung sehen Sie eine Funktion, die in Ihrem Verzeichnis wie folgt erstellt wurde:
import { AzureFunction, Context } from "@azure/functions" const eventGridTrigger: AzureFunction = async function (context: Context, eventGridEvent: any): Promise<void> { context.log(eventGridEvent); }; export default eventGridTrigger;
Konfigurieren der Azure-Funktion zum Empfangen eines SMS-Ereignisses
Konfigurieren Sie Azure Function so, dass Werte aus dem Ereignis analysiert werden, z. B. wer es gesendet hat, an welche Zahl und welche Nachricht es sich handelt.
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;
An diesem Punkt haben Sie den Empfang einer SMS über Ereignisse erfolgreich behandelt. Jetzt reichen die Möglichkeiten, was mit diesem Ereignis zu tun ist, von der Protokollierung bis hin zur Reaktion darauf. Im nächsten Abschnitt konzentrieren wir uns auf die Reaktion auf die empfangene SMS. Wenn Sie nicht auf die SMS antworten möchten, fahren Sie mit dem nächsten Abschnitt fort, um die Funktion lokal auszuführen.
Antworten auf die SMS
- Um auf die eingehende SMS zu reagieren, verwenden wir die Azure Communication Service SMS-Funktionen zum Senden von SMS. Wir beginnen mit dem Aufrufen des
SmsClientund der Initialisierung mit demconnection stringfür unsere Ressource. Sie können die Verbindungszeichenfolge entweder direkt in den Code einfügen oder sie in Ihrer local.settings.json Datei in Ihrem Azure Function-Verzeichnis unter Werten platzieren.
{
"IsEncrypted": false,
"Values": {
"FUNCTIONS_WORKER_RUNTIME": "node",
"ACS_CONNECTION_STRING": "<<CONNECTION STRING>>"
}
}
Anschließend verfassen wir eine SMS, die basierend auf den Werten von
toundfromdes von uns erhaltenen Ereignisses gesendet werden soll.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;
Von hier aus sind die Möglichkeiten endlos. Sie können mit einer vordefinierten Antwort auf eine Nachricht antworten, einen Bot hinzufügen oder Antworten speichern, indem Sie den Code im letzten Schritt anpassen.
Lokal ausführen
Um die Funktion lokal auszuführen, drücken Sie F5 in Visual Studio Code. Wir verwenden ngrok , um unsere lokal ausgeführte Azure-Funktion mit Azure Event Grid zu verbinden.
Sobald die Funktion ausgeführt wird, konfigurieren Sie
ngrok. Sie müssen ngrok für Ihre Umgebung herunterladen.ngrok http 7071Kopieren Sie den bereitgestellten
ngrokLink dort, wo Ihre Funktion läuft.Konfigurieren Sie SMS-Ereignisse über das Ereignisraster in Ihrer Azure Communication Services-Ressource. Dazu verwenden wir die Azure CLI. Sie benötigen die Ressourcen-ID für Ihre Azure Communication Services-Ressource im Azure-Portal. Die Ressourcen-ID sieht folgendermaßen aus: /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.SMSReceivedNachdem nun alles eingebunden ist, testen Sie den Fluss, indem Sie eine SMS an die Telefonnummer in Ihrer Azure Communication Services-Ressource senden. Sie sollten die Konsolenprotokolle auf Ihrem Terminal sehen, in denen die Funktion ausgeführt wird. Wenn Sie den Code hinzugefügt haben, um auf die SMS zu antworten, sollten Sie sehen, dass die SMS zurück an Sie gesendet wurde.
Bereitstellen in Azure
Um die Azure-Funktion in Azure bereitzustellen, müssen Sie diese Anweisungen befolgen. Nach der Bereitstellung konfigurieren wir das Ereignisraster für die Azure Communication Services-Ressource. Mit der URL für die bereitgestellte Azure-Funktion (URL im Azure-Portal unter der Funktion) führen wir den folgenden Befehl aus:
az eventgrid event-subscription update --name "<<EVENT_SUBSCRIPTION_NAME>>" --endpoint-type azurefunction --endpoint "<<AZ FUNCTION URL>> " --source-resource-id "<<RESOURCE_ID>>"
Da wir das Ereignisabonnement aktualisieren, das wir für lokale Tests erstellt haben, stellen Sie sicher, dass Sie denselben Namen des Ereignisabonnements verwenden, den Sie zuvor verwendet haben.
Sie können testen, indem Sie eine SMS an die Telefonnummer senden, die Sie in Ihrer Azure Communication Services-Ressource eingerichtet haben.
Logic Apps und Power Automate bieten vorgefertigte Konnektoren, um bei der Verwaltung von durch Azure Communication Services über das Event Grid bereitgestellten Ereignissen zu helfen. Sowohl Logik-Apps als auch Power Automate bieten den gleichen Satz von Connectors. Es liegt an Ihnen, zu entscheiden, was Sie bevorzugen, lesen Sie die Unterschiede zwischen den Diensten , um Ihre Entscheidung zu informieren.
Verarbeiten von Ereignissen mit dem Event Grid-Connector
Erstellen Sie zunächst einen neuen Fluss in Ihrer bevorzugten Umgebung. Wählen Sie den
When a resource event occursAuslöser aus, um zu beginnen.
Jetzt können Sie den Connector konfigurieren. Sie müssen ein Abonnement bereitstellen, das Sie verwenden möchten. (Sollte dasselbe Abonnement sein, in dem Ihre Azure Communication Services-Ressource vorhanden ist). Geben Sie den Ressourcentyp an. Wählen Sie in diesem Fall die Option
Microsoft.Communication.CommunicationServices. Anschließend müssen Sie einen Ressourcennamen für die Azure Communication Services-Ressource angeben, mit der eine Verbindung hergestellt werden soll. Schließlich müssen wir die Ereignistypen auswählen, die wir empfangen möchten, in diesem Fall:Microsoft.Communication.SMSReceived.
Der Connector richtet das Ereignisabonnement automatisch in Ihrem Auftrag ein und konfiguriert die Ereignisse, die er empfangen möchte.
Um unser Leben später zu vereinfachen, fügen Sie ein
Parse JSON connectorhinzu, um Antworten vom Event Grid-Connector zu verarbeiten. Konfigurieren Sie den Connector so, dass er dasBodyObjekt aus dem Event Grid Connector verwendet und es mit dem erwarteten Schema für das Ereignis abgleicht.Beispielschema (zu sehen)
{ "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" }
An dieser Stelle haben Sie das SMS-Ereignis erfolgreich verarbeitet. Sie haben mehrere Möglichkeiten, was Sie damit machen können, von der Protokollierung des Ereignisses bis zur Reaktion auf die SMS. Im Kontext dieses Dokuments antworten wir auf die empfangene SMS-Nachricht.
Antworten auf die SMS
Fügen Sie zunächst den SMS-Connector zu unserem Fluss hinzu, und konfigurieren Sie ihn mit den Informationen für unsere Azure Communication Services-Ressource. Er ermöglicht es dem Connector, auf die Ressource zuzugreifen und die SMS in unserem Auftrag zu senden. Sie benötigen das
connection stringfür Ihre Ressource.
Als Nächstes konfigurieren wir den Connector mit den Informationen für den Absender und empfänger. Wir verwenden die Informationen aus dem Ereignis, das wir erhalten haben, um sie aufzufüllen. Drehen Sie die Nummern für
toundfromum, um eine SMS zurück an den ursprünglichen Absender zu senden. Fügen Sie schließlich eine Nachricht hinzu.
Jetzt können Sie den Fluss speichern und testen, indem Sie eine SMS an die Telefonnummer senden, die Ihrer Azure Communication Services-Ressource zugeordnet ist. Sie sollten eine SMS zurückerhalten.
Von hier aus sind die Möglichkeiten endlos. Sie können mit einer vordefinierten Antwort auf eine Nachricht antworten, einen Bot hinzufügen, die Antwort speichern oder Eine Workflowautomatisierung hinzufügen.
Bereinigen von Ressourcen
Wenn Sie ein Communication Services-Abonnement bereinigen und entfernen möchten, können Sie die Ressource oder die Ressourcengruppe löschen. Wenn Sie die Ressourcengruppe löschen, werden auch alle anderen Ressourcen gelöscht, die ihr zugeordnet sind. Weitere Informationen zum Bereinigen von Ressourcen finden Sie hier.
Gebührenfreie Verifizierung
Wenn Sie über eine neue gebührenfreie Nummer verfügen und eine hohe Anzahl von SMS-Nachrichten senden oder SMS-Nachrichten an kanadische Telefonnummern senden möchten, lesen Sie die häufig gestellten Fragen > zur kostenlosen Überprüfung per SMS , um zu erfahren, wie Sie Ihre gebührenfreie Nummer überprüfen können.