Enviar SMS, recibir SMS y contestar SMS

Area de desarrolladores SMS: Como integrar la funcionalidad de envío de SMS, mensajes a moviles, en las aplicaciones

DLL ActiveX | Cómo realizar envíos diferidos de SMS mediante ActiveX

1. Programar el envío de SMS

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.  En este documento explicamos como realizar un envío en diferido o programarlo a determinadas fechas.

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 les 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 está forma podrá agregar nuevos mensajes a una programación, siempre que tenga este mismo identificativo.

  String
MaxNumSMS Número máximo de SMS que enviará en un solo mensaje. Si este campo es Cero, no tendrá ninguna limitación, salvo las impuestas por el protocolo (actualmente 99) 0, 1, 2, ... Int

Ejemplo:

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

Agregar mensajes en la programación

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>", ""

 

Creación de la programación.

Para programar el envío, debemos crear una clase dcXMLSend.Programacion, tal como se muestra en este ejemplo:

Dim Prog As Object
Set Prog = Nothing
Set Prog = CreateObject("dcXMLSend.Programacion");

Para iniciar el objeto, y dependiendo del tipo de programación de los mensajes que deseemos, realizaremos una de estas llamadas:
 

  • Enviar SMS una sola vez (diferido):

Set Prog = sms.programadoUnaSolaVez(nombreProgramacion, fecha)

  • nombreProgramacion (string); el nombre que deseamos que tenga dicha programación
  • fecha (date); la fecha y hora en las que se enviará el mensaje.
  • Enviar SMS Diariamente:

Set Prog = sms.programadoUnaSolaVez(nombreProgramacion, fecha)

  • nombreProgramacion (string); el nombre que deseamos que tenga dicha programación
  • fecha (date); la fecha y hora en las que se comenzará a enviar los mensajes. La hora determina la hora de cada envío.
  • Enviar SMS Semanalmente:

Set Prog = sms.programadoUnaSolaVez(nombreProgramacion, fecha, diaSemana)

  • nombreProgramacion (string); el nombre que deseamos que tenga dicha programación
  • fecha (date); la fecha y hora en las que se comenzará a enviar los mensajes. La hora determina la hora de cada envío.
  • diaSemana (integer); día de la semana en la que se enviaran el mensaje (0=Lunes ... 6=Domingo)
  • Enviar SMS Mensualmente:

Set Prog = sms.programadoUnaSolaVez(nombreProgramacion, fecha, diaMes)

  • nombreProgramacion (string); el nombre que deseamos que tenga dicha programación
  • fecha (date); la fecha y hora en las que se comenzará a enviar los mensajes. La hora determina la hora de cada envío.
  • diaMes (integer); día del mes en la que se enviarán el mensaje (1 .. 31)
  • Enviar SMS Anualmente:

Set Prog = sms.programadoUnaSolaVez(nombreProgramacion, fecha, diaMes, Mes)

  • nombreProgramacion (string); el nombre que deseamos que tenga dicha programación
  • fecha (date); la fecha y hora en las que se comenzará a enviar los mensajes. La hora determina la hora de cada envío.
  • diaMes (integer); día del mes en la que se enviarán el mensaje (1 .. 31)
  • Mes (integer); mes en el que se envía los mensajes (1 .. 12)




Una vez inciada el objecto Prog, podemos definir sobre él, los siguientes parametros:

  • Prog.ProgAvisar (boolean); avisar por correo cada vez que se produzca el envío de un mensaje programado.
  • Prog.ProgFechaFinal (date); especifique aquí cuando desea que se finalice la programación de los mensajes.

Es posible que una vez creemos una programación, queramos agregar más mensajes a la misma programación, para ello debemos enviar el mismo campo IdEnvioext, esto hará que en una previa programación con dicho ID, agreguemos nuevos mensajes.
 
IMPORTANTE: en este caso solo se agregan los nuevos mensajes en la programación, no se modifican las propiedades.

 

Enviar la petición

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

DMSMS.SendXML "", "",,Prog


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

 

Analizar la Respuesta

Respuesta de Autentificación y saldo

Para analizar el resultado de la programación, 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

Respuesta de la programación

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

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

Devuelve si la programación se ha creado correctamente

  • true, si se creo
  • false; en caso de error
Bool

ResultProgramacionId

Identificativo único de la porgramación

0, 1, 2, ... long

ResultProgramacionMsgOk

Número de mensajes programados correctamente. 0, 1, 2, ... Int

ResultProgramacionMsgErr

Número de mensajes que no se han agregado en la programación.

0, 1, 2, ... Int

 

3. Ejemplos y Descargas

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

 

Ejemplo en VB .NET

    'Crear Clase 
    Dim DMSMS As New dcXMLSend.XMLSendClass 
 
    'Definición de programación 
    Dim Programacion As dcXMLSend.Programacion 
    If Me.chkProgramacion.Value = 1 Then 
        Dim fechaInicio As Date 
        On Error Resume Next 
        fechaInicio = CDate(frmCProgramacion.txtFechaInicio.Text & " " & frmCProgramacion.txtHora.Text) 
        If Err Then 
            MsgBox "Error: fecha de programación incorrecta.", vbCritical, "Error" 
            Exit Sub 
        End If 
        On Error GoTo 0 
        Select Case frmCProgramacion.cmbRepeticion.ListIndex 
            Case 0 
                Set Programacion = DMSMS.programadoUnaSolaVez(frmCProgramacion.txtNombre.Text, fechaInicio) 
            Case 1 
                Set Programacion = DMSMS.programadoDiariamente(frmCProgramacion.txtNombre.Text, fechaInicio) 
            Case 2 
                Set Programacion = DMSMS.programadoSemanalmente(frmCProgramacion.txtNombre.Text, fechaInicio, frmCProgramacion.cmbDiaSemana.ListIndex) 
            Case 3 
                Set Programacion = DMSMS.programadoMensualmente(frmCProgramacion.txtNombre.Text, fechaInicio, frmCProgramacion.txtDiaMes.Text) 
            Case 4 
                Set Programacion = DMSMS.programadoAnualmente(frmCProgramacion.txtNombre.Text, fechaInicio, frmCProgramacion.txtDiaMes.Text, frmCProgramacion.cmbMes.ListIndex + 1) 
        End Select 
        If Not Programacion Is Nothing Then 
            Programacion.ProgAvisar = frmCProgramacion.chkAvisar.Value = 1 
            If frmCProgramacion.txtFechaFin.Enabled And frmCProgramacion.txtFechaFin.Text <> "" Then 
                Dim fechaFin As Date 
                On Error Resume Next 
                fechaFin = CDate(frmCProgramacion.txtFechaFin.Text) 
                If Err Then 
                    MsgBox "Error: fecha fin de programación incorrecta.", vbCritical, "Error" 
                    Exit Sub 
                Else 
                    Programacion.ProgFechaFinal = fechaFin 
                End If 
                On Error GoTo 0 
            End If 
        End If 
    End If 
 
    'Asignar acceso a plataforma Descom Mensajes 
    DMSMS.Usuario = Me.txtUsuario.Text 
    DMSMS.Clave = Me.txtClave.Text 
 
    'Crear Mensaje 
    DMSMS.XMLMensajes.MensajesSMS.Add 1, Me.txtDestinatario.Text, Me.txtMensaje.Text, Me.txtRemitente.Text 
 
    'Id Envío 
    If Me.txtIdEnvio.Text <> "" Then DMSMS.IdEnvioext = Me.txtIdEnvio.Text 
 
    'Enviar 
    DMSMS.SendXML "", "", , Programacion 
 
    'Verificar acceso 
    If DMSMS.RXAutentificacion.resultado = "1" Then 
        If Me.chkProgramacion.Value = 1 Then 
            MsgBox "Saldo de la cuenta: " & DMSMS.RXAutentificacion.Saldo _ 
            & vbCrLf & "ID Envio Descom: " & DMSMS.IdEnviodm _ 
            & vbCrLf & "ID Envio DLL: " & DMSMS.IdEnvioext _ 
            & vbCrLf & "Mensajes Programado: " & IIf(DMSMS.ResultProgramacion, "Correctamente", "Error: revise que la programación es correcta.") _ 
            & vbCrLf & "Identificativo de la programación: " & DMSMS.ResultProgramacionId _ 
            & vbCrLf & "Mensajes programados correctamente: " & DMSMS.ResultProgramacionMsgOk _ 
            & vbCrLf & "Mensajes programados con errores: " & DMSMS.ResultProgramacionMsgErr _ 
            , vbInformation, "Informe" 
        Else 
            MsgBox "Saldo de la cuenta: " & DMSMS.RXAutentificacion.Saldo _ 
            & vbCrLf & "ID Envio Descom: " & DMSMS.IdEnviodm _ 
            & vbCrLf & "ID Envio DLL: " & DMSMS.IdEnvioext _ 
            & vbCrLf & "Total mensajes: " & DMSMS.TotalMensajesEnviados _ 
            & vbCrLf & "Total mensajes enviaros: " & DMSMS.TotalMensajesEnviadosOK _ 
            & vbCrLf & "Total errores: " & DMSMS.TotalMensajesEnviadosError _ 
            & vbCrLf & "Créditos gastados: " & DMSMS.TotalCreditosGastados _ 
            , vbInformation, "Informe" 
            Dim MSG As MensajeSMS 
            For Each MSG In DMSMS.XMLMensajes.MensajesSMS 
                If MSG.resultado Then 
                    MsgBox "Mensajes " & MSG.Key & ": " & MSG.Comentario & vbCrLf & "Id envio: " & MSG.Iddm, vbInformation 
                Else 
                    MsgBox "Mensajes " & MSG.Key & ": " & MSG.Comentario & vbCrLf & "Id envio: " & MSG.Iddm, vbExclamation 
                End If 
            Next 
        End If 
    Else 
        MsgBox DMSMS.RXAutentificacion.Comentario, vbCritical, "Error de Acceso" 
    End If 
    'Vaciamos la colección de mnesajes para no replicar envíos 
    DMSMS.XMLMensajes.MensajesSMS.Clean

 

 

4. Gráfico

Interfaz DLL para enviar SMS

By

Categoría:

DLL ActiveX | Como obtener confirmación de estado de SMS enviados mediante ActiveX

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.  En este documento explicamos como consultar los reportes de los envíos realizados en Descom SMS.

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 filtro de búsqueda:

Podemos obtener el reporte de envíos, en función de unos criterios de búsqueda, para ello debemos crear una instancia de la clase dcXMLSend.ReportFiltro, con la cual definiremos las condiciones de búsquedas. Esta clase admite las siguientes propiedades que usaremos para definir los distintos criterios de búsqueda:

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

Código de envío que deseamos obtener.

 

Long
PeriodoFecha

Periodo de fecha de la que vamos a obtener los mensajes.

  • Dia (por defecto)
  • Semana
  • Mes
  • Todo
  • SeleccionarRangoFecha (ver siguiente)
ePeriodo

AsignarPeriodoFecha

Función con 2 parámetros, Fecha Inicio y Fecha Fin

Esta función requiere de estos 2 argumentos de tipo date Date

MaxNumeroResultados

Máximo número de mensajes a obtener en una sola consulta.

1, 2, ..., 99 (por defecto 15) Int
nDesde

Punto desde donde obtener registros, comenzando en 1

1, 2, 3, ... Long
Orden

Define el orden en que se mostrará los resultados por fecha

  • Ascendente
  • Descendente
eOrder

 

Enviar la petición

Una vez formalizada la autentificación y definido los filtros de los envíos a obtener, solicitaremos la información de los reportes con el siguiente comando ReportEnvio:

Esta función retorna un objeto de la clase ReportResultEnvios, la cual contiene toda la información de retorno de la solicitud.

 

Dim Filtro As Object 
Set Filtro = CreateObject("dcXMLSend.ReportFiltro")
'Definir aquí los filtros
Dim resultado As ReportResultEnvios
Set resultado = sms.ReportEnvio (filtro)

 

Analizar la Respuesta

Respuesta de Autentificación y saldo SMS

Para analizar el resultado de la consulta, debemos analizar la clase ReportResultEnvios que hemos obtenido, estos son los parámetros de dicha clase:

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

Con este parámetro averiguaremos si nos hemos autentificado correctamente en la plataforma

  • true;  correcto
  • false; en caso de error
Bool
Comentario

Texto descriptivo del error al conectar con la plataforma

  String
HayError

Nos dirá si hay algún tipo de error en la consulta

  • true; hay un error
  • false; sin errores
Bool

ErrorDescripcion

Texto descriptivo del error en la consulta

  String

nTotal

Número de envíos localizados en la plataforma según criterios.

0, 1, 2, ... Long

nFilas

Número de envíos obtenidos en la petición.

0, 1, 2, ... Int

Envios

Colección de envíos obtenidos.

  Collection

La colección Envios, nos devolverá cada uno de los envíos, mediante la siguiente clase; ReportResultEnviosItem
 
La clase ReportResultEnviosItem, dispone de los siguientes parámetros de lectura:

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

idReport

Identificativo del reporte en la plataforma

1, 2, 3, ... String

NM

Número de mensaje en la colección.

1, 2, 3, ... String

FechaEnviado

Fecha en la que se realizo el envío   String
IdEnvio

Identificativo del envío en la plataforma

  String
TotalMensajes Número total de mensajes enviados.   String
TotalCreditos Créditos consumidos en el envío.   String
App Nombre de la aplicación de envío   String
MConfirmados

Total de mensajes enviados correctamente de los que se ha recibido notificación de entrega a operador o móvil.

  String
MSinConfirmacion Total de mensajes enviados correctamente de los que aún no se ha recibido confirmación de entrega.   String
MErrores Total de mensaje enviados correctamente de los que hemos recibido notificación de rechazo o error en la entrega.    String
MSinInformacion Total de mensajes sin información de envío o pendientes de enviar.    String

 

3. Ejemplos y Descargas

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

 

Ejemplo en VB 6

Me.ListView1.ListItems.Clear 
Me.lblInfo.Caption = "" 
Dim sms As New dcXMLSend.XMLSendClass 
 
'Asignar datos de Autentificación 
sms.Usuario = Me.txtUsuario.Text 
sms.Clave = Me.txtPassword.Text 
sms.CodCli = Me.txtIdCli.Text 
 
'Crear filtro 
Dim filtro As New dcXMLSend.ReportFiltro 
Select Case Me.cmbPeriodo.ListIndex 
    Case 0 
       filtro.PeriodoFecha = Dia 
    Case 1 
       filtro.PeriodoFecha = Semana 
    Case 2 
       filtro.PeriodoFecha = Mes 
    Case 3 
       filtro.PeriodoFecha = Todo 
    Case 4 
       filtro.PeriodoFecha = SeleccionarRangoFecha 
       filtro.AsignarPeriodoFecha Me.txtFechaInicio.Text, Me.txtFechaFin.Text 
End Select 
If txtNFilas.Text <> "" Then filtro.MaxNumeroResultados = txtNFilas.Text 
If txtNDesde.Text <> "" Then filtro.nDesde = txtNDesde.Text 
Select Case Me.cmbOrden.ListIndex 
    Case 0 
       filtro.Ordenacion = Ascendente 
    Case 1 
    filtro.Ordenacion = Descendente 
End Select 
 
Dim resultado As ReportResultEnvios 
Dim n As ReportResultEnviosItem 
 
Screen.MousePointer = vbHourglass 
Set resultado = sms.ReportEnvio(filtro) 
Screen.MousePointer = vbDefault 
If resultado.Autentificado Then 
    If resultado.HayError = False Then 
       Me.lblInfo.Caption = resultado.nFilas & " mensajes de un total de " & resultado.nTotal & " mensajes." 
       For Each n In resultado.Envios 
          Dim lt As ListItem 
          Set lt = Me.ListView1.ListItems.Add(, , n.IdReport) 
          lt.SubItems(1) = n.Estado 
          lt.SubItems(2) = n.FechaEnviado 
          lt.SubItems(3) = n.TotalMensajes 
          lt.SubItems(4) = n.MConfirmados 
          lt.SubItems(5) = n.MSinConfirmacion 
          lt.SubItems(6) = n.MSinInformacion 
          lt.SubItems(7) = n.MErrores 
       Next 
    Else 
       MsgBox resultado.ErrorDescripcion 
    End If 
Else 
    MsgBox resultado.Comentario 
End If

 

 

4. Gráfico DLL SMS ActiveX

Interfaz DLL para enviar SMS

By

Categoría: