Como enviar múltiplos SMS a partir do Delphi
A maneira mais simples de enviar SMS a partir do Delphi é utilizar a API HTTP/REST de SMS integrada do Ozeki SMS Gateway. Ao usar 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 SMS em Delphi abaixo demonstra como você pode enviar SMS utilizando a API REST HTTP do Ozeki SMS Gateway com a unidade Ozeki.Libs.Rest do Delphi. Esta unidade é fornecida gratuitamente e você pode usá-la e modificá-la em qualquer um dos seus projetos.
SendMultipleSms.delphi
program SendMultipleSms;
{$APPTYPE CONSOLE}
{$R *.res}
uses
System.SysUtils,
Ozeki.Libs.Rest in 'Ozeki.Libs.Rest.pas';
var configuration : Ozeki.Libs.Rest.Configuration;
var msg1, msg2, msg3 : Ozeki.Libs.Rest.Message;
var api : Ozeki.Libs.Rest.MessageApi;
var result : MessageSendResults;
var read : string;
begin
try
configuration := Ozeki.Libs.Rest.Configuration.Create;
configuration.Username := 'http_user';
configuration.Password := 'qwe123';
configuration.ApiUrl := 'http://127.0.0.1:9509/api';
msg1 := Ozeki.Libs.Rest.Message.Create;
msg1.ToAddress := '+36201111111';
msg1.Text := 'Olá mundo 1';
msg2 := Ozeki.Libs.Rest.Message.Create;
msg2.ToAddress := '+36202222222';
msg2.Text := 'Olá mundo 2';
msg3 := Ozeki.Libs.Rest.Message.Create;
msg3.ToAddress := '+36203333333';
msg3.Text := 'Olá mundo 3';
api := Ozeki.Libs.Rest.MessageApi.Create(configuration);
result := api.SendMessages([ msg1, msg2, msg3 ]);
Writeln(result.ToString());
Readln(read);
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
end.
Como usar o exemplo de SMS em Delphi:
Este exemplo de SMS em Delphi pode ser usado em qualquer aplicação Delphi. Para usá-lo, você deve adicionar a unidade Ozeki.Libs.Rest.pas ao seu projeto. Após adicionar a unidade, você deve incluir a diretiva uses Ozeki.Libs.Rest in 'Ozeki.Libs.Rest.pas'; na seção de cabeçalho do seu código fonte Delphi. Isso permitirá que você use as classes fornecidas pela unidade Ozeki.Libs.Rest. Você pode usar a classe Message para criar o SMS. Você pode usar 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 SendMultipleSms.delphi
O código fonte explicado neste artigo pode ser baixado, usado e modificado gratuitamente.
Download: SendMultipleSms.delphi.zip (11.8Kb)
O arquivo SendMultipleSms.delphi.zip contém a unidade 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 SMS a partir do Delphi:
- Instale um usuário de API HTTP
- Ative "Log communication events" na aba Advanced
- Configure o Embarcadero Delphi Studio
- Baixe e extraia o arquivo SendMultipleSms.delphi.zip
- Abra o arquivo SendMultipleSms.dproj no Delphi Studio clicando duas vezes nele
- Inicie o aplicativo Ozeki SMS Gateway
- Execute o código Delphi SendMultipleSms.dpr no Delphi Studio
- Verifique os logs para confirmar se o SMS foi enviado
Para poder enviar SMS a partir do Delphi, primeiro você precisa instalar o Ozeki SMS Gateway. O gateway de SMS pode ser instalado no mesmo computador onde você desenvolve seu código Delphi 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 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 Delphi.
URL da API HTTP para enviar SMS a partir do DelphiPara enviar SMS a partir do Delphi, seu Delphi 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 o aplicativo Delphi está sendo executado, 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
Autenticação HTTP para enviar SMS a partir do Delphi
Para autenticar o cliente SMS do Delphi, 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). No Delphi você pode usar o seguinte código para fazer essa codificação:
var usernamePassword := username + ':' + password;
var Encoder := TBase64Encoding.Create();
var usernamePasswordEncoded := Encoder.Encode(usernamePassword);
result := Format('Basic %s', [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 a partir do Delphi
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 a partir do Delphi
Para submeter o SMS, sua aplicação Delphi 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 os números dos destinatários e os textos das mensagens que gostaríamos de enviar.
POST /api?action=sendmsg HTTP/1.0
Connection: keep-alive
Content-Type: application/json
Content-Length: 1211
Authorization: Basic aHR0cF91c2VyOnF3ZTEyMw==
Host: 127.0.0.1:9509
Accept: application/json
User-Agent: Mozilla/3.0 (compatible; Indy Library)
{
"messages": [
{
"message_id": "b984812c-6af0-47ac-83e6-c162b1743272",
"from_connection": "",
"from_address": "",
"from_station": "",
"to_connection": "",
"to_address": "+36201111111",
"to_station":"",
"text":" Hello world 1",
"create_date": "2021-07-27T14:59:43",
"valid_until": "2021-08-03T14:59:43",
"time_to_send": "2021-07-27T14:59:43",
"submit_report_requested": true,
"delivery_report_requested": true,
"view_report_requested": true
},
{
"message_id":"cccb9fc0-820c-47e0-9f8d-8a29f2f8dce8",
"from_connection": "",
"from_address": "",
"from_station": "",
"to_connection": "",
"to_address": "+36202222222",
"to_station": "",
"text": "Hello world 2",
"create_date": "2021-07-27T14:59:43",
"valid_until": "2021-08-03T14:59:43",
"time_to_send": "2021-07-27T14:59:43",
"submit_report_requested": true,
"delivery_report_requested": true,
"view_report_requested": true
},
{
"message_id": "395197a7-14bf-484b-97bc-ef25056b1669",
"from_connection": "",
"from_address": "",
"from_station": "",
"to_connection": "",
"to_address": "+36203333333",
"to_station": "",
"text": "Hello world 3",
"create_date": "2021-07-27T14:59:43",
"valid_until": "2021-08-03T14:59:43",
"time_to_send": "2021-07-27T14:59:43",
"submit_report_requested": true,
"delivery_report_requested": true,
"view_report_requested": true
}
]
}
Resposta HTTP recebida pelo exemplo de SMS em Delphi
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
Content-Type: application/json; charset=utf8
Last-Modified: Tue, 27 Jul 2021 14:31:15 GMT
Server: 10/10.3.123 Microsoft-HTTPAPI/2.0
User-Agent: OZEKI 10.3.123 (myozeki.com)
Date: Tue, 27 Jul 2021 12:59:42 GMT
Connection: close
{
"http_code": 200,
"response_code": "SUCCESS",
"response_msg": "Mensagens enfileiradas para entrega.",
"data": {
"total_count": 3,
"success_count": 3,
"failed_count": 0,
"messages": [
{
"message_id": "b984812c-6af0-47ac-83e6-c162b1743272",
"from_station": "%",
"to_address": "+36201111111",
"to_station": "%",
"text": "Hello world 1",
"create_date": "2021-07-27 14:59:43",
"valid_until": "2021-08-03 14:59:43",
"time_to_send": "2021-07-27 14:59:43",
"submit_report_requested": true,
"delivery_report_requested": true,
"view_report_requested": false,
"tags": [
{
"name": "Type",
"value": "SMS:TEXT"
}
],
"status": "SUCCESS"
},
{
"message_id": "cccb9fc0-820c-47e0-9f8d-8a29f2f8dce8",
"from_station": "%",
"to_address": "+36202222222",
"to_station": "%",
"text": "Hello world 2",
"create_date": "2021-07-27 14:59:43",
"valid_until": "2021-08-03 14:59:43",
"time_to_send": "2021-07-27 14:59:43",
"submit_report_requested": true,
"delivery_report_requested": true,
"view_report_requested": false,
"tags": [
{
"name": "Type",
"value": "SMS:TEXT"
}
],
"status": "SUCCESS"
},
{
"message_id": "395197a7-14bf-484b-97bc-ef25056b1669",
"from_station": "%",
"to_address": "+36203333333",
"to_station": "%",
"text": "Hello world 3",
"create_date": "2021-07-27 14:59:43",
"valid_until": "2021-08-03 14:59:43",
"time_to_send": "2021-07-27 14:59:43",
"submit_report_requested": true,
"delivery_report_requested": true,
"view_report_requested": false,
"tags": [
{
"name": "Type",
"value": "SMS:TEXT"
}
],
"status": "SUCCESS"
}
]
}
}
Como enviar SMS a partir do Delphi usando a API de SMS do Delphi (Tutorial em vídeo)
Este vídeo mostra como baixar o arquivo SendMultipleSms.delphi.zip desta página e como baixar seu conteúdo no Delphi Studio. Se você assistir ao vídeo, notará que o conteúdo do SendMultipleSms.delphi.zip é colocado na área de trabalho do Windows. Você também verá que clicamos duas vezes no arquivo de projeto SendMultipleSms.dproj para abrir o projeto.
Exemplo de SMS em Delphi: SendMultipleSms.dproj
Nesta solução, há apenas um projeto: SendMultipleSms.dproj e dois arquivos: SendMultipleSms.dpr e Ozeki.Libs.Rest.pas.
Depois que o SMS for enviado, é uma boa ideia verificar seu gateway de SMS para ver o que foi recebido. Você pode verificar o log abrindo os detalhes do usuário HTTP no console de gerenciamento do Ozeki SMS Gateway. O vídeo a seguir mostra o que procurar.
Resumo
Depois de ler esta descrição sobre como enviar vários SMS a partir do Delphi, você saberá como preparar um usuário da API HTTP no Ozeki SMS Gateway para esta solução. Usar este sistema ajuda você a controlar custos e acompanhar mensagens. Mensagens SMS recebidas, eventos de entrega serão apresentados na forma de eventos, e erros serão tratados adequadamente.
De forma alguma pare aqui, há muitos artigos no site da Ozeki dos quais você pode aprender. Passe para o próximo tutorial sobre Delphi Como agendar um SMS.
Baixe o Ozeki SMS Gateway agora e use-o para testar o que você aprendeu!