Sdílet prostřednictvím


Rychlý start: Příjem zpráv SMS a odpovídání na zprávy SMS

Azure Communication Services funkce SMS poskytují vývojářům možnosti využívat přijaté události SMS. Události se zasílají do Azure Event Grid, která nabízí integrované integrace pro zpracování těch, které používají webhooky, Azure Functions, konektory Power Automate / Logic App a další.

Po přijetí se zprávy SMS dají zpracovat, aby na ně reagovaly nebo je jednoduše protokolovaly do databáze pro budoucí přístup.

V tomto rychlém startu se zaměříme na zpracování událostí přijatých zprávou SMS prostřednictvím Azure Functions pomocí triggerů Event Gridu a konektorů bez kódu pro Power Automate / Logic Apps.

Událost SMSReceived vygenerovaná při odeslání ZPRÁVY SMS na Azure Communication Services telefonní číslo je naformátovaná následujícím způsobem:

[{
  "id": "Incoming_20200918002745d29ebbea-3341-4466-9690-0a03af35228e",
  "topic": "/subscriptions/50ad1522-5c2c-4d9a-a6c8-67c11ecb75b8/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"
}]

Abychom mohli začít generovat události, musíme nakonfigurovat Azure Event Grid pro náš Azure Communication Services prostředek.

Poznámka

Používání Azure Event Grid s tím účtují další náklady. Další informace najdete v tématu ceny Azure Event Grid.

Požadavky

Event Grid poskytuje připravenou podporu pro Azure Functions, což usnadňuje nastavení naslouchacího procesu událostí bez nutnosti řešit složitost analýzy hlaviček nebo ladění webhooků. Pomocí připraveného triggeru můžeme nastavit funkci Azure, která se spustí při každém zjištění události odpovídající triggeru. V tomto dokumentu se zaměříme na aktivační události přijaté zprávou SMS.

Nastavení našeho místního prostředí

  1. Pomocí nástroje Visual Studio Code nainstalujte rozšíření Azure Functions.

  2. Pomocí rozšíření vytvořte funkci Azure Functions podle těchto pokynů.

    Nakonfigurujte funkci podle následujících pokynů:

    • Jazyk: TypeScript
    • Šablona: trigger Azure Event Grid
    • Název funkce: Definované uživatelem

    Po vytvoření uvidíte ve vašem adresáři vytvořenou funkci, která vypadá takto:

    
    import { AzureFunction, Context } from "@azure/functions"
    
    const eventGridTrigger: AzureFunction = async function (context: Context, eventGridEvent: any): Promise<void> {
        context.log(eventGridEvent);
    
    };
    
    export default eventGridTrigger;
    
    

Konfigurace funkce Azure Pro příjem událostí SMS

  1. Nakonfigurujte funkci Azure Functions tak, aby parsovala hodnoty z události, například kdo ji poslal, na jaké číslo a jaká byla zpráva.

    
    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;
    
    

V tomto okamžiku jste úspěšně zvládli příjem SMS prostřednictvím událostí. Možnosti, co s danou událostí dělat, teď sahají od pouhého protokolování až po reakci na událost. V další části se zaměříme na odpověď na přijatou ZPRÁVU SMS. Pokud nechcete na SMS odpovědět, přeskočte k další části o místním spuštění funkce.

Reagování na SMS

  1. K odpovědi na příchozí SMS používáme funkce SMS služby Azure Communication Service pro odesílání SMS. Začneme tím, že vyvoláme SmsClient a inicializujeme ho pomocí connection string pro náš prostředek. Připojovací řetězec můžete buď vložit přímo do kódu, nebo ho umístit do souboru local.settings.json v adresáři funkce Azure Functions pod hodnotami.

{
  "IsEncrypted": false,
  "Values": {
    "FUNCTIONS_WORKER_RUNTIME": "node",
    "ACS_CONNECTION_STRING": "<<CONNECTION STRING>>"
  }
}

  1. Pak vytvoříme ZPRÁVU SMS, která se odešle na to základě hodnot a from z události, která se nám zobrazila.

    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;
    

Odsud jsou možnosti nekonečné. Kód můžete přizpůsobit v posledním kroku od odpovídání na zprávu s předem naskenovanou odpovědí až po přidání robota nebo jednoduše ukládání odpovědí.

Místní spuštění

Pokud chcete funkci spustit místně, stiskněte v editoru F5 Visual Studio Code. K připojení místně spuštěné funkce Azure functions s Azure Event Grid používáme ngrok.

  1. Po spuštění funkce nakonfigurujeme ngrok. (Pro své prostředí si musíte stáhnout ngrok .)

    ngrok http 7071
    

    Zkopírujte odkaz ngrok poskytnutý tam, kde je funkce spuštěná.

  2. Nakonfigurujte události SMS prostřednictvím Event Gridu v rámci prostředku Azure Communication Services. Provedeme to pomocí Azure CLI. Potřebujete ID prostředku Azure Communication Services, který se nachází v Azure Portal. (ID prostředku bude vypadat přibližně takto: /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. Teď, když je všechno připojeno, otestujte tok odesláním SMS na telefonní číslo, které máte na Azure Communication Services prostředku. Protokoly konzoly by se měly zobrazit na terminálu, kde je funkce spuštěná. Pokud jste přidali kód pro odpověď na ZPRÁVU SMS, měla by se vám tato textová zpráva vrátit.

Nasazení do Azure

Pokud chcete funkci Azure Functions nasadit do Azure, musíte postupovat podle těchto pokynů. Po nasazení nakonfigurujeme Event Grid pro prostředek Azure Communication Services. S adresou URL funkce Azure, která byla nasazena (adresa URL se nachází v Azure Portal pod funkcí), spustíme následující příkaz:


az eventgrid event-subscription update --name "<<EVENT_SUBSCRIPTION_NAME>>" --endpoint-type azurefunction --endpoint "<<AZ FUNCTION URL>> " --source-resource-id "<<RESOURCE_ID>>"

Vzhledem k tomu, že aktualizujeme odběr událostí, který jsme vytvořili pro místní testování, nezapomeňte použít stejný název odběru událostí, který jste použili výše.

Test můžete provést odesláním SMS na telefonní číslo, které jste si pořídit prostřednictvím Azure Communication Services prostředku.

Logic Apps a Power Automate poskytují konektory, které pomáhají zpracovávat události vygenerované Azure Communication Services prostřednictvím Event Gridu. Logic Apps i Power Automate poskytují stejnou sadu konektorů. Je na vás, abyste se rozhodli, čemu dáváte přednost. Přečtěte si informace o rozdílech mezi službami , abyste se rozhodli.

Zpracování událostí pomocí konektoru Event Gridu

  1. Začněte vytvořením nového toku v upřednostňovaném prostředí. Začněte výběrem triggeru When a resource event occurs .

    Snímek obrazovky s výběrem triggeru pro Power Automate

  2. Teď ho nakonfigurujeme. Konektor vyžaduje, abyste zadali předplatné, které chcete použít. (Mělo by to být stejné předplatné, jako je váš prostředek Azure Communication Services.) Zadejte typ prostředku. V takovém případě zvolte Microsoft.Communication.CommunicationServices. Pak musíte zadat název prostředku Azure Communication Services, ke kterému se má připojit. Nakonec musíme vybrat typy událostí, které chceme přijímat, v tomto případě: Microsoft.Communication.SMSReceived.

    Snímek obrazovky s konektorem Event Gridu

    Konektor za vás automaticky nastaví odběr událostí a nakonfiguruje události, které chce přijímat.

  3. Abychom si později usnadnili život, přidejte Parse JSON connector do procesu odpověď přicházející z konektoru Event Gridu. Nakonfigurujte konektor tak, Body aby převzal objekt z konektoru Event Gridu a odpovídal našemu očekávanému schématu události:

    Ukázkové schéma (otevřené a zobrazené)
    
        {
            "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"
        }
    
    

    Snímek obrazovky s analýzou konektoru JSON

V tomto okamžiku jste událost SMS úspěšně zvládli. Pak máte několik možností, co s ním dělat, od protokolování události až po reakci na SMS. V kontextu tohoto dokumentu si ukážeme, jak na něj reagovat. Pokračujte ve čtení a seznamte se s postupem, jak odpovědět na SMS.

Reagování na SMS

  1. Začněte tím, že do našeho toku přidáte konektor SMS a nakonfigurujete ho s informacemi pro náš Azure Communication Services prostředek. Umožňuje konektoru získat přístup k prostředku a odeslat sms naším jménem. Potřebujete pro connection string svůj prostředek .

    Snímek obrazovky nastavení konektoru SMS

  2. Dále nakonfigurujeme konektor s informacemi o odesílateli a příjemci. Informace z události, kterou jsme obdrželi, použijeme k jejich naplnění. to Pokud chcete poslat SMS zprávu zpět původnímu odesílateli, zadejte čísla a from . Nakonec přidejte zprávu.

    Snímek obrazovky s konfigurací konektoru SMS

Teď můžete tok uložit a otestovat odesláním SMS na telefonní číslo přidružené k vašemu Azure Communication Services prostředku. Měla by se vám vrátit textová zpráva.

Odsud jsou možnosti nekonečné. Do toku můžete přidat další logiku, od odpovídání na zprávu předem naskenovanou odpovědí přes přidání robota nebo jednoduché ukládání odpovědí.

Vyčištění prostředků

Pokud chcete vyčistit a odebrat předplatné komunikačních služeb, můžete odstranit prostředek nebo skupinu prostředků. Odstraněním skupiny prostředků se odstraní také všechny ostatní prostředky k ní přidružené. Přečtěte si další informace o čištění prostředků.

Ověření bezplatné linky

Pokud máte nové číslo bezplatné linky a chcete posílat velké množství ZPRÁV SMS nebo posílat SMS zprávy na kanadská telefonní čísla, navštivte prosím zde , kde se dozvíte, jak ověřit své bezplatné číslo.

Další kroky

V tomto rychlém startu jste zjistili, jak odesílat zprávy SMS pomocí komunikačních služeb.