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
- Uma conta do Azure com uma subscrição ativa. Crie uma conta gratuitamente.
- Um recurso ativo do Communication Services e uma cadeia de ligação. Crie um recurso do Communication Services.
- Um número de telefone ativado por SMS. Obtenha um número de telefone.
- Ative o recurso do Event Grid na sua subscrição. Veja as instruções.
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
Com o Visual Studio Code, instale a Extensão Funções do Azure.
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
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
- 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 oconnection 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>>"
}
}
Em seguida, compomos um SMS para enviar com base nos
to
valores efrom
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.
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.
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
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
Comece por criar um novo fluxo no seu ambiente preferido. Escolha o acionador
When a resource event occurs
para começar.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
.O conector configura automaticamente a subscrição de eventos em seu nome e configura os eventos que pretende receber.
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 oBody
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" }
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
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.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 efrom
para enviar um SMS de volta para o remetente original. Por fim, adicione uma mensagem.
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.