Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Funkcje programu SMS usług Azure Communication Services zapewniają deweloperom opcje korzystania z odebranych zdarzeń SMS. Zdarzenia są publikowane w usłudze Azure Event Grid, która udostępnia gotowe integracje do przetwarzania ich przy użyciu webhooków, Azure Functions, łączników Power Automate / Logic App i innych.
Po otrzymaniu wiadomości SMS można je przetworzyć, aby na nie odpowiedzieć lub zarejestrować je w bazie danych do późniejszego wykorzystania.
W tym artykule opisano, jak przetwarzać zdarzenia związane z odebraniem SMS-ów za pomocą funkcji Azure, korzystając z wyzwalaczy Event Grid oraz łączników bez kodu dla Power Automate i Logic Apps.
Zdarzenie SMSReceived generowane po wysłaniu wiadomości SMS do numeru telefonu usług Azure Communication Services jest sformatowane w następujący sposób:
[{
"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"
}]
Uwaga / Notatka
Format MessageId zwracany przez ten interfejs API jest uważany za szczegóły implementacji wewnętrznej i może ulec zmianie bez powiadomienia. Klienci muszą traktować identyfikatory komunikatów jako nieprzezroczyste identyfikatory i nie mogą analizować, wnioskować struktury ani logiki kompilacji na podstawie ich formatu lub zawartości.
Aby rozpocząć generowanie zdarzeń, skonfiguruj usługę Azure Event Grid do korzystania z zasobu usług Azure Communication Services.
Uwaga / Notatka
Korzystanie z usługi Azure Event Grid wiąże się z większymi kosztami. Aby uzyskać więcej informacji, zobacz Cennik usługi Azure Event Grid.
Wymagania wstępne
- Konto Azure z aktywną subskrypcją. Utwórz konto bezpłatnie.
- Aktywny zasób usług komunikacyjnych i łańcuch połączenia. Utwórz zasób usług komunikacyjnych.
- Numer telefonu z obsługą wiadomości SMS. Uzyskaj numer telefonu.
- Włącz zasób usługi Event Grid w ramach subskrypcji. Zobacz instrukcje.
Usługa Event Grid zapewnia wbudowane wsparcie dla Azure Functions, co ułatwia tworzenie odbiornika zdarzeń bez konieczności zajmowania się złożonością analizowania nagłówków lub debugowania webhooków. Za pomocą wyzwalacza gotowego możemy skonfigurować funkcję platformy Azure uruchamianą za każdym razem, gdy zostanie wykryte zdarzenie zgodne z wyzwalaczem. W tym dokumencie skoncentrujemy się na wyzwalaczach odebranych wiadomości SMS.
Konfigurowanie naszego środowiska lokalnego
Za pomocą programu Visual Studio Code zainstaluj rozszerzenie usługi Azure Functions.
Za pomocą rozszerzenia utwórz funkcję platformy Azure zgodnie z tymi instrukcjami.
Skonfiguruj funkcję przy użyciu następujących instrukcji:
- Język: TypeScript
- Szablon: Wyzwalacz usługi Azure Event Grid
- Nazwa funkcji: zdefiniowana przez użytkownika
Po utworzeniu zobaczysz funkcję utworzoną w katalogu w następujący sposób:
import { AzureFunction, Context } from "@azure/functions" const eventGridTrigger: AzureFunction = async function (context: Context, eventGridEvent: any): Promise<void> { context.log(eventGridEvent); }; export default eventGridTrigger;
Konfigurowanie funkcji platformy Azure w celu odbierania zdarzenia SMS
Skonfiguruj funkcję Azure, aby przeanalizować wartości ze zdarzenia, takie jak kto ją wysłał, na jaki numer i jaka była wiadomość.
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;
Teraz pomyślnie obsłużyłeś odbieranie wiadomości SMS za pośrednictwem zdarzeń. Teraz możliwości tego, co zrobić z tym zdarzeniem, wahają się od rejestrowania go do reagowania na nie. W następnej sekcji skoncentrujemy się na odpowiadaniu na otrzymaną wiadomość SMS. Jeśli nie chcesz odpowiadać na wiadomość SMS, przejdź do następnej sekcji dotyczącej lokalnego uruchamiania funkcji.
Odpowiadanie na wiadomość SMS
- Aby odpowiedzieć na przychodzącą wiadomość SMS, używamy funkcji sms usługi Azure Communication Service do wysyłania wiadomości SMS. Zaczynamy od wywołania
SmsClienti inicjalizowania go za pomocąconnection stringdla naszego zasobu. Parametry połączenia można wkleić bezpośrednio w kodzie lub umieścić w pliku local.settings.json w katalogu funkcji platformy Azure w obszarze wartości.
{
"IsEncrypted": false,
"Values": {
"FUNCTIONS_WORKER_RUNTIME": "node",
"ACS_CONNECTION_STRING": "<<CONNECTION STRING>>"
}
}
Następnie tworzymy wiadomość SMS do wysłania na podstawie wartości
toifromze zdarzenia, które otrzymaliśmy.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;
Z tego miejsca możliwości są nieograniczone. Możesz odpowiedzieć na wiadomość przy użyciu wstępnie napisanej odpowiedzi, dodać bota lub zapisać odpowiedzi, dostosowując kod w ostatnim kroku.
Uruchamianie lokalne
Aby uruchomić funkcję lokalnie, naciśnij F5 w programie Visual Studio Code. Używamy narzędzia ngrok , aby podłączyć lokalnie działającą funkcję platformy Azure za pomocą usługi Azure Event Grid.
Po uruchomieniu funkcji skonfiguruj element
ngrok. Musisz pobrać narzędzie ngrok dla swojego środowiska.ngrok http 7071Skopiuj podany link
ngroktam, gdzie działa Twoja funkcja.Konfigurowanie zdarzeń SMS za pośrednictwem usługi Event Grid w ramach zasobu usług Azure Communication Services. Robimy to przy użyciu interfejsu wiersza polecenia platformy Azure. Potrzebny jest identyfikator zasobu usług Azure Communication Services znaleziony w portalu Azure. Identyfikator zasobu wygląda następująco: /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.SMSReceivedTeraz, gdy wszystko jest podłączone, przetestuj przepływ, wysyłając wiadomość SMS do numeru telefonu w zasobie usług Azure Communication Services. Powinny zostać wyświetlone dzienniki konsoli w terminalu, w którym jest uruchomiona funkcja. Jeśli dodałeś kod do odpowiedzi na wiadomość SMS, powinieneś zobaczyć tę wiadomość tekstową, którą otrzymałeś.
Wdrażanie na platformie Azure
Aby wdrożyć funkcję platformy Azure na platformie Azure, należy wykonać te instrukcje. Po wdrożeniu skonfigurujemy usługę Event Grid dla zasobu usług Azure Communication Services. Za pomocą adresu URL wdrożonej funkcji platformy Azure (adres URL znajdujący się w witrynie Azure Portal w ramach funkcji) uruchomimy następujące polecenie:
az eventgrid event-subscription update --name "<<EVENT_SUBSCRIPTION_NAME>>" --endpoint-type azurefunction --endpoint "<<AZ FUNCTION URL>> " --source-resource-id "<<RESOURCE_ID>>"
Ponieważ aktualizujemy subskrypcję zdarzeń utworzoną na potrzeby testowania lokalnego, upewnij się, że użyto wcześniej tej samej nazwy subskrypcji zdarzeń.
Możesz przetestować, wysyłając wiadomość SMS na numer telefonu skonfigurowany w zasobie usług Azure Communication Services.
Usługi Logic Apps i Power Automate udostępniają gotowe łączniki, które ułatwiają obsługę zdarzeń generowanych przez usługi Azure Communication Services za pośrednictwem usługi Event Grid. Zarówno usługi Logic Apps, jak i Power Automate zapewniają ten sam zestaw łączników. To do Ciebie należy decyzja, co wolisz, przeczytaj o różnicach między usługami, aby podjąć decyzję.
Obsługa zdarzeń za pomocą łącznika usługi Event Grid
Zacznij od utworzenia nowego przepływu w preferowanym środowisku.
When a resource event occursWybierz wyzwalacz, aby rozpocząć pracę.
Teraz możesz skonfigurować łącznik. Musisz podać subskrypcję, której chcesz użyć. (Powinna być tą samą subskrypcją, w której znajduje się zasób usług Azure Communication Services). Określ typ zasobu. W tym przypadku wybierz pozycję
Microsoft.Communication.CommunicationServices. Następnie musisz podać nazwę zasobu dla zasobu usług Azure Communication Services, z którym ma nawiązać połączenie. Na koniec musimy wybrać typy zdarzeń, które chcemy otrzymywać, w tym przypadku:Microsoft.Communication.SMSReceived.
Łącznik automatycznie konfiguruje subskrypcję zdarzeń w Twoim imieniu i konfiguruje zdarzenia, które mają zostać odebrane.
Aby ułatwić sobie życie później, dodaj element
Parse JSON connectordo przetworzenia odpowiedzi pochodzącej z łącznika Event Grid. Skonfiguruj łącznik, aby pobraćBodyobiekt z łącznika usługi Event Grid i dopasować go do oczekiwanego schematu zdarzenia:Przykładowy schemat (otwarty, aby zobaczyć)
{ "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" }
Na tym etapie pomyślnie obsłużyłeś/aś zdarzenie związane z SMS. Istnieje wiele opcji tego, co należy zrobić, począwszy od rejestrowania zdarzenia po odpowiadanie na wiadomość SMS. W kontekście tego dokumentu odpowiadamy na odebraną wiadomość SMS.
Odpowiadanie na wiadomość SMS
Zacznij od dodania łącznika SMS do naszego procesu i skonfigurowania go przy użyciu informacji o zasobie Azure Communication Services. Umożliwia łącznikowi dostęp do zasobu i wysyłanie wiadomości SMS w naszym imieniu. Potrzebujesz
connection stringdo swojego zasobu.
Następnie skonfigurujemy łącznik przy użyciu informacji dla nadawcy i adresata. Używamy informacji z otrzymanego wydarzenia, aby wypełnić odpowiednie pola. Zamień numery
toifrom, aby wysłać wiadomość SMS z powrotem do oryginalnego nadawcy. Na koniec dodaj komunikat.
Teraz możesz zapisać przepływ i przetestować go, wysyłając wiadomość SMS na numer telefonu skojarzony z zasobem usług Azure Communication Services. Powinieneś otrzymać wiadomość SMS.
Z tego miejsca możliwości są nieograniczone. Możesz odpowiedzieć na komunikat przy użyciu wstępnie napisanej odpowiedzi, dodać bota, zapisać odpowiedź lub dodać automatyzację przepływu pracy.
Uprzątnij zasoby
Jeśli chcesz wyczyścić i usunąć subskrypcję usług Komunikacyjnych, możesz usunąć zasób lub grupę zasobów. Usunięcie grupy zasobów powoduje również usunięcie wszelkich innych skojarzonych z nią zasobów. Dowiedz się więcej o czyszczeniu zasobów.
Bezpłatna weryfikacja
Jeśli masz nowy bezpłatny numer i chcesz wysłać dużą liczbę wiadomości SMS lub wysłać wiadomości SMS do kanadyjskich numerów telefonów, zobacz SMS FAQ Submit toll free verification to learn how to verify your toll-free number (Często zadawane pytania dotyczące > wiadomości SMS Prześlij bezpłatną weryfikację ), aby dowiedzieć się, jak zweryfikować bezpłatny numer.