Como enviar SMS a partir do Delphi

A maneira mais simples de enviar SMS a partir do Delphi é usar a API de SMS HTTP/REST integrada do Ozeki SMS Gateway. Quando você usa essa API, enviará mensagens SMS fazendo uma requisição HTTP Post para o gateway de SMS. A requisição HTTP Post conterá uma mensagem formatada em JSON. O gateway de SMS enviará esse SMS para o telefone do destinatário e retornará uma resposta HTTP 200 OK para a sua requisição.

como enviar sms a partir do delphi
Figura 1 - Como enviar SMS a partir do 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 dos seus projetos.

SendSms.delphi
program SendSms;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils,
  Ozeki.Libs.Rest in '../Ozeki.Libs.Rest/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!';

    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. Depois de adicionar a unidade, você deve incluir a diretiva uses Ozeki.Libs.Rest in '../Ozeki.Libs.Rest/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, seja por uma conexão sem fio ou pela Internet.

Baixar SendSMS.delphi

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

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

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

diretório de envio de sms delphi
Figura 2 - O que está dentro de SendSms.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 SendSms.delphi.zip
  5. Abra o arquivo SendSms.dproj no Delphi Studio clicando duas vezes nele
  6. Inicie o aplicativo Ozeki SMS Gateway
  7. Execute o código Delphi SendSms.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.

Depois que o ambiente estiver 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 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 de SMS 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 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": "ae0d1fe5-7e93-4241-b31c-5b3ebf867c5b",
			"from_connection": "",
			"from_address": "",
			"from_station": "",
			"to_connection": "",
			"to_address": "+36201111111",
			"to_station": "",
			"text": "Olá mundo!",
			"create_date": "2021-07-27T14:22:12",
			"valid_until": "2021-08-03T14:22:12",
			"time_to_send": "2021-07-27T14:22:12",
			"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 06:58:42 GMT
Server: 10/10.3.123 Microsoft-HTTPAPI/2.0
User-Agent: OZEKI 10.3.123 (myozeki.com)
Date: Tue, 27 Jul 2021 12:22:12 GMT
Connection: close

{
  "http_code": 200,
  "response_code": "SUCCESS",
  "response_msg": "Mensagens enfileiradas para entrega.",
  "data": {
    "total_count": 1,
    "success_count": 1,
    "failed_count": 0,
    "messages": [
      {
        "message_id": "ae0d1fe5-7e93-4241-b31c-5b3ebf867c5b",
        "from_station": "%",
        "to_address": "+36201111111",
        "to_station": "%",
        "text": "Olá mundo!",
        "create_date": "2021-07-27 14:22:12",
        "valid_until": "2021-08-03 14:22:12",
        "time_to_send": "2021-07-27 14:22:12",
        "submit_report_requested": true,
        "delivery_report_requested": true,
        "view_report_requested": false,
        "tags": [
          {
            "name": "Type",
            "value": "SMS:TEXT"
          }
        ],
        "status": "SUCCESS"
      }
    ]
  }
}

Conecte seu gateway SMS à rede móvel e crie uma conta de usuário HTTP API

Assumimos que você já instalou o Ozeki SMS Gateway, e que você conectou-o à rede móvel. Para poder enviar SMS para um telefone móvel a partir do Delphi, você precisa configurar uma conta de usuário HTTP API no Ozeki SMS Gateway.

Vídeo 1 - Como configurar uma conta de usuário HTTP API (Tutorial em vídeo)

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 SendSms.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 SendSms.delphi zip é colocado na área de trabalho do Windows. Você também verá que clicamos duas vezes no arquivo de projeto SendSms.dproj para abrir o projeto.

Exemplo de SMS em Delphi: SendSms.dproj

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

Figura 3 - SendSms.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 3 - Enviando SMS com o código Delphi acima (Tutorial em vídeo)

Como verificar se o SMS foi enviado para a rede móvel

O passo final para verificar o procedimento é analisar os logs da conexão com a rede móvel. Pode ser necessário ativar o registro nos logs na configuração da conexão antes de enviar a mensagem para visualizá-los. Se o registro estiver ativado, você verá o número de telefone e o texto da mensagem que enviou.

Vídeo 4 - Como testar se a solicitação foi aceita pelo cliente SMPP (Tutorial em vídeo)

Como é receber uma mensagem SMS no Android (Tutorial em vídeo)

Neste vídeo, vamos mostrar como é receber uma mensagem SMS no Android. O vídeo tem apenas 18 segundos, mas você pode ver todo o processo nele. Ele começa com uma tela inicial comum do Android. Você verá a notificação do SMS e o aplicativo de Mensagens aberto com a mensagem visível.

Vídeo 5 - Mensagem SMS recebida no telefone móvel (Tutorial em vídeo)

Resumo

Este artigo mostrou a maneira mais simples de enviar SMS a partir do Delphi. Se você leu este tutorial, sabe como criar um usuário de API SMS HTTP no Ozeki SMS Gateway para poder enviar SMS a partir do Delphi. Uma das muitas vantagens desta solução é que o exemplo de SMS em Delphi fornecido pode ser usado e modificado por você em qualquer um de seus projetos.

Você pode encontrar mais documentos que oferecem outros códigos de programa em Delphi, aproveite todas as oportunidades e estude-os. Se quiser usar este serviço do Ozeki SMS Gateway em um círculo mais amplo, acesse o artigo Como baixar a última unidade de API SMS para Delphi do Github e saiba mais.

Baixe o Ozeki SMS Gateway agora e configure o sistema!

More information