Udostępnij przez


Odbierz wiadomość SMS

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

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

  1. Za pomocą programu Visual Studio Code zainstaluj rozszerzenie usługi Azure Functions.

  2. 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

  1. 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

  1. 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 SmsClient i inicjalizowania go za pomocą connection string dla 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>>"
  }
}

  1. Następnie tworzymy wiadomość SMS do wysłania na podstawie wartości to i from ze 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.

  1. Po uruchomieniu funkcji skonfiguruj element ngrok. Musisz pobrać narzędzie ngrok dla swojego środowiska.

    ngrok http 7071
    

    Skopiuj podany link ngrok tam, gdzie działa Twoja funkcja.

  2. 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.SMSReceived 
    
  3. Teraz, 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

  1. Zacznij od utworzenia nowego przepływu w preferowanym środowisku. When a resource event occurs Wybierz wyzwalacz, aby rozpocząć pracę.

    Zrzut ekranu przedstawiający wybór wyzwalacza dla usługi Power Automate.

  2. 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.

    Zrzut ekranu przedstawiający łącznik usługi Event Grid.

    Łącznik automatycznie konfiguruje subskrypcję zdarzeń w Twoim imieniu i konfiguruje zdarzenia, które mają zostać odebrane.

  3. Aby ułatwić sobie życie później, dodaj element Parse JSON connector do przetworzenia odpowiedzi pochodzącej z łącznika Event Grid. Skonfiguruj łącznik, aby pobrać Body obiekt 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"
        }
    
    

    Zrzut ekranu przedstawiający analizowanie łącznika JSON.

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

  1. 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 string do swojego zasobu.

    Zrzut ekranu przedstawiający stronę konfiguracji łącznika SMS.

  2. 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 to i from, aby wysłać wiadomość SMS z powrotem do oryginalnego nadawcy. Na koniec dodaj komunikat.

    Zrzut ekranu przedstawiający konfigurację łącznika SMS.

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.

Dalsze kroki