SMS Delphi. Enviar SMS Delphi

SMS masivo desde 2002

El envío de SMS en Delphi es sencillo de integrar mediante la pasarela SMS HTTP de Altiria. Ofrecemos dos ejemplos, el primero utiliza IdHTTP y el segundo emplea TnetHTTPClient.

¿Cómo integrar el envío de SMS en Delphi?

Antes de integrar el envío de SMS con Delphi en su software, lo más conveniente es leer la documentación técnica de envío de SMS, API SMS. El protocolo de comunicaciones más sencillo para implementar es SMS HTTP aunque también puede utilizar web services SMS SOAP.

Los siguientes códigos son ejemplos funcionales que han sido probados con éxito, pero tenga en consideración que pueden resultar incompletos para integrar el envío de SMS masivos con Delphi en un entorno de producción. Para solucionar cualquier incidencia, se debe consultar la especificación técnica.

Código de ejemplo utilizando IdHTTP:

program HttpDelphiAltiria1;

// Copyright (c) 2018, Altiria TIC SL
// All rights reserved.
// El uso de este código de ejemplo es solamente para mostrar el uso de la pasarela de envío de SMS de Altiria
// Para un uso personalizado del código, es necesario consultar la API de especificaciones técnicas, donde también podrás encontrar
// más ejemplos de programación en otros lenguajes de programación y otros protocolos (http, REST, web services)
// https://www.altiria.com/api-envio-sms/


{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils, Classes, IdHTTP,System.WideStrUtils;

var
  DResultado,SUrl : String;
  Parametros : TStringList;
  IdHTTP1: TIdHTTP;

begin
 try
   //Se fija la URL sobre la que enviar la petición POST
   SUrl:='http://www.altiria.net/api/http';
   //Compone el mensaje a enviar
   //XX, YY y ZZ se corresponden con los valores de identificación del usuario en el sistema
   Parametros := TStringList.Create();
   Parametros.Add('cmd=sendsms');
   Parametros.Add('domainId=XX');
   Parametros.Add('login=YY');
   Parametros.Add('passwd=ZZ');
   Parametros.Add('dest=52xxxxxxxxx');
   Parametros.Add('dest=57yyyyyyyyy');
   Parametros.Add(UTF8Encode('msg=Mensaje de prueba'));
   //No es posible utilizar el remitente en América pero sí en España y Europa
   //Descomentar la línea solo si se cuenta con un remitente autorizado por Altiria
   //Parametros.Add('senderId=remitente');

   IdHTTP1:= TIdHTTP.Create(nil);

   //Se fija el tiempo máximo de espera para conectar con el servidor (5000)
   //Se fija el tiempo máximo de espera de la respuesta del servidor (60000)
   IdHTTP1.ConnectTimeout := 5000;
   IdHTTP1.ReadTimeout:=60000;

   IdHTTP1.Request.ContentType :='application/x-www-form-urlencoded';
   IdHTTP1.Request.Charset := 'UTF-8';
   IdHTTP1.Request.ContentEncoding := 'UTF-8';

   // Enviamos un mensaje, recibiendo en "DResultado" la respuesta del servidor
   DResultado:=IdHTTP1.Post(SUrl,Parametros);
   WriteLn(DResultado);

 except
   on E: Exception do
     if E.ClassName='EIdConnectTimeout' then
       WriteLn ('ERROR Connect Timeout')
     else if E.ClassName='EIdReadTimeout' then
       WriteLn ('ERROR Response Timeout')
     else
       Writeln(E.ClassName, ': ', E.Message);
 end;
 Parametros.Free;
 IdHTTP1.Free;
end.

Código de ejemplo utilizando TnetHTTPClient:

program HttpDelphiAltiria2;

// Copyright (c) 2018, Altiria TIC SL
// All rights reserved.
// El uso de este código de ejemplo es solamente para mostrar el uso de la pasarela de envío de SMS de Altiria
// Para un uso personalizado del código, es necesario consultar la API de especificaciones técnicas, donde también podrás encontrar
// más ejemplos de programación en otros lenguajes de programación y otros protocolos (http, REST, web services)
// https://www.altiria.com/api-envio-sms/

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils, Classes, System.Net.HTTPClient, System.Net.HTTPClientComponent;
var
  SUrl : String;
  client : TNetHTTPClient;
  response : IHTTPResponse;
  Parametros : TStringList;
begin
 try
   client := TNetHTTPClient.Create(nil);
   client.ContentType :='application/x-www-form-urlencoded';
   //Se fija la URL sobre la que enviar la petición POST
   SUrl:='http://www.altiria.net/api/http';
   //XX, YY y ZZ se corresponden con los valores de identificación del usuario en el sistema
   Parametros := TStringList.Create();
   Parametros.Add('cmd=sendsms');
   Parametros.Add('domainId=XX');
   Parametros.Add('login=YY');
   Parametros.Add('passwd=ZZ');
   Parametros.Add('dest=346xxxxxxxx');
   Parametros.Add('dest=346yyyyyyyy');
   Parametros.Add(UTF8Encode('msg=Mensaje de prueba'));
   //No es posible utilizar el remitente en América pero sí en España y Europa
   //Descomentar la línea solo si se cuenta con un remitente autorizado por Altiria
   //Parametros.Add('senderId=remitente');

   Response:=client.Post(SUrl,Parametros);

   if Response.StatusCode = 200 then
     WriteLn(Response.ContentAsString())
   else
     begin
       WriteLn('Código de error: ' + IntToStr(Response.StatusCode));
       WriteLn(Response.StatusText);
     end;
 except
   on E: ENetHTTPClientException do
     WriteLn ('ERROR Conexión.  ' + E.Message);

   on E: Exception do
     Writeln(E.ClassName, ': ', E.Message);
 end;
 Parametros.Free;
 Client.Free;
end.

Características adicionales del envío de SMS en Delphi

  • Sistema avanzado de control de crédito que realiza el aviso automático por email e impide quedarse sin créditos SMS de envío de forma inesperada.
  • Informes automáticos de envío de SMS, que permiten mantener un control periódico de los envíos de SMS.
  • Posibilidad de reenvío de SMS pendientes por falta de crédito. Si realizó un envío de SMS y no disponía de créditos SMS suficientes, los mensajes se quedan encolados en nuestros sistemas hasta que disponga de crédito, de forma que no necesita repetir el envío.