Como enviar múltiplos SMS a partir de C/C++
A maneira mais simples de enviar SMS a partir de C/C++ é utilizar a API HTTP/Rest de SMS integrada do Ozeki SMS Gateway. Ao utilizar esta API, você enviará mensagens SMS através de uma requisição HTTP Post para o gateway de SMS. A requisição HTTP Post irá conter uma mensagem formatada em JSON. O gateway de SMS irá enviar este SMS para o telefone do destinatário e retornará uma resposta HTTP 200 OK para a sua requisição.
O exemplo de código C/C++ para SMS abaixo demonstra como você pode enviar SMS utilizando a API HTTP Rest de SMS do Ozeki SMS Gateway com a biblioteca Ozeki.Libs.Rest em C/C++. Esta biblioteca é fornecida gratuitamente, e você pode utilizá-la e modificá-la em qualquer um dos seus projetos.
SendMultipleSms.cpp#include <iostream> #include <string> #include "Ozeki.Libs.Rest.h" using namespace std; int main() { //Função para criar identificador único para cada mensagem srand((unsigned)time(0)); Configuration configuration; configuration.Username = "http_user"; configuration.Password = "qwe123"; configuration.ApiUrl = "http://127.0.0.1:9509/api"; Message msg1; msg1.ToAddress = "+36201111111"; msg1.Text = "Hello world 1"; Message msg2; msg2.ToAddress = "+36202222222"; msg2.Text = "Hello world 2"; Message msg3; msg3.ToAddress = "+36203333333"; msg3.Text = "Hello world 3"; MessageApi api(configuration); auto result = api.Send({ msg1, msg2, msg3 }); cout << result << endl; return 0; }
Como utilizar o exemplo de SMS em C/C++:
Este exemplo de SMS em C++ pode ser utilizado em qualquer aplicação C/C++. Para utilizá-lo, você deve adicionar a DLL Ozeki.Libs.Rest como referência ao seu projeto. Após adicionar a referência do projeto, você deve incluir a diretiva using Ozeki.Libs.Rest; na seção de cabeçalho do seu código-fonte C/C++. Isso permitirá que você utilize as classes fornecidas pela biblioteca Ozeki.Libs.Rest. Você pode utilizar a classe Message para criar o SMS. Você pode utilizar a classe MessageApi para enviar o SMS para o gateway de SMS. O gateway de SMS encaminhará sua mensagem para a rede móvel através de uma conexão wireless ou pela Internet.
Baixar SendSms.cpp
O código-fonte explicado neste artigo pode ser baixado, utilizado e modificado gratuitamente.
Download: SendMultipleSms.cpp.zip (2.97Mb)
O arquivo SendMultipleSms.cpp contém a biblioteca Ozeki.Libs.Rest, que fornece todas as ferramentas necessárias para enviar e receber mensagens SMS. Você também encontrará o projeto SendMultipleSms no zip, que contém o código de exemplo para mostrar como enviar um SMS. Este código de exemplo está listado abaixo.
Para enviar múltiplos SMS a partir de C/C++:
- Configure o Visual Studio Community
- Baixe o arquivo SendMultipleSms.cpp.zip
- Extraia o arquivo .zip da pasta de Downloads
- Abra o arquivo sendsms.sln no Visual Studio
- Inicie o Ozeki SMS Gateway
- Crie um usuário de API HTTP no Ozeki
- Execute o código C/C++ SendMultipleSms.cpp no Visual Studio para enviar SMS de teste
- Verifique a caixa Enviados no Ozeki SMS Gateway
Para poder enviar SMS a partir de C/C++, primeiro você precisa instalar o Ozeki SMS Gateway. O gateway de SMS pode ser instalado no mesmo computador onde você desenvolve seu código C/C++ no Visual Studio. Após a instalação, o próximo passo é conectar o Ozeki SMS Gateway à rede móvel. Você pode enviar um SMS de teste a partir da interface gráfica do Ozeki para verificar se a sua conexão com a rede móvel está funcionando. O passo final para preparar o seu ambiente é criar um usuário de API HTTP para SMS. Crie um usuário com o nome "http_user" e senha "qwe123" para que o exemplo funcione sem modificações.
Após configurar o ambiente, você pode executar o seu código C/C++.
URL da API HTTP para enviar SMS a partir de C/C++Para enviar SMS a partir de C/C++, o seu código C/C++ terá que fazer uma requisição HTTP para o gateway de SMS. A URL da API é mostrada abaixo. Observe que o endereço IP (127.0.0.1) deve ser substituído pelo endereço IP do seu gateway de SMS. Se o Ozeki SMS Gateway estiver instalado no mesmo computador onde a aplicação C/C++ de SMS está sendo executada, pode ser 127.0.0.1. Se estiver instalado em um computador diferente, deve ser o endereço IP desse computador.
http://127.0.0.1:9509/api?action=rest
Para autenticar o cliente de SMS em C/C++, você precisa enviar o nome de usuário e senha em uma string codificada em base64 para o servidor em uma requisição HTTP. O formato utilizado é: base64(nome de usuário+":"+senha). Em C#, você pode utilizar o seguinte código para fazer esta codificação:
string usernamePassword = username + ":" + password; string usernamePasswordEncoded = base64::encode(usernamePassword); return "Basic " + usernamePasswordEncoded;
Por exemplo, se você codificar o nome de usuário 'http_user' e a senha 'qwe123', você obterá a seguinte string codificada em base64: aHR0cF91c2VyOnF3ZTEyMw==. Para enviar
Cabeçalho da requisição HTTP para enviar SMS de C/C++
Para enviar as mensagens SMS, você precisa incluir as seguintes linhas como cabeçalhos na requisição HTTP. Observe que incluímos um tipo de conteúdo e um cabeçalho de Autorização.
Content-Type: application/json Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
Requisição HTTP para enviar SMS de C/C++
Para enviar o SMS, sua aplicação em C/C++ enviará uma requisição HTTP semelhante à mostrada abaixo. Observe que esta requisição contém uma parte de cabeçalho HTTP e uma parte de corpo HTTP. O corpo HTTP é uma string de dados codificada em JSON. Ela contém o número do destinatário e o texto da mensagem.
POST /api?action=sendmsg HTTP/1.1 Content-Length: 935 Content-Type: application/json Accept: application/json Authorization: Basic aHR0cF91c2VyOnF3ZTEyMw== Host: 127.0.0.1:9509 { "messages": [ { "create_date": "2021-06-29T08:40:11", "message_id": "rde8491s-5wpt-am95-bxsh-vu1a8kns10et", "submit_delivery_requested": true, "submit_report_requested": true, "submit_view_requested": true, "text": "Hello world 1", "time_to_send": "2021-06-29T08:40:11", "to_address": "+36201111111", "valid_until": "2021-07-06T08:40:11" }, { "create_date": "2021-06-29T08:40:11", "message_id": "qxhm3cuw-kwqb-mldi-b0xb-vn8sfway1hs2", "submit_delivery_requested": true, "submit_report_requested": true, "submit_view_requested": true, "text": "Hello world 2", "time_to_send": "2021-06-29T08:40:11", "to_address": "+36202222222", "valid_until": "2021-07-06T08:40:11" }, { "create_date": "2021-06-29T08:40:11", "message_id": "hnvcmp4j-a303-4432-psok-txujv54w8wrg", "submit_delivery_requested": true, "submit_report_requested": true, "submit_view_requested": true, "text": "Hello world 3", "time_to_send": "2021-06-29T08:40:11", "to_address": "+36203333333", "valid_until": "2021-07-06T08:40:11" } ] }
Resposta HTTP recebida pelo exemplo de SMS em C/C++
Assim que o gateway SMS receber esta requisição, ele gerará uma resposta HTTP. A resposta HTTP conterá um código de status para indicar se a requisição de envio de SMS foi bem-sucedida ou não. Ela também retornará uma estrutura codificada em JSON para fornecer detalhes úteis sobre o envio da mensagem.
HTTP/1.1 200 OK User-Agent: OZEKI 10.3.123 (www.myozeki.com) Content-Type: application/json; charset=utf8 Last-Modified: Tue, 29 Jun 2021 08:36:20 GMT Server: 10/10.3.123 Transfer-Encoding: chunked { "http_code": 200, "response_code": "SUCCESS", "response_msg": "Messages queued for delivery.", "data": { "total_count": 3, "success_count": 3, "failed_count": 0, "messages": [ { "message_id": "rde8491s-5wpt-am95-bxsh-vu1a8kns10et", "from_station": "%", "to_address": "+36201111111", "to_station": "%", "text": "Hello world 1", "create_date": "2021-06-29 08:40:11", "valid_until": "2021-07-06 08:40:11", "time_to_send": "2021-06-29 08:40:11", "submit_report_requested": true, "delivery_report_requested": false, "view_report_requested": false, "tags": [ { "name": "Type", "value": "SMS:TEXT" } ], "status": "SUCCESS" }, { "message_id": "qxhm3cuw-kwqb-mldi-b0xb-vn8sfway1hs2", "from_station": "%", "to_address": "+36202222222", "to_station": "%", "text": "Hello world 2", "create_date": "2021-06-29 08:40:11", "valid_until": "2021-07-06 08:40:11", "time_to_send": "2021-06-29 08:40:11", "submit_report_requested": true, "delivery_report_requested": false, "view_report_requested": false, "tags": [ { "name": "Type", "value": "SMS:TEXT" } ], "status": "SUCCESS" }, { "message_id": "hnvcmp4j-a303-4432-psok-txujv54w8wrg", "from_station": "%", "to_address": "+36203333333", "to_station": "%", "text": "Hello world 3", "create_date": "2021-06-29 08:40:11", "valid_until": "2021-07-06 08:40:11", "time_to_send": "2021-06-29 08:40:11", "submit_report_requested": true, "delivery_report_requested": false, "view_report_requested": false, "tags": [ { "name": "Type", "value": "SMS:TEXT" } ], "status": "SUCCESS" } ] } }
Exemplo de SMS em C/C++: SendMultipleSms.sln
Neste vídeo, vamos mostrar como você pode enviar múltiplas mensagens SMS usando o projeto de exemplo que fornecemos na página do tutorial. O vídeo começará com o download do projeto de exemplo e terminará com a execução do código. O vídeo é curto, mas muito fácil de acompanhar. Você não terá problemas para seguir o tutorial. Se você estiver familiarizado com C/C++, sinta-se à vontade para modificar as variáveis no código para enviar uma mensagem personalizada para endereços personalizados.
O código de exemplo abaixo faz parte da Solução do Visual Studio SendMultipleSms.sln. Uma solução do Visual Studio pode conter múltiplos projetos e múltiplos arquivos. Nesta solução, há apenas um projeto: SendMultipleSms.vcxproj, e um arquivo: SendMultipleSms.cs.
Como usar o projeto de exemplo (Tutorial em vídeo)
No vídeo a seguir, você aprenderá como executar o código e como verificar os resultados. Primeiro, o vídeo vai mostrar como executar o código. Em seguida, você verá como verificar a pasta Sent do usuário HTTP. No final do vídeo, você verá os detalhes de uma mensagem enviada. O vídeo tem apenas 46 segundos e contém todos os passos importantes e informações necessárias para completar o processo.
Considerações finais
Este guia contém todas as informações fundamentais sobre como enviar múltiplas mensagens SMS de C/C++ com a API REST HTTP do Ozeki SMS Gateway. Você achará muito benéfico usar esta solução porque a API de SMS em C/C++ funciona com o Android SMS Gateway, além dos provedores de serviço de SMS online que permitem enviar SMS sem fio. Este serviço permite que você entregue informações valiosas para mais de um telefone móvel de uma vez, tornando sua mensagem mais dinâmica.
Vá em frente e aprenda mais agora! Você pode encontrar muitos outros documentos como este no site da Ozeki. Você pode usar as APIs de SMS em C/C++ com outras funcionalidades, confira Como agendar um SMS em C/C++.
Coloque em prática o que você aprendeu, primeiro baixe o Ozeki SMS Gateway!
More information
- C/Cpp enviar SMS com a API rest HTTP (exemplo de código)
- C/Cpp enviar múltiplos SMS com a API rest HTTP (exemplo de código)
- C/Cpp agendar SMS com a API rest HTTP (exemplo de código)
- C/Cpp receber SMS com a API rest HTTP (exemplo de código)
- C/Cpp deletar SMS com a API rest HTTP (exemplo de código)
- Como baixar a biblioteca mais recente da API SMS C/Cpp do Github