Udostępnij za pośrednictwem


Szybki start: odbieranie i odpowiadanie na wiadomość SMS

Azure Communication Services możliwości programu SMS zapewniają deweloperom opcje korzystania z odebranych zdarzeń sms. Zdarzenia są publikowane w Azure Event Grid, które udostępniają gotowe integracje do przetwarzania tych przy użyciu elementów webhook, Azure Functions, łączników usługi Power Automate/ aplikacji logiki i nie tylko.

Po odebraniu wiadomości SMS można przetworzyć w celu reagowania na nie lub po prostu zarejestrować je w bazie danych w celu uzyskania przyszłego dostępu.

W tym przewodniku Szybki start skupimy się na pokazywaniu przetwarzania zdarzeń odebranych przez program SMS za pośrednictwem Azure Functions przy użyciu wyzwalaczy usługi Event Grid i łączników bez kodu dla usługi Power Automate/Logic Apps.

Zdarzenie SMSReceived generowane podczas wysyłania wiadomości SMS do Azure Communication Services numer telefonu jest sformatowane w następujący sposób:

[{
  "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"
}]

Aby rozpocząć generowanie zdarzeń, musimy skonfigurować Azure Event Grid dla naszego zasobu Azure Communication Services.

Uwaga

Korzystanie z Azure Event Grid wiąże się z dodatkowymi kosztami. Aby uzyskać więcej informacji, zobacz cennik Azure Event Grid.

Wymagania wstępne

Usługa Event Grid zapewnia kompleksową obsługę Azure Functions, co ułatwia konfigurowanie odbiornika zdarzeń bez konieczności radzenia sobie ze złożonością analizowania nagłówków lub debugowania elementów webhook. Korzystając z wyzwalacza gotowego, możemy skonfigurować funkcję platformy Azure uruchamianą za każdym razem, gdy zostanie wykryte zdarzenie zgodne z wyzwalaczem. W tym dokumencie koncentrujemy się na wyzwalaczach odbieranych przez program SMS.

Konfigurowanie naszego środowiska lokalnego

  1. Za pomocą Visual Studio Code zainstaluj rozszerzenie Azure Functions.

  2. Po rozszerzeniu utwórz funkcję platformy Azure, postępując zgodnie z tymi instrukcjami.

    Skonfiguruj funkcję przy użyciu następujących instrukcji:

    • Język: TypeScript
    • Szablon: wyzwalacz Azure Event Grid
    • Nazwa funkcji: zdefiniowana przez użytkownika

    Po utworzeniu zostanie wyświetlona funkcja utworzona 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ę platformy Azure, aby analizować wartości z zdarzenia, takiego jak osoba, która ją wysłała, do liczby i komunikatu.

    
    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;
    
    

W tym momencie pomyślnie obsłużono 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 koncentrujemy 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żyjemy funkcji sms usługi Azure Communication Service do wysyłania wiadomości SMS. Zaczynamy od wywołania i zainicjowania SmsClient go connection string za pomocą zasobu. Parametry połączenia można wkleić bezpośrednio w kodzie lub umieścić je 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 wysyłania na to podstawie wartości i from z 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ą nieskończone. Od odpowiadania na wiadomość ze wstępnie kaniną odpowiedzią, do dodawania bota lub po prostu przechowywania odpowiedzi, możesz dostosować kod w ostatnim kroku, aby to zrobić.

Uruchamianie lokalnie

Aby uruchomić funkcję lokalnie, naciśnij klawisz F5 w Visual Studio Code. Używamy narzędzia ngrok, aby podłączyć lokalnie działającą funkcję platformy Azure za pomocą Azure Event Grid.

  1. Po uruchomieniu funkcji skonfigurujemy narzędzie ngrok. (Musisz pobrać narzędzie ngrok dla środowiska).

    ngrok http 7071
    

    Skopiuj link ngrok podany, gdzie działa funkcja.

  2. Skonfiguruj zdarzenia sms za pośrednictwem usługi Event Grid w zasobie Azure Communication Services. Robimy to przy użyciu interfejsu wiersza polecenia platformy Azure. Potrzebny jest identyfikator zasobu dla zasobu Azure Communication Services znalezionego w Azure Portal. (Identyfikator zasobu będzie 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 na numer telefonu, który znajduje się w zasobie Azure Communication Services. Powinny zostać wyświetlone dzienniki konsoli w terminalu, w którym jest uruchomiona funkcja. Jeśli kod został dodany do odpowiedzi na wiadomość SMS, powinien zostać wyświetlony komunikat tekstowy dostarczony z powrotem do Ciebie.

Wdróż 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 Azure Communication Services. Za pomocą adresu URL wdrożonej funkcji platformy Azure (adres URL znaleziony w 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, pamiętaj o użyciu tej samej nazwy subskrypcji zdarzeń, której użyto powyżej.

Możesz przetestować, wysyłając wiadomość SMS na numer telefonu, który został pozyskany za pośrednictwem Azure Communication Services zasobu.

Usługi Logic Apps i Power Automate udostępniają gotowe łączniki, aby ułatwić obsługę zdarzeń generowanych przez usługę Azure Communication Services za pośrednictwem usługi Event Grid. Zarówno usługi Logic Apps, jak i Power Automate udostępniają ten sam zestaw łączników. Decydujesz, co wolisz, przeczytaj o różnicach między usługami , aby poinformować o swojej decyzji.

Obsługa zdarzeń za pomocą łącznika usługi Event Grid

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

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

  2. Teraz skonfigurujmy ją. Łącznik wymaga podania subskrypcji, której chcesz użyć. (Powinna być taka sama subskrypcja, w której znajduje się zasób Azure Communication Services). Określ typ zasobu. W tym przypadku wybierz pozycję Microsoft.Communication.CommunicationServices. Następnie musisz podać nazwę zasobu 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 przetwarzania odpowiedzi pochodzącej z łącznika usługi 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żono zdarzenie SMS. Następnie masz wiele opcji, co zrobić z nim, począwszy od rejestrowania zdarzenia do odpowiadania na wiadomość SMS. W kontekście tego dokumentu pokażemy, jak reagować na nie. Kontynuuj czytanie, aby dowiedzieć się, jak reagować na wiadomość SMS.

Odpowiadanie na wiadomość SMS

  1. Zacznij od dodania łącznika programu SMS do naszego przepływu i skonfigurowania go przy użyciu informacji dotyczących naszego zasobu Azure Communication Services. Umożliwia łącznikowi dostęp do zasobu i wysyłanie wiadomości SMS w naszym imieniu. Potrzebny jest connection string zasób.

    Zrzut ekranu przedstawiający ekran konfigurowania łącznika programu SMS.

  2. Następnie skonfigurujemy łącznik z informacjami dla nadawcy i adresata. Używamy informacji z otrzymanego zdarzenia, aby je wypełnić. Fip numery to i from , aby wysłać wiadomość SMS z powrotem do oryginalnego nadawcy. Na koniec dodaj komunikat.

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

Teraz możesz zapisać przepływ i przetestować go, wysyłając wiadomość SMS na numer telefonu skojarzony z zasobem Azure Communication Services. Powinna zostać zwrócona wiadomość SMS.

Od tego miejsca możliwości są nieograniczone. Od odpowiadania na komunikat przy użyciu wstępnie dostępnej odpowiedzi, dodawania bota lub po prostu przechowywania odpowiedzi, możesz dodać do przepływu więcej logiki.

Czyszczenie zasobów

Jeśli chcesz wyczyścić i usunąć subskrypcję usług Communication Services, możesz usunąć zasób lub grupę zasobów. Usunięcie grupy zasobów powoduje również usunięcie wszystkich 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, odwiedź tutaj , aby dowiedzieć się, jak zweryfikować bezpłatny numer.

Następne kroki

W tym przewodniku Szybki start przedstawiono sposób wysyłania wiadomości SMS przy użyciu usług Komunikacyjnych.