SMS Delphi. Enviar SMS Delphi
Aquí puedes encontrar dos código de ejemplo para el envío de SMS en Delphi mediante la pasarela HTTP de envío de SMS de Altiria, el primero utiliza IdHTTP y el segundo emplea TnetHTTPClient. 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 aunque también puedes utilizar web services.
Los siguientes códigos son ejemplos funcionales que han sido probados con éxito pero pueden resultar incompleto para integrar el envío de SMS 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) 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=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; 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.
Otros protocolos de envío de SMS
Envío de landing web móvil parametrizada
Además del envío de un SMS, la pasarela SMS gateway de Altiria te ofrece la posibilidad de enviar una página web móvil, SMS landing, con información adicional sin las restricciones de espacio de un SMS o con un formulario de contacto para recibir respuesta de tus clientes por SMS o usuarios o enviarles encuestas por SMS, formularios de satisfacción o firma de contratos.
Además de poder parametrizar el texto del mensaje SMS, Altiria también te permite enviar parámetros adicionales en la petición de envío para parametrizar el contenido de la web y que tus usuarios y clientes reciban un servicio personalizado.
Cobertura internacional
Siempre se debe usar el formato de numeración internacional, incluyendo el código de país. Por ejemplo, para un número de móvil de España sería 346XXXXXXXX. En el ejemplo de código anterior, se está enviando un SMS de prueba a dos teléfonos de España, 346xxxxxxxx y 346yyyyyyyy, que deberán ser sustituidos por los teléfonos con los que se quiera probar, siempre incluyendo el prefijo internacional. Ofrecemos la mejor cobertura internacional con conexiones directas de máxima calidad.
Características adicionales del envío de SMS en Delphi
- Remitente personalizado: Personalización en el envío de SMS con Delphi del remitente de origen por una cadena de texto, por ejemplo, el nombre de su empresa.(*)
- Confirmación de entrega: Conozca la fecha y hora en la que se ha recibido el SMS enviado o las causas por las que no se ha recibido.
- Sistema avanzado de control de crédito con aviso automático por email que impide quedarse sin crédito de envío de forma inesperada.(*)
- Informes automáticos de envío de SMS y confirmación de entrega, permiten mantener un control periódico de los envíos de SMS en Delphi.
- Posiblidad de reenvío de SMS pendientes por falta de crédito. Si realizó un envío de SMS mediante Delphi y no tenía crédito, los mensajes se quedan encolados en nuestros sistemas hasta que disponga de crédito, de forma que no necesita repetir el envío.
(*) La disponibilidad de la confirmación de entrega al usuario y del remitente personalizado depende de cada país, consúltenos para su país de interés.