Tutorial: Assine e faça pedidos com o carteiro
Neste tutorial, vamos configurar e usar o Postman para fazer uma solicitação nos Serviços de Comunicação do Azure usando HTTP. No final deste tutorial, você terá enviado com sucesso uma mensagem SMS usando os Serviços de Comunicação e o Postman. Em seguida, você poderá usar o Postman para explorar outras APIs nos Serviços de Comunicação do Azure.
Neste tutorial seremos:
- Baixando Postman
- Configurando o Postman para assinar solicitações HTTP
- Fazer uma solicitação contra a API SMS dos Serviços de Comunicação para enviar uma mensagem.
Pré-requisitos
- Uma conta do Azure com uma subscrição ativa. Para obter detalhes, consulte Criar uma conta gratuitamente. A conta gratuita dá-lhe $200 em créditos do Azure para experimentar qualquer combinação de serviços.
- Um recurso ativo dos Serviços de Comunicação e uma cadeia de conexão. Saiba como criar um recurso de Serviços de Comunicação.
- Um número de telefone dos Serviços de Comunicação do Azure que pode enviar mensagens SMS, consulte o nosso Obter um número de telefone para obter um.
Download e instalação do Postman
Postman, é um aplicativo de desktop que é capaz de fazer solicitações de API contra qualquer API HTTP. É comumente usado para testar e explorar APIs. Vamos fazer o download da versão mais recente para desktop do site do Postman. O Postman tem versões para Windows, Mac e Linux, portanto, faça o download da versão apropriada para o seu sistema operacional. Uma vez baixado, abra o aplicativo. Ser-lhe-á apresentado um ecrã inicial, que lhe pede para iniciar sessão ou para criar uma conta Postman. Criar uma conta é opcional e pode ser ignorado clicando no link "Pular e ir para o aplicativo". Criar uma conta salvará suas configurações de solicitação de API no Postman, que pode permitir que você retome suas solicitações em outros computadores.
Depois de criar uma conta ou pular a criação de uma, você verá a janela principal do Postman.
Criando e configurando uma coleção Postman
Carteiro, pode organizar pedidos de muitas maneiras. Para os fins deste tutorial. Vamos criar uma Coleção de Carteiros. Para fazer isso, selecione o botão coleções no lado esquerdo do aplicativo:
Uma vez selecionado, clique em "Criar nova coleção", para iniciar o processo de criação da coleção. Uma nova aba será aberta na área central do Postman. Nomeie a coleção como quiser. Aqui a coleção é chamada "Serviços de Comunicação do Azure":
Depois que sua coleção for criada e nomeada, você estará pronto para configurá-la.
Adicionando variáveis de coleta
Para lidar com a autenticação e facilitar as solicitações, especificaremos duas variáveis de coleta dentro da coleção de Serviços de Comunicação recém-criada. Essas variáveis estão disponíveis para todas as solicitações dentro de sua coleção de Serviços de Comunicação. Para começar a criar variáveis, visite a guia Variável da coleção.
Uma vez na guia coleção, crie duas variáveis:
- key - Esta variável deve ser uma das chaves da página de chaves dos Serviços de Comunicação do Azure no portal do Azure. Por exemplo,
oW...A==
. - endpoint - Esta variável deve ser o ponto de extremidade dos Serviços de Comunicação do Azure na página chave.
Certifique-se de remover a barra à direita. Por exemplo,
https://contoso.communication.azure.com
.
Insira esses valores na coluna "Valor inicial" da tela de variáveis. Uma vez inserido, pressione o botão "Persistir tudo" logo acima da tabela à direita. Quando configurado corretamente, sua tela do Postman deve ter esta aparência:
Você pode aprender mais sobre variáveis lendo a documentação do Postman sobre elas.
Criando um script de pré-solicitação
O próximo passo é criar um script de pré-solicitação dentro do Postman. Um script de pré-solicitação, é um script que é executado antes de cada solicitação no Postman e pode modificar ou alterar parâmetros de solicitação em seu nome. Usaremos isso para assinar nossas solicitações HTTP para que elas possam ser autorizadas pelos Serviços de Comunicação do Azure. Para obter mais informações sobre os requisitos de assinatura, leia nosso guia sobre autenticação.
Criaremos esse script dentro da Coleção para que ele seja executado em qualquer solicitação dentro da coleção. Para fazer isso, dentro da guia de coleção, clique na subguia "Script de pré-solicitação".
Nesta Subguia, você pode criar um script de pré-solicitação inserindo-o na área de texto abaixo. Pode ser mais fácil escrever isso, dentro de um editor de código completo, como o Visual Studio Code , antes de colá-lo quando concluído. Vamos passar por cada parte do script neste tutorial. Sinta-se livre para pular para o final se você quiser apenas copiá-lo para o Postman e começar. Vamos começar a escrever o roteiro.
Escrevendo o script de pré-solicitação
A primeira coisa que faremos é criar uma cadeia de caracteres UTC (Tempo Universal Coordenado) e adicioná-la ao cabeçalho HTTP "Data". Também armazenamos essa cadeia de caracteres em uma variável para usá-la mais tarde ao assinar:
// Set the Date header to our Date as a UTC String.
const dateStr = new Date().toUTCString();
pm.request.headers.upsert({key:'Date', value: dateStr});
Em seguida, colocaremos o hash do corpo da solicitação usando SHA 256 e o colocaremos no x-ms-content-sha256
cabeçalho. O Postman inclui algumas bibliotecas padrão para hashing e assinatura globalmente, portanto, não precisamos instalá-las ou exigi-las:
// Hash the request body using SHA256 and encode it as Base64
const hashedBodyStr = CryptoJS.SHA256(pm.request.body.raw).toString(CryptoJS.enc.Base64)
// And add that to the header x-ms-content-sha256
pm.request.headers.upsert({
key:'x-ms-content-sha256',
value: hashedBodyStr
});
Agora, usaremos nossa variável de ponto de extremidade especificada anteriormente para discernir o valor para o cabeçalho HTTP Host. Precisamos fazer isso, pois o cabeçalho Host não é definido até que este script seja processado:
// Get our previously specified endpoint variable
const endpoint = pm.variables.get('endpoint')
// Remove the https, prefix to create a suitable "Host" value
const hostStr = endpoint.replace('https://','');
Com esta informação criada, podemos agora criar a string, que iremos assinar para o Pedido HTTP, esta é composta por vários valores previamente criados:
// This gets the part of our URL that is after the endpoint, for example in https://contoso.communication.azure.com/sms, it will get '/sms'
const url = pm.request.url.toString().replace('{{endpoint}}','');
// Construct our string which we'll sign, using various previously created values.
const stringToSign = pm.request.method + '\n' + url + '\n' + dateStr + ';' + hostStr + ';' + hashedBodyStr;
Por fim, precisamos assinar essa cadeia de caracteres usando nossa chave de Serviços de Comunicação e, em seguida, adicioná-la à nossa solicitação no Authorization
cabeçalho:
// Decode our access key from previously created variables, into bytes from base64.
const key = CryptoJS.enc.Base64.parse(pm.variables.get('key'));
// Sign our previously calculated string with HMAC 256 and our key. Convert it to Base64.
const signature = CryptoJS.HmacSHA256(stringToSign, key).toString(CryptoJS.enc.Base64);
// Add our final signature in Base64 to the authorization header of the request.
pm.request.headers.upsert({
key:'Authorization',
value: "HMAC-SHA256 SignedHeaders=date;host;x-ms-content-sha256&Signature=" + signature
});
O script de pré-solicitação final
O script de pré-solicitação final deve ter esta aparência:
// Set the Date header to our Date as a UTC String.
const dateStr = new Date().toUTCString();
pm.request.headers.upsert({key:'Date', value: dateStr});
// Hash the request body using SHA256 and encode it as Base64
const hashedBodyStr = CryptoJS.SHA256(pm.request.body.raw).toString(CryptoJS.enc.Base64)
// And add that to the header x-ms-content-sha256
pm.request.headers.upsert({
key:'x-ms-content-sha256',
value: hashedBodyStr
});
// Get our previously specified endpoint variable
const endpoint = pm.variables.get('endpoint')
// Remove the https, prefix to create a suitable "Host" value
const hostStr = endpoint.replace('https://','');
// This gets the part of our URL that is after the endpoint, for example in https://contoso.communication.azure.com/sms, it will get '/sms'
const url = pm.request.url.toString().replace('{{endpoint}}','');
// Construct our string which we'll sign, using various previously created values.
const stringToSign = pm.request.method + '\n' + url + '\n' + dateStr + ';' + hostStr + ';' + hashedBodyStr;
// Decode our access key from previously created variables, into bytes from base64.
const key = CryptoJS.enc.Base64.parse(pm.variables.get('key'));
// Sign our previously calculated string with HMAC 256 and our key. Convert it to Base64.
const signature = CryptoJS.HmacSHA256(stringToSign, key).toString(CryptoJS.enc.Base64);
// Add our final signature in Base64 to the authorization header of the request.
pm.request.headers.upsert({
key:'Authorization',
value: "HMAC-SHA256 SignedHeaders=date;host;x-ms-content-sha256&Signature=" + signature
});
Insira ou cole este script final na área de texto dentro da guia Script de pré-solicitação:
Uma vez inserido, pressione CTRL + S ou pressione o botão salvar isso salvará o script na coleção.
Criando uma solicitação no Postman
Agora que tudo está configurado, estamos prontos para criar uma solicitação de Serviços de Comunicação no Postman. Para começar, clique no ícone mais(+) ao lado da Coleção de Serviços de Comunicação:
Isso criará uma nova guia para o nosso pedido dentro do Postman. Com ele criado, precisamos configurá-lo. Faremos uma solicitação contra a API de envio de SMS, portanto, consulte a documentação dessa API para obter assistência. Vamos configurar o pedido do Postman.
Comece pela configuração, o tipo de solicitação para POST
e inserindo {{endpoint}}/sms?api-version=2021-03-07
no campo URL da solicitação. Este URL utiliza a nossa variável criada endpoint
anteriormente para a enviar automaticamente para o seu recurso dos Serviços de Comunicação.
Agora selecione a guia Corpo da solicitação e, em seguida, altere o botão de opção abaixo para "cru". À direita, há uma lista suspensa que diz "Texto", altere-o para JSON:
Isso configurará a solicitação para enviar e receber informações em um formato JSON.
Na área de texto abaixo você precisará inserir um corpo de solicitação, ele deve estar no seguinte formato:
{
"from":"<Your Azure Communication Services Telephone Number>",
"message":"<The message you'd like to send>",
"smsRecipients": [
{
"to":"<The number you'd like to send the message to>"
}
]
}
Para o valor "de", você precisará obter um número de telefone no Portal de Serviços de Comunicação do Azure, conforme mencionado anteriormente. Introduza-o sem espaços e prefixado pelo código do seu país. Por exemplo: +15555551234
. Sua "mensagem" pode ser o que você gostaria de enviar, mas Hello from Azure Communication Services
é um bom exemplo. O valor "para" deve ser um telefone ao qual você tenha acesso e que possa receber mensagens SMS. Usar o seu próprio telemóvel é uma boa ideia.
Uma vez inserida, precisamos salvar essa solicitação na Coleção de Serviços de Comunicação que criamos anteriormente. Isso garantirá que ele pegue as variáveis e o script de pré-solicitação que criamos anteriormente. Para isso, clique no botão "salvar" no canto superior direito da área de solicitação.
Isso fará com que apareça uma janela de diálogo que pergunta a você, o que você gostaria de chamar a solicitação e onde você gostaria de salvá-la. Você pode nomeá-lo como quiser, mas certifique-se de selecionar sua coleção de Serviços de Comunicação na metade inferior da caixa de diálogo:
Enviar um pedido
Agora que tudo está configurado, você deve ser capaz de enviar a solicitação e receber uma mensagem SMS em seu telefone. Para fazer isso, certifique-se de que sua solicitação criada esteja selecionada e, em seguida, pressione o botão "Enviar" à direita:
Se tudo correu bem, deverá agora ver a resposta dos Serviços de Comunicação, que deverá ser o código de Estado 202:
O telemóvel, que possui o número que forneceu no valor "para", também deve ter recebido uma mensagem SMS. Agora você tem uma configuração funcional do Postman que pode falar com os Serviços de Comunicação do Azure e enviar mensagens SMS.
Próximos passos
Explore as APIsdos Serviços de Comunicação do Azure Leia mais sobre AutenticaçãoSaiba mais sobre o Postman
Você também pode querer: