Como Receber um SMS em Delphi

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

como receber um sms em delphi
Figura 1 - Como Receber um SMS em Delphi

Código Delphi para receber sms

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.

ReceiveSms.delphi
program ReceiveSms;

{$APPTYPE CONSOLE}

{$R *.res}

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

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

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

    result := api.DownloadIncoming;

    Writeln(result.ToString);

    for message in result.Messages do
    begin
      Writeln(message.ToString);
    end;

    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 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 ReceiveSms.delphi

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

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

O arquivo ReceiveSms.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 ReceiveSms 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 recebimento de sms em delphi
Figura 2 - O que está dentro de ReceiveSms.delphi.zip

Como enviar SMS do Delphi (Passos simples)

Para enviar SMS do Delphi:

  1. Instale um usuário de API HTTP
  2. Ative "Log communication events" na guia Advanced
  3. Configure o Embarcadero Delphi Studio
  4. Baixe e extraia o arquivo ReceiveSms.delphi.zip
  5. Abra o arquivo ReceiveSms.dproj no Delphi Studio clicando duas vezes nele
  6. Inicie o aplicativo Ozeki SMS Gateway
  7. Execute o código Delphi ReceiveSms.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 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 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 do Delphi

Para enviar SMS do Delphi, seu Delphi terá que enviar 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 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 similar à mostrada abaixo. Observe que esta requisição contém apenas uma parte do cabeçalho HTTP, que contém toda a informação necessária para baixar cada mensagem de uma pasta específica.

GET /api?action=receivemsg&folder=inbox HTTP/1.1
Authorization: Basic aHR0cF91c2VyOnF3ZTEyMw==
Host: 127.0.0.1:9509
Accept: application/json
User-Agent: Mozilla/3.0 (compatible; Indy Library)
	

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. Também retornará uma estrutura codificada em JSON para fornecer detalhes úteis sobre a submissão da mensagem.

HTTP/1.1 200 OK
Transfer-Encoding: chunked
Content-Type: application/json; charset=utf8
Last-Modified: Tue, 27 Jul 2021 15:49:18 GMT
Server: 10/10.3.123 Microsoft-HTTPAPI/2.0
User-Agent: OZEKI 10.3.123 (myozeki.com)
Date: Tue, 27 Jul 2021 14:10:33 GMT

{
  "http_code": 200,
  "response_code": "SUCCESS",
  "response_msg": "",
  "data": {
    "folder": "inbox",
    "limit": "1000",
    "data": [
      {
        "message_id": "be5e98cf-2bcb-d8dc-94ae-aa909504afe7",
        "from_connection": "http_user@localhost",
        "from_address": "+36201111111",
        "from_station": "%",
        "to_connection": "http_user@localhost",
        "to_address": "http_user",
        "to_station": "%",
        "text": "Hello world 1",
        "create_date": "2021-07-27 16:06:02",
        "valid_until": "2021-08-03 16:06:02",
        "time_to_send": "2021-07-27 16:06:02",
        "submit_report_requested": true,
        "delivery_report_requested": true,
        "view_report_requested": true,
        "tags": [
          {
            "name": "Type",
            "value": "SMS:TEXT"
          }
        ]
      },
      {
        "message_id": "466d737f-68d5-f64d-84d8-ac0a3f950543",
        "from_connection": "http_user@localhost",
        "from_address": "+36202222222",
        "from_station": "%",
        "to_connection": "http_user@localhost",
        "to_address": "http_user",
        "to_station": "%",
        "text": "Hello world 2",
        "create_date": "2021-07-27 16:06:02",
        "valid_until": "2021-08-03 16:06:02",
        "time_to_send": "2021-07-27 16:06:02",
        "submit_report_requested": true,
        "delivery_report_requested": true,
        "view_report_requested": true,
        "tags": [
          {
            "name": "Type",
            "value": "SMS:TEXT"
          }
        ]
      },
      {
        "message_id": "36069eca-95c1-bced-8876-ece0dcd74acd",
        "from_connection": "http_user@localhost",
        "from_address": "+36203333333",
        "from_station": "%",
        "to_connection": "http_user@localhost",
        "to_address": "http_user",
        "to_station": "%",
        "text": "Hello world 3",
        "create_date": "2021-07-27 16:06:02",
        "valid_until": "2021-08-03 16:06:02",
        "time_to_send": "2021-07-27 16:06:02",
        "submit_report_requested": true,
        "delivery_report_requested": true,
        "view_report_requested": true,
        "tags": [
          {
            "name": "Type",
            "value": "SMS:TEXT"
          }
        ]
      }
    ]
  }
}	
	

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

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

Figura 2 - ReceiveSms.dproj

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

Depois de enviar o SMS, é uma boa ideia verificar o 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 você deve procurar.

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

Considerações finais

Ao seguir este tutorial, você aprendeu como usar o usuário HTTP SMS API no Ozeki SMS Gateway para receber SMS do Delphi. Este exemplo de SMS em Delphi é simples e fácil de configurar, sendo compatível com qualquer tipo de aplicação Delphi que você tenha. Este serviço pode tornar sua organização mais eficiente, pois permite entregar informações valiosas de forma rápida e suave.

Você pode precisar de uma API de SMS para Delphi com outras funcionalidades, então não pare de ler aqui. Encontre mais oportunidades no artigo Como baixar a última unidade da API de SMS para Delphi do GitHub.

Baixe o Ozeki SMS Gateway e evolua seu negócio agora!

More information