BeRuby te paga por navegar

martes, 24 de febrero de 2009

Creando un Identificador de llamadas con cualquier lenguaje


Hola a todos aquí les dejo el resultado de lo que tuve que investigar, quiero aclarar que no invente la pólvora ni nada por el estilo je. Estos son algunos de los enlaces que use: Código en VB.Net Algunos comandos AT y prueba con Hyper Terminal Comandos por shell (Linux) Utilizando y registrando el objeto MSComm32.ocx Creando un identificador con Power Builder Bueno después de leer un poco de todo eso les dejo lo que yo hice. Para empezar lo más dificil de esto es hacer las pruebas (aguante la prueba y el error) ya que nada sale a la primera. Requisitos:
  • Debemos tener el servicio pago de identificación de llamadas.
  • Debemos tener un modem que soporte identificación de llamadas.
  • Debemos tener el ocx MSCOMM32 registrado (para programar).
Para empezar a probar si tenemos todo lo que se necesita, podemos empezar con realizar algunas pruebas con Hyper Terminal el primer comando para conectarse es atz. Luego deberemos ejecutar el comando at#cid=1, el cual ordena que se capturen los CID. Si nos devuelve ok es porque nuestro modem acepta CID, si no nos devuelve nada podemos probar comandos alternativos. Dependiendo el fabricante deberemos usar otro comando (más referencia ver link algunos comandos at y prueba con hyper terminal). Una vez ejecutado los comandos deberemos realizar la llamada (seven days!! ^_^). Entre el primer y el segundo ring deberá aparecer la información que nos muestra la figura:
Donde NMBR es el número que necesitamos capturar en nuestra aplicación. Fácil no? Una vez realizado esto tenemos ganado medio partido. Ahora lo que necesitamos realizar lo mismo pero con el objeto MSComm32. Para empezar ese ocx debe estar registrado para poder utilizar en tiempo de programación. Este ocx es un control de visual basic, si no quieren instalar visual basic deben registar esto
[HKEY_CLASSES_ROOTLicenses4250E830-6AC2-11cf-8ADB-00AA00C00905]@ = "kjljvjjjoquqmjjjvpqqkqmqykypoqjquoun"

ya saben regedit.exe y asi se ubican en la ruta que dice arriba.

Una vez registrado el objeto ya lo pueden usar,aquí les dejo un poco de mi código (Power Builder): Esta función abre los puertos (mi objeto MSComm32 se llama ole_com) Esta Función of_abrir_puerto if ole_com.object.PortOpen then ole_com.object.PortOpen = false ole_com.object.settings = is_pars // <--- Parametros ole_com.object.CommPort = ii_Comm // <--- Puerto COM ole_com.object.PortOpen = True ole_com.object.inputlen = ii_lon // <--- Longitud de lectura //le ordenamosque capture el CID(CallerID) ole_com.object.Output="ATZ" + Char(13) ole_com.object.Output="AT#CID=1" + Char(13) ole_com.object.Output="ATS0=3"+Char(13) //NOTE--DEPENDING ON YOUR MODEM, YOU //WILL NEED TO USE EITHER "AT#CID=1", //"AT#VCID=1", "AT+CID=1", "AT+VCID=1" //OR POSSIBLY ANOTHER. THIS IS THE CID //INITIALIZATION STRING FOR THE MODEM AND VARIES //BY MODEM. Esta función captura el número de teléfono Esta función of_ring string ls_texto,ls_Number try ls_texto = ole_com.object.Input ls_Number = Mid(ls_texto, Pos(ls_texto, 'NMBR') + 7, 11) is_input=ls_number return true catch ( Exception Ex) return false end try Esta función setea los parámetros desde un archivo .ini función of_get_parametros ii_Comm = integer(ProfileString('siscom.ini','Modem','puerto','2')) is_pars = ProfileString('siscom.ini','Modem','parametros','2400,n,8,2') ii_lon = integer(ProfileString('siscom.ini','Modem','inputlen','0')) ii_t_espera = integer(profileString('siscom.ini','Modem','t_espera','0.25')) ii_ca_iteraciones = integer(profileString('siscom.ini','Modem','ca_iteraciones','800')) Bueno bueno, espero que les haya servido. Y recuerden el mejor tutorial es el que lo hacen uds mismos investigando. Nadie les va a decir todo. Nos vemos



1 comentario: