Início Rápido: Receber e Responder a SMS

Azure Communication Services funcionalidades de SMS fornecem aos programadores opções para consumir eventos recebidos por SMS. Os eventos são publicados no Azure Event Grid que fornece integrações inativas para processar aqueles que utilizam webhooks, Funções do Azure, conectores do Power Automate/Logic App e muito mais.

Depois de recebidas, as mensagens SMS podem ser processadas para responder às mesmas ou simplesmente para as registar numa base de dados para acesso futuro.

Neste Início Rápido, vamos concentrar-nos em mostrar o processamento de eventos recebidos por SMS através de Funções do Azure através de acionadores do Event Grid e conectores sem código para o Power Automate/Logic Apps.

O SMSReceived evento gerado quando um SMS é enviado para uma Azure Communication Services número de telefone é formatado da seguinte forma:

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

Para começar a gerar os eventos, temos de configurar Azure Event Grid para o nosso recurso Azure Communication Services.

Nota

A utilização Azure Event Grid implica custos adicionais. Para obter mais informações, veja preços de Azure Event Grid.

Pré-requisitos

O Event Grid fornece suporte pronto a utilizar para Funções do Azure, facilitando a configuração de um serviço de escuta de eventos sem a necessidade de lidar com a complexidade de analisar cabeçalhos ou depurar webhooks. Com o acionador pronto a utilizar, podemos configurar uma Função do Azure que é executada sempre que é detetado um evento que corresponda ao acionador. Neste documento, focamo-nos nos acionadores recebidos por SMS.

Configurar o nosso ambiente local

  1. Com o Visual Studio Code, instale a Extensão Funções do Azure.

  2. Com a extensão, crie uma Função do Azure ao seguir estas instruções.

    Configure a função com as seguintes instruções:

    • Idioma: TypeScript
    • Modelo: Azure Event Grid Acionador
    • Nome da Função: definido pelo utilizador

    Depois de criada, verá uma função criada no seu diretório da seguinte forma:

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

Configurar a Função do Azure para receber o evento SMS

  1. Configure a Função do Azure para analisar valores do evento, como quem o enviou, para que número e qual era a mensagem.

    
    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;
    
    

Neste momento, lidou com êxito com a receção de um SMS através de eventos. Agora, as possibilidades do que fazer com esse evento variam entre apenas o registo e a resposta. Na secção seguinte, focamo-nos em responder a esse SMS que recebemos. Se não quiser responder ao SMS, avance para a secção seguinte sobre como executar a função localmente.

Responder ao SMS

  1. Para responder ao SMS recebido, utilizamos as capacidades de SMS do Serviço de Comunicação do Azure para enviar SMS. Começamos por invocar e SmsClient inicializá-lo com o para o connection string nosso recurso. Pode colar a cadeia de ligação diretamente no código ou colocá-la dentro do ficheiro local.settings.json no diretório da Função do Azure em valores.

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

  1. Em seguida, compomos um SMS para enviar com base nos to valores e from do evento que obtivemos.

    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;
    

A partir daqui, as possibilidades são infinitas. Desde responder a uma mensagem com uma resposta pré-enlatada, adicionar um bot ou simplesmente armazenar respostas, pode adaptar o código no último passo para o fazer.

Em execução localmente

Para executar a função localmente, prima F5 o Visual Studio Code. Utilizamos o ngrok para ligar a nossa Função do Azure em execução localmente com Azure Event Grid.

  1. Assim que a função estiver em execução, configuramos o ngrok. (Tem de transferir o ngrok para o seu ambiente.)

    ngrok http 7071
    

    Copie a ligação ngrok fornecida onde a função está em execução.

  2. Configure eventos DE SMS através do Event Grid no recurso Azure Communication Services. Fazemos isto com a CLI do Azure. Precisa do ID de recurso do recurso Azure Communication Services encontrado no portal do Azure. (O ID do recurso terá um aspeto semelhante a: /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. Agora que está tudo ligado, teste o fluxo ao enviar um SMS para o número de telefone que tem no recurso Azure Communication Services. Deverá ver os registos da consola no terminal onde a função está em execução. Se adicionou o código para responder ao SMS, deverá ver essa mensagem sms devolvida.

Implementar no Azure

Para implementar a Função do Azure no Azure, tem de seguir estas instruções. Depois de implementado, configuramos o Event Grid para o recurso Azure Communication Services. Com o URL da Função do Azure que foi implementada (URL encontrado no portal do Azure na função), executamos o seguinte comando:


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

Uma vez que estamos a atualizar a subscrição de eventos que criámos para testes locais, certifique-se de que utiliza o mesmo nome de subscrição de evento que utilizou acima.

Pode testar ao enviar uma SMS para o número de telefone que obteve através Azure Communication Services recurso.

O Logic Apps e o Power Automate fornecem conectores integrados para ajudar a lidar com eventos gerados por Azure Communication Services através do Event Grid. Tanto o Logic Apps como o Power Automate fornecem o mesmo conjunto de conectores. Cabe-lhe a si decidir o que prefere, ler sobre as diferenças entre os serviços para informar a sua decisão.

Processar eventos com o conector do Event Grid

  1. Comece por criar um novo fluxo no seu ambiente preferido. Escolha o acionador When a resource event occurs para começar.

    Captura de ecrã a mostrar a escolha do acionador para o Power Automate.

  2. Agora, vamos configurá-lo. O conector requer que forneça uma subscrição que pretenda utilizar. (Deve ser a mesma subscrição onde está o recurso Azure Communication Services). Especifique o tipo de recurso. Neste caso, selecione Microsoft.Communication.CommunicationServices. Em seguida, tem de fornecer um nome de recurso para o recurso Azure Communication Services ao qual pretende que se ligue. Por fim, temos de escolher os tipos de evento que queremos receber, neste caso: Microsoft.Communication.SMSReceived.

    Captura de ecrã do conector do Event Grid.

    O conector configura automaticamente a subscrição de eventos em seu nome e configura os eventos que pretende receber.

  3. Para facilitar as nossas vidas mais tarde, adicione uma Parse JSON connector resposta ao processo proveniente do conector do Event Grid. Configure o conector para retirar o Body objeto do conector do Event Grid e combiná-lo com o nosso esquema esperado para o evento:

    Esquema de exemplo (aberto para ver)
    
        {
            "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"
        }
    
    

    Captura de ecrã do conector Analisar JSON.

Neste momento, lidou com êxito com o evento SMS. Em seguida, tem várias opções do que fazer com o mesmo, desde registar o evento até responder ao SMS. No contexto deste documento, vamos mostrar como responder ao mesmo. Continue a ler para saber os passos para responder ao SMS.

Responder ao SMS

  1. Comece por adicionar o conector SMS ao nosso fluxo e configurá-lo com as informações do nosso recurso Azure Communication Services. Permite que o conector aceda ao recurso e envie o SMS em nosso nome. Precisa do para o connection string recurso.

    Captura de ecrã do ecrã de configuração do conector SMS.

  2. Em seguida, configuramos o conector com as informações do remetente e do destinatário. Utilizamos as informações do evento que recebemos para preenchê-las. Prima os to números e from para enviar um SMS de volta para o remetente original. Por fim, adicione uma mensagem.

    Captura de ecrã a mostrar a configuração do conector SMS.

Agora, pode guardar o fluxo e testá-lo ao enviar um SMS para o número de telefone associado ao recurso Azure Communication Services. Deverá receber uma mensagem SMS.

A partir daqui, as possibilidades são infinitas. Desde responder a uma mensagem com uma resposta pré-enlatada, adicionar um bot ou simplesmente armazenar respostas, pode adicionar mais lógica ao fluxo.

Limpar os recursos

Se quiser limpar e remover uma subscrição do Communication Services, pode eliminar o recurso ou grupo de recursos. Eliminar o grupo de recursos também elimina quaisquer outros recursos associados ao mesmo. Saiba mais sobre a limpeza de recursos.

Verificação gratuita

Se tiver um novo número gratuito e quiser enviar um grande volume de mensagens SMS ou enviar mensagens SMS para números de telefone canadianos, visite aqui para saber como verificar o seu número gratuito.

Passos seguintes

Neste início rápido, aprendeu a enviar mensagens SMS através dos Serviços de Comunicação.