DLL ActiveX para enviar SMS

1. Descripción

Esta DLL te ofrece una serie de objetos y métodos con los que podrás realizar los envíos de forma muy sencilla sin tener que implementar un código complicado. 

2. Documentación

 

Creación del objeto e instancia:

Primero debemos iniciar una instancia de la DLL en nuestro programa, para posteriormente llamar a la clase

Dim oDMEnvio As Object
Set oDMEnvio = Nothing
Set oDMEnvio = CreateObject("dcXMLSend.XMLSendClass");

De esta forma, el objeto oDMEnvio, nos permitirá interactuar con la plataforma de Descom SMS.

 

Configuración de la autentificación

Definiremos la autentificación a la Plataforma de Descom Mensajes SMS, asignando los siguientes parámetros:

oDMEnvio.Usuario = “nombre_de_usuario”
oDMEnvio.Clave = “contraseña_de_acceso”

 

 
Configurar datos opcionales de envío:

Disponemos de varios parámetros para configurar el envío que queremos realizar, a continuación te exponemos los parámetros disponibles

Nombre
Parámetro
Descripción Posibles Valores Tipo de
Dato
Remitente

Remitente que vamos a utilizar en el envío.

 

String
idEnvioExt

Puede definir un id de envío, de esta forma Descom asociará los envíos con el mismo identificativo (máx 30 caracteres), para poder obtener reportes de un envío de bloques de mensajes.

  String
MaxNumSMS Número máximo de SMS que enviará en un solo mensaje. Si este campo es Cero, no tendrá ninguna limitación. 0, 1, 2, ... Int

Ejemplo:

oDMEnvio.Remitente = “Info”
oDMEnvio.idEnvioExt = “34"
oDMEnvio.MaxNumSMS=5

Agregar mensajes para su envío

La DLL dispone de una sub-clase para configurar los mensajes a enviar, se denomina, XMLMensajes, que a su vez dispone de 2 subclases para gestionar cada tipo de mensajes:

 

  • XMLMensajes.MensajesSMS

Es una colección con todos los mensajes a enviar o enviados. Para agregar un mensaje a la colección, disponemos de la función ADD la cual acepta los siguientes argumentos:

Nombre
Argumentos
Descripción Posibles Valores Tipo de
Dato
Id

Identificador del mensaje que vamos a enviar

 1, 2, 3, ...

Int
Destino

Número de móvil del destinatario del mensaje.

  String
Mensaje Texto del mensaje a enviar   String
Remitente Opcional; remitente para este mensaje   String

ControlarMensajesRepetidos

Control para no enviar mensajes repetidos por error.

True (por defecto); realizará dicho control, False; para deshabilitar este control

Bool

Ejemplo:

oDMEnvio.XMLMensajes.MensajesSMS.Add "1", "0034xxxxxxxxx", "SMS pruebas", ""
oDMEnvio.XMLMensajes.MensajesSMS.Add "2", "0034xxxxxxxxx", "SMS pruebas 2", "DescomSMS"
oDMEnvio.XMLMensajes.MensajesSMS.Add "2", "0034xxxxxxxxx", "SMS pruebas 2", "DescomSMS", False

  • XMLMensajes.MensajesWAP

Es una colección con todos los mensajes WAP a enviar o enviados. Para agregar un mensaje a la colección, disponemos de la función ADD la cual acepta los siguientes argumentos:

Nombre
Argumentos
Descripción Posibles Valores Tipo de
Dato
Id

Identificador del mensaje que vamos a enviar

 1, 2, 3, ...

Int
Destino

Número de móvil del destinatario del mensaje.

  String
Asunto Asunto del mensaje WAP   String

URL

Dirección URL con el contenido multimedia

 

String
Remitente Opcional; remitente para este mensaje   String

Ejemplo:

oDMEnvio.XMLMensajes.MensajesWAP.Add "3", "0034xxxxxxxxx", "Mi Foto", "<a href="http://www.mipagina.com/mifoto.jpg">http://www.mipagina.com/mifoto.jpg</a>", ""
oDMEnvio.XMLMensajes.MensajesWAP.Add "4", "0034xxxxxxxxx", "Melodia", "<a href="http://www.mipagina.com/cancion.mp3">http://www.mipagina.com/cancion.mp3</a>", ""

 

Enviar la petición

Una vez formalizada la autentificación y definido los mensajes, enviaremos los mismos con el siguiente comando:

DMSMS.SendXML "", ""

En el caso que solo queramos consultar el Saldo, sin enviar mensajes, ejecute:

DMSMS.getSaldo


Con esta función se establece la comunicación con nuestra plataforma y se procede a realizar la autenticación y posterior envío de mensajes.

 

Analizar la Respuesta

Respuesta de Autentificación y saldo

Para analizar el resultado del envío u obtención de saldo, debemos analizar la clase RXAutentificacion que nos ofrece las siguientes propiedades:

Nombre
Parámetro
Descripción Posibles Valores Tipo de
Dato
Resultado

Resultado de la autentificación en la plataforma

  • 1; si es correcto
  • 0; si no se a llevado acabo a autentificación.
String
Comentario

Texto descriptivo del error al conectar con la plataforma

  String
Saldo Saldo actual de la cuenta, si ha autentificado correctamente en la plataforma Descom SMS 0, 1, 2, ... Int

IdEnviodm

Si hemos enviado varios mensajes en bloque, ver: IdEnvioext, con esta propiedad obtenemos el identificativo del envío de mensajes dentro de la plataforma Descom SMS, que podremos utilizar para posteriormente recuperar el reporte de entrega de este envío de mensajes.

  String

Respuesta de envíos de mensajes globales

La clase dcXMLSend.XMLSendClass, contiene los siguientes parámetros globales para determirar cuantos mensajes han sido enviados correctamente:

Nombre
Parámetro
Descripción Posibles Valores Tipo de
Dato
TotalMensajesEnviados

Devuelve el número de mensajes que hemos enviado

0, 1, 2, ... Int

TotalMensajesEnviadosOK

Número de mensajes enviados correctamente.

0, 1, 2, ... Int

TotalMensajesEnviadosError

Número de mensajes que no se pueden envíar por algún error. 0, 1, 2, ... Int

TotalCreditosGastados

Créditos gastados en el envío de los mensajes

  String

Respuesta de cada mensaje

Tanto XMLMensajes.MensajesSMS como XMLMensajes.MensajesWAP son colecciones de los mensajes que hemos enviado. Para comprobar mensaje a mensaje su estado de envío, podemos recorrer dicha colección y comprobar en cada mensaje los siguientes parámetros:

Nombre
Parámetro
Descripción Posibles Valores Tipo de
Dato
Resultado

Si el mensaje ha podido enviarse o no

  • 1; se envío correctamente
  • 0; error en el envío
Int

Comentario

Descripción del error de envío del mensaje.

  String

iddm

Identificativo único del mensaje enviado en la plataforma Descom SMS. Con este identificativo, puede posteriormente comprobar el estado de entrega del mensaje.

  String

Destino

Número de móvil del destinatario

  String
Key Identificativo que se asigno en el momento de agregar el mensaje en la cola.   String

3. Ejemplos y Descargas

Pulsa aquí para descargar la DLL de Descom Mensajes SMS, documentación y ejemplos de uso.

 

Ejemplo en VB .NET

Dim DMSMS As Object 
DMSMS = CreateObject ("dcXMLSend.XMLSendClass") 
 
DMSMS.Usuario = “nombre_de_usuario” 
DMSMS.Clave = “contraseña_de_acceso” 
DMSMS.Remitente = "Remitente personalizado"
DMSMS.XMLMensajes.MensajesSMS.Add ("1", "0034xxxxxxxxx", "SMS pruebas", "")
DMSMS.XMLMensajes.MensajesWAP.Add ("4", "0034xxxxxxxxx", "Melodia", "<a href="http://www.mipagina.com/cancion.mp3">http://www.mipagina.com/cancion.mp3</a>", "")
DMSMS.SendXML ("", "") 
 
If DMSMS.RXAutentificacion.Resultado="1" Then 
            Dim MSG As Object 
            For Each MSG In DMSMS.XMLMensajes.MensajesSMS 
                        If MSG.Resultado Then 
                                   MsgBox ("OK: Mensaje (" & MSG.Key & ") enviado.",, "Envío Correcto") 
                        Else 
                                   MsgBox ("ERROR: Mensaje (" & MSG.Key & "): " & MSG.Comentario, , "Envío Fallido ") 
                        End If 
            Next 
Else 
           MsgBox (DMSMS.RXAutentificacion.Comentario, , "Error de Acceso") 
End If

 

Ejemplo en C++

//Incluimos la cabecera de la DLL 
#import "C:\Windows\System32\dcXMLSend.dll" 
 
 
// Inicializamos la DLL 
CoInitialize(NULL); 
CLSID clsid; 
HRESULT hr = CLSIDFromProgID(L"dcXMLSend.XMLSendClass", &clsid); 
 
if(FAILED(hr)) { 
     MessageBox(NULL, _T("Debe registrar la DLL regsvr32 dcXMLSend.dll."), _T("Error"), MB_OK); 
     return -1; 
} 
 
dcXMLSend::_XMLSendClassPtr pXlApp; 
 
hr = CoCreateInstance(clsid, NULL, CLSCTX_ALL, IID_IDispatch, (void **)&pXlApp); 
if(FAILED(hr)) { 
      MessageBox(NULL, _T("No es posible cargar la Dll dcXMLSend.dll."), _T("Error"), MB_OK); 
      return -2; 
} 
 
// Configuramos el acceso a la plataforma Descom Mensajes 
pXlApp->Usuario="usuario"; 
pXlApp->Clave="contraseña"; 
 
BSTR vacio=SysAllocString(L""); 
VARIANT_BOOL cero=0; 
BSTR id=SysAllocString(L"1"); 
// Agregamos un mensaje 
BSTR destino=SysAllocString(L"xxx"); 
BSTR mensaje=SysAllocString(L"texto del mensaje"); 
dcXMLSend::_XMLMensajesPtr MENSAJES; 
pXlApp->get_XMLMensajes(&MENSAJES) ; 
MENSAJES->Add(&id,&destino,&mensaje); 
VARIANT_BOOL h=0; 
 
 
// Conectamos con la Platafroma de Descom Mensajes 
pXlApp->SendXML(&vacio,&vacio,&cero); 
 
// Obtenemos el resultado de la Autentificación 
dcXMLSend::_clsRXAutentificacionPtr rx; 
pXlApp->get_RXAutentificacion(&rx); 
 
BSTR result; 
rx->get_Resultado(&result); 
 
if (wcscmp(result,L"1")==0){ 
      // Autentificación Correcta 
     MessageBox(NULL, _T("Saldo de la cuenta: ") + rx->Saldo + _T(" créditos."), _T("Autentificacion Correcta"), MB_OK); 
      int c=MENSAJES->Count; 
 
      for (int i=1;i<=c;i++){ 
           VARIANT v2; 
           v2.vt = VT_I4; 
           v2.lVal = i; 
           dcXMLSend::_XMLMensajePtr MENSAJE; 
           MENSAJES->get_Item(&v2,&MENSAJE); 
           MessageBox(NULL, _T("Resultado: ") + MENSAJE->Comentario, _T("Envio -> ") + MENSAJE->Destino, MB_OK); 
      } 
}else{ 
     // Autentificación Incorrecta 
      MessageBox(NULL, rx->Comentario, _T("ERROR"), MB_OK); 
}

4. Gráfico

Interfaz DLL para enviar SMS