Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Os recursos de SMS dos Serviços de Comunicação do Azure fornecem opções aos desenvolvedores para consumir eventos recebidos por SMS. Os eventos são postados na Grade de Eventos do Azure, que fornece integrações prontas para processar aqueles que usam webhooks, Azure Functions, conectores Power Automate / Logic App e muito mais.
Uma vez recebidas, as mensagens SMS podem ser processadas para respondê-las ou registrá-las em um banco de dados para acesso futuro.
Este artigo descreve como processar eventos recebidos por SMS usando o Azure Functions com triggers do Event Grid e conectores sem código para Power Automate / Logic Apps.
O SMSReceived evento gerado quando um SMS é enviado para um número de telefone dos Serviços de Comunicação do Azure é formatado da seguinte maneira:
[{
"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"
}]
Observação
O formato de MessageId retornado por esta API é considerado um detalhe interno de implementação e pode ser alterado sem prévio aviso. Os clientes devem tratar IDs de mensagem como identificadores opacos e não devem analisar, inferir estrutura ou criar lógica com base em seu formato ou conteúdo.
Para começar a gerar eventos, configure a Grade de Eventos do Azure para usar seu recurso dos Serviços de Comunicação do Azure.
Observação
Usar a Grade de Eventos do Azure incorre em mais custos. Para obter mais informações, consulte Preços da Grade de Eventos do Azure.
Pré-requisitos
- Uma conta do Azure com uma assinatura ativa. Crie uma conta gratuitamente.
- Um recurso ativo dos Serviços de Comunicação e respetiva cadeia de conexão. Crie um recurso de Serviços de Comunicação.
- Um número de telefone compatível com SMS. Obtenha um número de telefone.
- Habilite o recurso Grade de Eventos fornecido em sua assinatura. Consulte as instruções.
O Event Grid fornece suporte nativo ao Azure Functions, facilitando a configuração de um ouvinte de eventos sem a necessidade de lidar com a complexidade de analisar cabeçalhos ou depurar webhooks. Usando o gatilho pré-definido, podemos configurar uma Função do Azure que é executada sempre que é detetado um evento que corresponda ao gatilho. Neste documento, concentramo-nos nos gatilhos recebidos por SMS.
Configurando o nosso ambiente local
Usando o Visual Studio Code, instale a Extensão do Azure Functions.
Com a extensão, crie uma Função do Azure seguindo estas instruções.
Configure a função com as seguintes instruções:
- Idioma: TypeScript
- Modelo: Gatilho de Grade de Eventos do Azure
- Nome da função: definido pelo usuário
Uma vez criada, você vê uma função criada em seu diretório como esta:
import { AzureFunction, Context } from "@azure/functions" const eventGridTrigger: AzureFunction = async function (context: Context, eventGridEvent: any): Promise<void> { context.log(eventGridEvent); }; export default eventGridTrigger;
Configurar o Azure Function para receber eventos SMS
Configure o Azure Function para analisar valores do evento, como quem o enviou, para que número e qual foi 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;
Nesta fase, lidaste com sucesso com a receção de um SMS através de eventos. Agora, as possibilidades do que fazer com esse evento vão desde apenas registrá-lo até responder a ele. Na próxima seção, nos concentramos em responder ao SMS que recebemos. Se você não quiser responder ao SMS, pule para a próxima seção sobre como executar a função localmente.
Responder ao SMS
- Para responder ao SMS de entrada, usamos os recursos de SMS do Serviço de Comunicação do Azure para enviar SMS. Começamos por invocar o
SmsCliente inicializá-lo com oconnection stringpara o nosso recurso. Você pode colar a string de conexão diretamente no código ou colocá-la dentro do seu arquivo local.settings.json no diretório da sua Função do Azure sob valores.
{
"IsEncrypted": false,
"Values": {
"FUNCTIONS_WORKER_RUNTIME": "node",
"ACS_CONNECTION_STRING": "<<CONNECTION STRING>>"
}
}
Em seguida, compomos um SMS para enviar com base nos valores
toefromdo evento que recebemos.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. Você pode responder a uma mensagem com uma resposta pré-escrita, adicionar um bot ou armazenar respostas adaptando o código na última etapa.
Executar localmente
Para executar a função localmente, pressione F5 em Visual Studio Code. Usamos o ngrok para conectar nossa Função do Azure em execução local com a Grade de Eventos do Azure.
Quando a função estiver em execução, configure
ngrok. Você precisa baixar o ngrok para o seu ambiente.ngrok http 7071Copie o
ngroklink fornecido onde sua função está sendo executada.Configure eventos de SMS por meio da Grade de Eventos em seu recurso dos Serviços de Comunicação do Azure. Fazemos isso usando a CLI do Azure. Você precisa do ID do recurso para o seu serviço dos Serviços de Comunicação do Azure encontrado no portal do Azure. O ID do recurso é algo como: /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.SMSReceivedAgora que tudo está conectado, teste o fluxo enviando um SMS para o número de telefone em seu recurso dos Serviços de Comunicação do Azure. Você deve ver os logs do console no terminal onde a função está sendo executada. Se você adicionou o código para responder ao SMS, você verá essa mensagem de texto entregue de volta para você.
Publicar no Azure
Para implantar a Função do Azure no Azure, você precisa seguir estas instruções. Depois de implantado, configuramos a Grade de Eventos para o recurso dos Serviços de Comunicação do Azure. Com a URL para a Função do Azure que foi implantada (URL encontrada no portal do Azure sob a 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>>"
Como estamos atualizando a assinatura de evento que criamos para testes locais, certifique-se de usar o mesmo nome de assinatura de evento que você usou anteriormente.
Você pode testar enviando um SMS para o número de telefone configurado em seu recurso dos Serviços de Comunicação do Azure.
Logic Apps e o Power Automate fornecem conectores prontos para uso para ajudar a gerir eventos gerados pelos Serviços de Comunicação do Azure por meio do Event Grid. Tanto o Logic Apps quanto o Power Automate fornecem o mesmo conjunto de conectores. Cabe a você decidir o que prefere, leia sobre as diferenças entre os serviços para informar sua decisão.
Trabalhar com eventos usando o conector Event Grid
Comece criando um novo fluxo em seu ambiente preferido. Selecione o gatilho
When a resource event occurspara começar.
Agora, você pode configurar o conector. Você precisa fornecer uma assinatura que deseja usar. (Deve ser a mesma assinatura em que está seu recurso dos Serviços de Comunicação do Azure). Especifique o tipo de recurso. Neste caso, escolha
Microsoft.Communication.CommunicationServices. Em seguida, você precisa fornecer um nome de recurso para o recurso dos Serviços de Comunicação do Azure ao qual você deseja que ele se conecte. Finalmente, precisamos selecionar os tipos de eventos que queremos receber, neste caso:Microsoft.Communication.SMSReceived.
O conector configura automaticamente a assinatura de evento em seu nome e configura os eventos que deseja receber.
Para facilitar as nossas vidas mais tarde, adicione um
Parse JSON connectorpara processar a resposta proveniente do conector do Event Grid. Configure o conector para pegar oBodyobjeto do conector da Grade de Eventos e combiná-lo com 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" }
Neste ponto, você manipulou com êxito o evento SMS. Você tem várias opções do que fazer com ele, desde registrar o evento até responder ao SMS. No contexto deste documento, respondemos à mensagem SMS recebida.
Responder ao SMS
Comece adicionando o conector SMS ao nosso fluxo e configurando-o com as informações para nosso recurso dos Serviços de Comunicação do Azure. Ele permite que o conector acesse o recurso e envie o SMS em nosso nome. Você precisa do
connection stringpara o seu recurso.
Em seguida, configuramos o conector com as informações para o remetente e o destinatário. Usamos as informações do evento que recebemos para preenchê-los. Inverta os números
toefrompara enviar um SMS de volta ao remetente original. Finalmente, adicione uma mensagem.
Agora, você pode salvar o fluxo e testá-lo enviando um SMS para o número de telefone associado ao seu recurso dos Serviços de Comunicação do Azure. Você deve receber de volta uma mensagem de texto.
A partir daqui, as possibilidades são infinitas. Você pode responder a uma mensagem com uma resposta pré-escrita, adicionar um bot, armazenar a resposta ou adicionar automação de fluxo de trabalho.
Limpeza de recursos
Se pretende limpar e remover uma subscrição de Serviços de Comunicação, pode eliminar o recurso ou o grupo de recursos. A exclusão do grupo de recursos também exclui quaisquer outros recursos associados a ele. Saiba mais sobre a limpeza de recursos.
Verificação sem custos de chamada
Se você tiver um novo número gratuito e quiser enviar um grande volume de mensagens SMS ou enviar mensagens SMS para números de telefone canadenses, consulte SMS FAQ > Enviar verificação gratuita para saber como verificar seu número gratuito.