Para integrar el envío de SMS con Delphi en tu propio 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 el envío de SMS es HTTP.
Los siguientes códigos son ejemplos funcionales que han sido probados con éxito pero pueden resultar incompleto para integrar el envío de SMS masivo con Delphi. Para solucionar cualquier incidencia, se debe consultar la especificación técnica. Si tienes problemas en integración, consulta nuestra página de preguntas frecuentes de integración de envío de SMS.
Código de ejemplo utilizando IdHTTP
program HttpDelphiAltiria1;
// Copyright (c) 2021, 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/
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 //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('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');
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;
// 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) 2021, 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'; //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('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.
Lista de tareas detallada, checklist, para asegurarte que no se olvida nada importante en la integración de API SMS. Independiente del lenguaje de programación elegido.