Como agendar um SMS em Delphi

A maneira mais simples de enviar SMS a partir do Delphi é usar a API de SMS HTTP/Rest integrada do Ozeki SMS Gateway. Ao usar esta API, você enviará mensagens SMS através de uma solicitação HTTP Post para o gateway de SMS. A solicitação HTTP Post irá conter uma mensagem formatada em formato json. O gateway de SMS irá enviar este SMS para o telefone do destinatário e retornará uma resposta HTTP 200 OK para sua solicitação.

como agendar um sms em delphi
Figura 1 - Como agendar um SMS em Delphi

Código Delphi para enviar SMS para celular

O exemplo de código SMS em Delphi abaixo demonstra como você pode enviar SMS usando a API de SMS HTTP Rest 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 de seus projetos.

SendScheduledSms.delphi
program SendScheduledSms;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils,
  Ozeki.Libs.Rest in 'Ozeki.Libs.Rest.pas';

var configuration : Ozeki.Libs.Rest.Configuration;
var msg : Ozeki.Libs.Rest.Message;
var api : Ozeki.Libs.Rest.MessageApi;
var result : MessageSendResult;
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';

    msg := Ozeki.Libs.Rest.Message.Create;
    msg.ToAddress := '+36201111111';
    msg.Text := 'Olá mundo!';
    msg.TimeToSend := StrToDateTime('27/07/21 16:00:00');

    api := Ozeki.Libs.Rest.MessageApi.Create(configuration);

    result := api.SendMessage( msg );

    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 a unidade ser adicionada, você deve colocar 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 sem fio ou pela Internet.

Baixar SendScheduledSms.delphi

O código-fonte explicado neste artigo pode ser baixado, usado e modificado gratuitamente.
Download: SendScheduledSms.delphi.zip (12.4Kb)

O que está no arquivo SendScheduledSms.delphi.zip?

O arquivo SendScheduledSms.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 SendScheduledSms no zip, que contém o código de exemplo para mostrar como enviar um SMS. Este código de exemplo está listado abaixo.

enviar múltiplos sms delphi diretório
Figura 2 - O que está dentro de SendScheduledSms.delphi.zip

Como enviar SMS a partir do Delphi (Passos simples)

Para enviar SMS a partir do Delphi:

  1. Instale um usuário de API HTTP
  2. Ative "Log communication events" na aba Advanced
  3. Configure o Embarcadero Delphi Studio
  4. Baixe e extraia o arquivo SendScheduledSms.delphi.zip
  5. Abra o arquivo SendScheduledSms.dproj no Delphi Studio clicando duas vezes nele
  6. Inicie o aplicativo Ozeki SMS Gateway
  7. Execute o código Delphi SendScheduledSms.dpr no Delphi Studio
  8. Verifique os logs para ver se o SMS foi enviado
Instale o Ozeki SMS Gateway e crie um usuário de API HTTP

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 sua conexão com a rede móvel está funcionando. O passo final para preparar seu ambiente é criar um usuário de API HTTP para SMS. Crie um usuário com o nome "http_user" e senha "qwe123" para fazer o exemplo funcionar sem modificações.

Após o ambiente estar configurado, você pode executar seu código Delphi.

URL da API HTTP para enviar SMS a partir do Delphi

Para enviar SMS a partir do Delphi, seu Delphi terá que fazer uma solicitaçã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 o número do destinatário, o horário para enviar o SMS e o texto da mensagem.

POST /api?action=sendmsg HTTP/1.0
Connection: keep-alive
Content-Type: application/json
Content-Length: 412
Authorization: Basic aHR0cF91c2VyOnF3ZTEyMw==
Host: 127.0.0.1:9509
Accept: application/json
User-Agent: Mozilla/3.0 (compatible; Indy Library)

{
	"messages": [ 
		{
			"message_id": "910663ad-85d8-44cc-aad3-8a5da4024148",
			"from_connection": "",
			"from_address": "",
			"from_station": "",
			"to_connection": "",
			"to_address": "+36201111111",
			"to_station": "",
			"text": "Hello world!",
			"create_date": "2021-07-27T15:35:39",
			"valid_until": "2021-08-03T15:35:39",
			"time_to_send": "2021-07-27T14:00:00",
			"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 submissão do SMS foi bem-sucedida ou não. Ela também retornará uma estrutura codificada em JSON para fornecer detalhes úteis sobre a submissão da mensagem.

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf8
Last-Modified: Tue, 27 Jul 2021 15:09:55 GMT
Server: 10/10.3.123 Microsoft-HTTPAPI/2.0
User-Agent: OZEKI 10.3.123 (myozeki.com)
Date: Tue, 27 Jul 2021 13:35:39 GMT
Connection: close

{
  "http_code": 200,
  "response_code": "SUCCESS",
  "response_msg": "Messages queued for delivery.",
  "data": {
    "total_count": 1,
    "success_count": 1,
    "failed_count": 0,
    "messages": [
      {
        "message_id": "910663ad-85d8-44cc-aad3-8a5da4024148",
        "from_station": "%",
        "to_address": "+36201111111",
        "to_station": "%",
        "text": "Hello world!",
        "create_date": "2021-07-27 15:35:39",
        "valid_until": "2021-08-03 15:35:39",
        "time_to_send": "2021-07-27 14:00:00",
        "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 SendScheduledSms.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 arquivo zip SendScheduledSms.delphi é colocado na área de trabalho do Windows. Você também verá que clicamos duas vezes no arquivo de projeto SendScheduledSms.dproj para abrir o projeto.

Vídeo 1 - Como baixar e executar o projeto de exemplo (Tutorial em vídeo)

Exemplo de SMS em Delphi: SendScheduledSms.dproj

Nesta solução, há apenas um projeto: SendScheduledSms.dproj, e dois arquivos: SendScheduledSms.dpr e Ozeki.Libs.Rest.pas.

Figura 3 - SendScheduledSms.dproj

Como verificar se o SMS foi aceito pelo usuário HTTP

Após o SMS ter sido submetido, é uma boa ideia verificar seu gateway SMS, para ver o que foi recebido. Você pode verificar o log abrindo os detalhes do usuário HTTP a partir do console de gerenciamento do Ozeki SMS Gateway. O vídeo a seguir mostra o que procurar.

Vídeo 2 - Enviando SMS com o código Delphi acima (Tutorial em vídeo)

Para resumir

Este artigo foi escrito para ensiná-lo a enviar SMS agendados a partir do Delphi usando o usuário da API HTTP do Ozeki SMS Gateway. Este exemplo de SMS em Delphi pode ser usado em qualquer aplicação Delphi, para garantir que atenda às suas expectativas. Ele oferece chamadas de método bem escritas e adequadas para enviar um SMS e uma classe SMS bem projetada para permitir que você configure os parâmetros do SMS.

Se você achar este artigo útil - e tenho certeza que sim - não pare por aqui, encontre mais para ler na página da Ozeki. Confira o tutorial Delphi sobre Como receber um SMS.

Para aproveitar o que você aprendeu, baixe o Ozeki SMS Gateway agora!

More information