Como Configurar un Servidor de Envío de SMS en eFactory Software ERP en la Nube

Te mostraremos los pasos para configurar un servidor de envío de SMS en eFactory ERP en la Nube.

A continuación se resumen los pasos:

  1. Ingrese a eFactory Administrativo con su usuario y contraseña.
  2. Seleccione el módulo de Sistema.
  3. Haga clic en la sección de Actualizaciones.
  4. Haga clic en la opción de Complementos Locales.
  5. Presione el botón Agregar.
  6. Llene los campos del Complemento.
  7. Haga clic en el botón Aceptar para guardar el nuevo complemento local.
  8. Seleccione el módulo de Sistema.
  9. Haga clic en la sección de Operaciones.
  10. Seleccione la opción de Opciones.
  11. Presione el botón Buscar.
  12. Busque y Seleccione la opción "SERSMS - Servicio de SMS".
  13. Presione el botón Editar.
  14. Indique el nombre del archivo del nuevo complemento con la extención aspx.
  15. Haga clic en el botón Aceptar para guardar la actualización del a opción.
  16. Cree los archivos fuentes de un nuevo complemento (archivo.aspx y archivo.aspx.vb).
  17. Realice las modificaciones necesarias a los archivos del nuevo complemento.
  18. Ingrese nuevamente a eFactory Administrativo con su usuario y contraseña.
  19. Seleccione el módulo de Sistema.
  20. Haga clic en la sección de Operaciones.
  21. Seleccione la opción de Subir Archivos.
  22. Importe los archivos del nuevo complemento en la sección Complementos.
  23. Haga clic en el botón Subir Complemento para subir los archivos del nuevo complemento.

Paso 1: Ingresar al Sistema Administrativo

Primero debemos ingresar al sistema de eFactory colocando nuestro usuario y contraseña en la pantalla inicial de eFactory, luego presionaremos el botón de Iniciar Sesión y seleccionaremos el sistema de Administrativo, la Empresa y la Sucursal de la Empresa y hacemos clic en el botón .

Paso 2: Seleccionar la opción de Complementos Locales

a. Al ingresar en el sistema debemos seleccionar el módulo Sistema y al desplegar la sección de Actualizaciones seleccionaremos la opción de Complementos Locales.

Paso 3: Agregar un nuevo complemento local

a. Luego de haber seleccionado la opción de Complementos Locales se muestra la pantalla donde debemos presionar el botón .

b. Despues de presionar el botón el formulario de Complementos Locales cambiará a modo registro y en este debemos llenar los campos escenciales para crear el complemento:


  • Código: Debe asignar un código único al complemento (Se recomienda utilizar las primeras 3 letras de cada sílaba del nombre del complemento).
  • Nombre: Nombre del complemento.
  • Archivo: Debe indicar la ruta del nuevo complemento (../../Administrativo/Complementos/Nombre_del_Complemento.aspx).
  • Tipo: Permite indicar el tipo de complemento (Complemento o Consulta).
  • Sistema: Debe seleccionar el sistema al que pertenece el nuevo complemento.
  • Módulo: Debe seleccionar el módulo al que pertenece el nuevo complemento. En este caso es recomendable seleccionar el módulo Sistema.
  • Sección: Debe seleccionar la sección a la que pertenece el nuevo complemento. En este caso es recomendable seleccionar la sección Actualizaciones.
  • Opción: Debe seleccionar la opción (Formulario) a la que pertenece el nuevo complemento. En este caso es recomendable seleccionar la opción Empresas.
  • Active las casillas de Confirmación del complemento.

Paso 4: Configurar la opción "SERSMS - Servicio de SMS"

Luego de haber creado el nuevo Complemento Local debemos registrar el nombre del nuevo complemento en la opción SERSMS - Servicio de SMS.


a. Para esto debemos seleccionar el módulo Sistema y al desplegar la sección de Operaciones seleccionaremos la opción de Opciones.

b. Al seleccionar la opción de Opciones se muestra la pantalla donde debemos presionar el botón .

c. Luego de presionar el botón se abrirá la pantalla de Busqueda: Opciones, en esta debemos buscar y seleccionar la opción SERSMS - Servicio de SMS y despues debemos hacer clic en el botón para seleccionar la opción.

d. Al seleccionar la opción SERSMS - Servicio de SMS debemos hacer clic en el botón .

e. Despues de presionar el botón el formulario de Opciones cambiará a modo edición y en este debemos asignar el nombre del archivo aspx del nuevo complemento en el campo Valor.


Por último debemos presionar el botón para guardar la actualización de la opción.

Paso 5: Crear los archivos fuentes del nuevo complemento

Despues de crear el nuevo Complemento Local en eFactory, debemos crear los archivos fuentes de este complemento.


a. Para esto debemos crear un archivo Nombre_del_Complemento.aspx y un archivo Nombre_del_Complemento.aspx.vb.


Nota: Podemos duplicar los archivos fuentes de otro complemento y editarlo con lo que se explicará mas adelante.

Despues de crear los archivos fuentes del complemento, debe abrir los archivos en Microsoft Visual Studio para editarlos.


b. En el archivo Nombre_del_Complemento.aspx debemos crear una estructura básica HTML sin contenido; y en la etiqueta Page debemos asignar el mismo nombre del complemento en los parámetros Codefile (Nombre_del_Complemento.aspx.vb) e Inherits (Nombre_del_Complemento).

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Nombre_del_Complemento.aspx.vb" Inherits="Nombre_del_Complemento" %>

c. En el archivo Nombre_del_Complemento.aspx.vb debemos:


  • Crear una Clase con el mismo nombre del complemento (Nombre_del_Complemento).
  • Implementar la interfaz cusAplicacion.iServicioMensajeria.
  • Crear la función loRegLimpiarNumero que usaremos para limpiar los números de teléfono
  • Crear la función mEnviarMensaje que se encargará de enviar los mensajes al servicio de mensajería.
  • Crear la función mObtenerMensajeAPI para leer la respuesta del servicio de mensajería.
Imports System.Net
'---------------------------------------------------'
' Inicio de clase "Nombre_del_Complemento"
'---------------------------------------------------'
Partial Class Nombre_del_Complemento
	Inherits vis2formularios.frmFormularioGenerico
	Implements cusAplicacion.iServicioMensajeria

	Private Shared loRegLimpiarNumero As New Regex("[^0-9]", RegexOptions.Compiled)
	
End Class

d. La función mEnviarMensaje recibirá en los parámetros:


  • Un valor enuTipoMensaje (lnTipo) de la interfaz iServicioMensajeria.enuTipoMensaje.
  • Un Array de Strings (laDestinatarios) que corresponde a los números de teléfono de los destinatarios.
  • Un String (lcMensaje) con el mensaje a enviar.
  • Un ArrayList (laParametrosAdicionales) que permitirá recibir parámetros adicionales en el complemento.
  • Un Integer (lnMensajesEnviados) por referencia, que devolverá a la interfaz iServicioMensajeria la cantidad de mensajes enviados.
  • Un String (lcDescripciónError) por referencia, que devolverá a la interfaz iServicioMensajeria los mensajes de error que retorne el servicio de mensajería.

Adicionalmente esta función deberá retornar un valor Booleano e implementar la interfaz iServicioMensajeria.mEnviarMensaje.

Public Function mEnviarMensaje(lnTipo As iServicioMensajeria.enuTipoMensaje, laDestinatarios() As String, lcMensaje As String, laParametrosAdicionales As ArrayList, ByRef lnMensajesEnviados As Integer, ByRef lcDescripcionError As String) As Boolean _
Implements iServicioMensajeria.mEnviarMensaje


Dentro de la función mEnviarMensaje debemos programar la conexión al API del servicio de SMS que hayamos contratado.


Primero debemos definir las variables donde definiremos los datos de acceso para el API de envío de SMS, en el caso del API de MassivaMovil estos datos serían la URL, el usuario (Correo) y la clave.

Dim lcUrl As String = "https://www.sistema.massivamovil.com/webservices/SendSms"
Dim lcUsuarioFactory As String = "correo@ejemplo.com"
Dim lcClaveFactory As String = "###############"


Segundo debemos recorrer el Array de destinatarios, para limpiar los números de teléfono utilizando la función loRegLimpiarNúmero y luego los guardamos en la variable lcDestinatarios de tipo String separados por punto y coma (;).

Dim lcDestinatarios As String = ""
'Preparación de destinatarios
For i As Integer = 0 To laDestinatarios.Length - 1
	laDestinatarios(i) = loRegLimpiarNumero.Replace(laDestinatarios(i), "")
Next
lcDestinatarios = String.Join(";", laDestinatarios)


Tercero debemos validar el texto del mensaje y dividirlo en fragmentos si la longitud del contenido supera el límite de carácteres del servicio de mensajería.


Cuarto debemos preparar los parámetros que asignaremos al URL para la petición GET al servicio de mensajería.

'Preparación de llamada 
Dim lcParametros As String = ""
lcParametros &= "?usuario=" & System.Web.HttpUtility.UrlEncode(lcUsuarioFactory)
lcParametros &= "&clave=" & System.Web.HttpUtility.UrlEncode(lcClaveFactory)
lcParametros &= "&telefonos=" & System.Web.HttpUtility.UrlEncode(lcDestinatarios)
lcParametros &= "&texto=" & System.Web.HttpUtility.UrlEncode(lcMensaje)

Quinto debemos realizar la petición GET al API utilizando la URL y los Parámetros de esta; y recibir la respuesta de la petición al API.

'Llama al servicio web: Primer mensaje
Dim lcResultado As String = ""
Dim loPeticion As HttpWebRequest
Dim loRespuesta As IO.StreamReader

loPeticion = HttpWebRequest.Create(lcUrl & lcParametros)
loPeticion.Method = "GET"

Try
	loRespuesta = New IO.StreamReader(loPeticion.GetResponse.GetResponseStream())
	lcResultado = loRespuesta.ReadToEnd()
Catch ex As Exception
	lcDescripcionError = ex.Message
	Return False
End Try


Sexto debemos validar la respuesta de la petición al API utilizando la función mObtenerMensajeAPI para verificar que no haya ocurrido un error en el envío de mensajes. Si ocurre un error debemos almacenarlo en el parámetro lcDescripciónError.

'Si hubo un mensaje de error: salir
lnMensajesEnviados = 0
Dim lcMensajeAPI As String = frmEnvioSmsMIEMPRESAMassivaMovil.mObtenerMensajeAPI(lcResultado)

If (lcMensajeAPI <> "") Then
	lcDescripcionError = lcMensajeAPI
	Return False
End If


Septimo, en la respuesta de la petición al API debemos validar la cantidad de mensajes enviados y la almacenaremos en el parámetro lnMensajesEnviados.

Dim loDocumento As New System.Xml.XmlDocument()
Try
	loDocumento.LoadXml(lcResultado)
Catch ex As Exception
	Return ""
End Try

Dim loEstatus As System.Xml.XmlElement = loDocumento.SelectSingleNode("respuesta/status")
If loEstatus Is Nothing Then
	Return ""
End If

Dim lnEstatus As Integer = 0
Integer.TryParse(loEstatus.InnerText, lnEstatus)

lnMensajesEnviados += lnEstatus

Octavo, si la longitud del mensaje supera el límite de carácteres del servicio de mensajería, podemos ejecutar nuevamente la petición GET con las partes adicionales del mensaje.

Por último, al final de la función mEnviarmensaje debemos limpiar el parámetro lcDescripcionError y debemos retornar TRUE al servicio de envío de SMS de eFactory.

e. La función mObtenerMensajeAPI recibirá el parámetro lcResultado (String) con la respuesta de la petición al API, y esta función deberá retornar un valor String con el contenido de la respuesta de la petición al API.


Dentro de la función mObtenerMensajeAPI leeremos la respuesta del servicio de mensajería para determinar si ocurrió un error en el envío.

Private Shared Function mObtenerMensajeAPI(lcResultado As String) As String

	Dim loDocumento As New System.Xml.XmlDocument()
	Try
		loDocumento.LoadXml(lcResultado)
	Catch ex As Exception
		Return ""
	End Try

	Dim loEstatus As System.Xml.XmlElement = loDocumento.SelectSingleNode("respuesta/status")
	If loEstatus Is Nothing Then
		Return ""
	End If

	'Si el estatus es mayor a cero: se envió el mensaje
	Dim lnEstatus As Integer = 0
	Integer.TryParse(loEstatus.InnerText, lnEstatus)
	If (lnEstatus > 0) Then
		Return ""
	End If

	'Si el estatus es menor o igual a cero: hubo un error.
	Dim loMensaje As System.Xml.XmlElement = loDocumento.SelectSingleNode("respuesta/mensaje")
	If loMensaje Is Nothing Then
		Return "No fue posible enviar los mensajes: error interno en la respuesta del proveedor de servicio de mensajería."
	End If

	Return loMensaje.InnerText
End Function

f. Por último en la sección de bitácora debemos indicar quien realizó el complemento, la fecha de creación y las tareas realizadas, para llevar control de los cambios realizados sobre el complemento.

Paso 6: Subir los archivos fuentes del nuevo complemento

a. Despues de terminar de modificar los archivos del nuevo complemento, debemos ingresar en el sistema, seleccionar el módulo Sistema y al desplegar la sección de Operaciones seleccionaremos la opción de Subir Archivos.

b. Luego de haber seleccionado la opción de Subir Archivos se muestra la pantalla donde debemos subir los archivos (aspx, vb) en la sección Complementos y por último hacer clic en el botón .

Video relacionado