SlideShare uma empresa Scribd logo
1 de 32
Sixbell Nekotec Solutions
   Consideraciones para la migración.
   Diferencias en las funciones de NK90 y TMP.
   Diseño de aplicaciones en TMP.
   Pruebas y debug en TMP.
   Mejores practicas.
   Conocimiento de funciones NSL en NK90.
   Maqueta para pruebas.
   Marcación de prueba.
Los scripts y audios deben estar colocados de una forma
estandar para poder llamar a scripts y audios de igual
manera en todas las aplicaciones.
   Para llamar a un script local del proyecto
    ◦ sScriptRutinas = “264_rutinas.nek”;


   Para llamar a un audio local
    ◦ sAudiosBienvenida = “audios/bienvenida.wav”;


   Para llamar a un script externo al proyecto
    ◦ sScript264 =
      http://localhost:8080/264/264/264.nek;
   Para manejo de archivos de la
    aplicación, estos se guardan localmente en el
    MR, estos deben guardar se en la ruta
    estándar:

    ◦ /opt/sns/app/<aplicación>

    ◦   Ejemplo:
    ◦   /opt/sns/app/fax
    ◦   /opt/sns/app/buzon
    ◦   /opt/sns/app/log
   PlayMessage.
    ◦ Esta función recibe como parámetro el nombre del archivo a
      reproducirse, para TMP se coloca la ruta relativa si el archivo esta en
      el directorio del proyecto o la URL si el archivo esta en otro proyecto.
    PlayMessage("audios/nombre_de_audio.wav");

   RaiseScript y ExecuteScriptFunction
    ◦ Colocar solo el nombre del archivo a invocar si esta dentro
      del proyecto o toda la URL si esta en otro proyecto
    RaiseScript("111_CAC.nek",0,1);
    StringFormatEx(sScriptMenu3G, "%s/264/264/3G/menu3
      G.nek", sHttpBAS);
    ExecuteScriptFunction
      (sScriptMenu3G, "", sTemp, iResult,sDynData,sDyn
      Data);
   CallInfo
    ◦ Las transferencias pueden ser con ForwardCall o con MakeCal lEx o MakeCallAsync en
      cualquiera de los 2 casos se debe de usar la estructura CALL_INFO.
    ◦ CallInfo.strPhoneA debe ser llenado con el número de A, solo dígitos, el intérprete lo
      pondrá en el formato correcto en caso de ser llamada IP
    ◦ CallInfo.strPhoneB debe ser llenado con el número de B, solo dígitos, el intérprete lo
      pondrá en el formato correcto en caso de ser llamada IP
    ◦ CallInfo.strNetwork debe ser llamada con PSTN_CALL en caso de llamada ISUP, R2 o
      ISDN ó IP_CALL en caso de llamada SIP.
    ◦ Ejemplo:

    @PHONE_B = "*0002";
    @SERVICE_NAME = "IP_CALL";
    CALL_INFO sCallInfo;
    sCallInfo = sCALL_INFO;
    DynamicClear(sCallInfo.sProtocolInfo);
    sCallInfo.strPhoneA = @PHONE_A;
    sCallInfo.strPhoneB = @PHONE_B;
    sCallInfo.strNetworkChoice = @SERVICE_NAME;
    ForwardCall(sCallInfo);
   HTTPRequest
    ◦ Para las peticiones HTTP se debe de usar la función HTTPRequestEx, la
      vieja función HTTPRequest queda depreciada para esta versión. Para usar
      la nueva función hay que declarar las siguientes variables.

    DYNAMIC_STRUCT dHTTPParams;
    INT iCode;
    INT iHttpTimeout = 20000;
    DynamicAdd(dHTTPParams, "TIMEOUT", iHttpTimeout);
    DynamicAdd(dHTTPParams, "CONNECTTIMEOUT", iHttpTimeout);
    La función vieja se veria asi:
    HttpRequest(salida,entrada,iResult,20000);

    ◦ La nueva queda asi:

    HttpRequestEx(salida, dHTTPParams, entrada, iResult, iCode);

    ◦ El timer que se usaba como parámetro en el HTTPRequest anterior ahora
      se declara en la estructura dHTTPParams.
   Consultas a BD                  [ACTPREPAGO]
                                    Application Attributes = T
    ◦ Las consultas a BD no         Attributes = W
                                    BatchAutocommitMode = IfAllSuccessful
      cambian, lo que hay que       BindAsFLOAT = F
                                    CloseCursor = F
      conocer es como hacer la      DisableDPM = F
      configuración del ODBC. La
                                    DisableMTS = T
                                    Driver = Oracle 11g ODBC driver
      conexión del ODBC debe        DSN = ACTPREPAGO
                                    EXECSchemaOpt =
      hacerse en el MR, para lo     EXECSyntax = T
                                    Failover = T
      cual es necesario que         FailoverDelay = 10
      tenga instalado los drivers   FailoverRetryCount = 10
                                    FetchBufferSize = 64000
      ODBC ya sea para ORACLE       ForceWCHAR = F
                                    Lobs = T
      o para MySQL. La conexión     Longs = T
      se declara en el archivo
                                    MetadataIdDefault = F
                                    QueryTimeout = T
                                    ResultSets = T
      /etc/odbcunix/odbc.ini        ServerName = COSTARRICA
      un ejemplo de conexión        SQLGetData extensions = F
                                    Translation DLL =
      para ORACLE es:               Translation Option = 0
                                    DisableRULEHint = T
                                    UserID = ACTPREPAGO
Los campos importantes son:
 el nombre del bloque porque ese es el nombre del DSN,
 DSN, en este campo va el nombre del DSN, normalmente
  igual al nombre del bloque.
 ServerName , aquí va el identificador del Host, para telcel
  ese server name siempre es telcel
 UserID, este es el usuario de la BD para conectarnos.


Para probar la conexión a BD.
Se usa el comando isql desde una sesión SSH en el MR:
$isql DSN_NAME USER PASSWORD
Otro punto importante es que si quieren usar la BD de la
  plataforma esta es ORACLE por lo que se deben armar los
  queries para este motor de BD.
   Fax y File
    ◦ Para usar las funciones de Fax y File hay que tener en cuenta las rutas recomendadas
      para tener organizado los archivos en el MR.
    String sFaxPath = “/opt/sns/apps/<apptmp>/fax”;
    String sFilePath = “/opt/sns/apps/<apptmp>/log”;


   EventLaunchCodes
    ◦ Los eventlauchcodes son soportados por el ControlNSL pero en vez de asociarlos a
      prefijos se usan directamente las rutas completas, en nuestro caso por el uso del AS
      se usan las URLs
    STRING sHttpBAS = "http://localhost:8080";
    STRING sScriptOnBusy;
    STRING sScriptOnError;
    STRING sScriptOnAnswer;
    STRING sScriptOnAnswer;
    StringFormatEx(sScriptOnBusy, “%s/proyecto/proyecto/OnBusy.nek”, sHttpBAS);
    StringFormatEx(sScriptOnError, “%s/proyecto/proyecto/OnError.nek”, sHttpBAS);
    StringFormatEx(sScriptOnAnswer, “%s/proyecto/proyecto/OnAnswer.nek”, sHttpBAS);
    StringFormatEx(sScriptOnNoAnswer, “%s/proyecto/proyecto/OnNoAnswer.nek”, sHttpBAS);
    sLaunchCodes.OnAnswerSimple = sScriptOnAnswer;
    sLaunchCodes.OnBusy = sScriptOnBusy
    sLaunchCodes.OnError = sScriptOnError
    sLaunchCodes.OnNoAnswer = sScriptOnNoAnswer;
    SetEventLaunchCode(sLaunchCodes);
   Fecha
    ◦ Cuando se usa la función StringData el formato que retornado es YYYY-
      MM-DD, para mayor control de la fecha se recomienda usar la función
      StringDateEx, por ejemplo .
    StringDateEx("yyyy-MM-dd", strFecha);
   Mail
    ◦ Para enviar un Correo debe de usarse la function MailSend de la siguiente
      forma.
    DYNAMIC_STRUCT dMailSend; INT iResult;
    DynamicAdd(dMailSend, "MailServer", "mail.nekotectelecom.com");
    DynamicAdd(dMailSend, "Login", "arturo.ruiz@nekotectelecom.com");
    DynamicAdd(dMailSend, "Password", "XXXXXX");
    DynamicAdd(dMailSend, "to.AllAddresses", "arturo_ruiz_m@hotmail.com, kaliman1
      997@gmail.com");
    DynamicAdd(dMailSend, "from.AllAddresses", "arturo.ruiz@nekotectelecom.com");
    DynamicAdd(dMailSend, "subject", "un email desde el ControlNSL");
    //DynamicAdd(dMailSend, "Text", "El texto del mensaje");
    DynamicAdd(dMailSend, "TMIME.1.Text", "");
    DynamicAdd(dMailSend, "MIME.2.AttachmentFile", sFileName);
    MailSend(dMailSend, iResult);
   Diseñar la Base de datos de acuerdo a los
    siguientes requerimientos.

   Datos dinámicos a consultar
   Catálogos a consultar
   Reportes
   Estadísticas
   Modularizar
    ◦   Script Principal con la lógica del servicio
    ◦   Script de variables
    ◦   Script(s) de configuración(es).
    ◦   Scripts Secundarios
   Cargar la aplicación en el AS y asociarle una
    regla, usando el SMILODON.
   Esperar 1 minuto para la sincronización del
    AS con los MRs.
   Marcar al número DID asociado al proyecto.
   Seguir el flujo de acuerdo a la prueba que se
    quiere hacer.
   Se pueden consultar los trazados que hace
    el ControlNSL de la ejecución del
    script, estos se localizan en la ruta
    /opt/sixlabs/var/log y el formato del
    nombre del log es ControlNSL-YYYYMMDD-
    HHMISS.txt.
   Es muy recomendable colocar trazados en el
    script para hacer un debugueo más efectivo.
   Para abrir el trace se puede usar el vi o
    puede descargarse con una aplicación de
    transferencia de archivos SFTP como el
    WinSCP, FileZilla, etc.
   También se puede usar el comando tail para
    ver en línea la ejecución:
$cd /opt/sixlabs/var/log
$tail -f ControlNSL-YYYYMMDD-HHMISS.txt |
   grep @@@
   Usar cuadro de datos para cada script:
//----------------------------------------------------------------------
// Script 111.nek
// Autor: Lucero Estrada
// Fecha Elaboración: Abril-Junio de 2011
// Descripcion: Servicio de 111 Homologado
//----------------------------------------------------------------------
// Actividad:
// - Adaptado para R6
//
   Versionar cada script y los audios pueden
    indicarse en el script principal.

v.X.Y.Z/a.W

X es la versión del script liberado,
Y la versión del cambio,
Z la versión de la corrección,
W la versión del paquete de audios.

Cuando X incrementa, Y y Z cambian a 0, cuando Y incrementan Z
  cambia a 0. W indica los cambios en los archivos de audios.
Usar la variable STRING sVersion = “1.0.0”; y actualizarla en cada
  cambio.
    Los cambios en el script deben documentarse
     abajo del cuadro de texto:
//---------------------------------------------------------------------------//
   Actividad:
// - Adaptado para R6
//
// Versión: 1.0.4/a.3
// Realizada por: Francisco A. Mondragón
// Fecha del cambio: 14-07-11 4:15p.m.
// Solicitante: Arturo Ruiz

//---------------------------------------------------------------------------
   Usar un encabezado para realizar los traces.
   StringFormatEx(sTrace,"[A:%s][%s][%s][v%s][B:%d-S:%d-
    C:%d]:",sANI,@SCRIPT_NAME,sFH,sVersion,@BOARD,@STREAM,@CHANNEL);
   Los nombres de las variables debe de tener
    un prefijo que indique el tipo:

str para STRING,
i para INT,
s Para STRUCT,
d para DYNAMIC_STRUCT.
 Usar rutinas para las tareas repetitivas.
SUB OBTEN_IDEQUIPO
ExecuteScriptFunction(sScript_GetIP, "", sTemp,
  iResult, @DYNAMIC_STRUCT, @DYNAMIC_STRUCT);
IF(iResult == 0) //b
DynamicGet(@DYNAMIC_STRUCT, "IdEquipo",
  giID_EQUIPO);
Trace("%s IDequipo: %d", sTrace,giID_EQUIPO);
ELSE //b
giID_EQUIPO = 0;
Trace("%s No se pudo obtener IDequipo, se fija a:
  %d", sTrace,giID_EQUIPO);
END_IF //b
END_SUB
CALL_SUB OBTEN_IDEQUIPO
   Migrar un script de NK90 a NSL TMP

Mais conteúdo relacionado

Mais procurados

Estado del Desarrollo de PostgreSQL-9.0
Estado del Desarrollo de PostgreSQL-9.0Estado del Desarrollo de PostgreSQL-9.0
Estado del Desarrollo de PostgreSQL-9.0
Marcos Ortiz Valmaseda
 
Unidad 2
Unidad 2Unidad 2
Unidad 2
rey
 
Practica nat
Practica natPractica nat
Practica nat
1 2d
 
Comandos cli router
Comandos cli routerComandos cli router
Comandos cli router
cyberleon95
 
Comandos redwindows
Comandos redwindowsComandos redwindows
Comandos redwindows
joalhunter
 

Mais procurados (18)

Replicación de servidores
Replicación de servidoresReplicación de servidores
Replicación de servidores
 
Perl4 io
Perl4 ioPerl4 io
Perl4 io
 
11 suplemments
11 suplemments11 suplemments
11 suplemments
 
Estado del Desarrollo de PostgreSQL-9.0
Estado del Desarrollo de PostgreSQL-9.0Estado del Desarrollo de PostgreSQL-9.0
Estado del Desarrollo de PostgreSQL-9.0
 
Los scripts de linux
Los scripts de linuxLos scripts de linux
Los scripts de linux
 
Awk
AwkAwk
Awk
 
Unidad 2
Unidad 2Unidad 2
Unidad 2
 
Estructura .COM
Estructura .COMEstructura .COM
Estructura .COM
 
Marcos quesada caching_sf2
Marcos quesada caching_sf2Marcos quesada caching_sf2
Marcos quesada caching_sf2
 
Comandos cisco tabla
Comandos cisco tablaComandos cisco tabla
Comandos cisco tabla
 
Practica nat
Practica natPractica nat
Practica nat
 
Comandos cli router
Comandos cli routerComandos cli router
Comandos cli router
 
P6 DOS ROUTERS
P6 DOS ROUTERSP6 DOS ROUTERS
P6 DOS ROUTERS
 
Comandos redwindows
Comandos redwindowsComandos redwindows
Comandos redwindows
 
Comandos redwindows
Comandos redwindowsComandos redwindows
Comandos redwindows
 
Clonación de base de datos oracle con rman
Clonación de base de datos oracle con rmanClonación de base de datos oracle con rman
Clonación de base de datos oracle con rman
 
Dhcp+ldap+gosa
Dhcp+ldap+gosaDhcp+ldap+gosa
Dhcp+ldap+gosa
 
Clase 02 gestion de puertos - directivas
Clase 02   gestion de puertos - directivasClase 02   gestion de puertos - directivas
Clase 02 gestion de puertos - directivas
 

Destaque

Ubnt smb unifi v2.0
Ubnt smb unifi v2.0Ubnt smb unifi v2.0
Ubnt smb unifi v2.0
Lucia Quispe
 
Tutorial modo router ubiquiti
Tutorial modo router ubiquitiTutorial modo router ubiquiti
Tutorial modo router ubiquiti
Fernando Keinz
 
Sistema de enlace punto a multipunto
Sistema de enlace punto a multipuntoSistema de enlace punto a multipunto
Sistema de enlace punto a multipunto
PIVB
 
Enlace Punto a Punto 5.8 GHz Radio Mobile Perú
Enlace Punto a Punto 5.8 GHz Radio Mobile Perú Enlace Punto a Punto 5.8 GHz Radio Mobile Perú
Enlace Punto a Punto 5.8 GHz Radio Mobile Perú
Jhon Pillaca Salazar
 
Mikrotik configuracion wds mikrotik ubiquiti freddy beltran
Mikrotik configuracion wds mikrotik ubiquiti freddy beltranMikrotik configuracion wds mikrotik ubiquiti freddy beltran
Mikrotik configuracion wds mikrotik ubiquiti freddy beltran
beppo
 
Mikrotik RouterOs basics v0.3 español
Mikrotik RouterOs basics v0.3 españolMikrotik RouterOs basics v0.3 español
Mikrotik RouterOs basics v0.3 español
Rod Hinojosa
 

Destaque (20)

Ubnt smb unifi v2.0
Ubnt smb unifi v2.0Ubnt smb unifi v2.0
Ubnt smb unifi v2.0
 
Ejemplo implementacion wimax
Ejemplo implementacion wimaxEjemplo implementacion wimax
Ejemplo implementacion wimax
 
Uso libre del espectro radioeletrico
Uso libre del espectro radioeletricoUso libre del espectro radioeletrico
Uso libre del espectro radioeletrico
 
Tutorial modo router ubiquiti
Tutorial modo router ubiquitiTutorial modo router ubiquiti
Tutorial modo router ubiquiti
 
ESTUDIO DE ENLACE INALANBRICO DE LARGA DISTANCIA 57 KM EN NAZCA
ESTUDIO DE ENLACE INALANBRICO  DE LARGA DISTANCIA  57 KM EN NAZCAESTUDIO DE ENLACE INALANBRICO  DE LARGA DISTANCIA  57 KM EN NAZCA
ESTUDIO DE ENLACE INALANBRICO DE LARGA DISTANCIA 57 KM EN NAZCA
 
Ubiquiti Unifi AP - El Futuro Wifi.
Ubiquiti Unifi AP - El Futuro Wifi.Ubiquiti Unifi AP - El Futuro Wifi.
Ubiquiti Unifi AP - El Futuro Wifi.
 
Frecuencias países ubiquiti
Frecuencias países ubiquitiFrecuencias países ubiquiti
Frecuencias países ubiquiti
 
Calculo de enlace en 5.8 GHz Radio Planning Radio Mobile Peru
Calculo de enlace en 5.8 GHz Radio Planning Radio Mobile PeruCalculo de enlace en 5.8 GHz Radio Planning Radio Mobile Peru
Calculo de enlace en 5.8 GHz Radio Planning Radio Mobile Peru
 
Enlace Inalambrico de Larga Distancia 5.8 GHz Peru
Enlace Inalambrico de Larga Distancia  5.8 GHz PeruEnlace Inalambrico de Larga Distancia  5.8 GHz Peru
Enlace Inalambrico de Larga Distancia 5.8 GHz Peru
 
Ubnt colombia
Ubnt  colombiaUbnt  colombia
Ubnt colombia
 
Sistema de enlace punto a multipunto
Sistema de enlace punto a multipuntoSistema de enlace punto a multipunto
Sistema de enlace punto a multipunto
 
Diseño de radio enlace
Diseño de radio enlaceDiseño de radio enlace
Diseño de radio enlace
 
Estudio de Enlace Inalambrico en Lima 5.8 GHz Radio Mobile
Estudio de Enlace Inalambrico en Lima 5.8 GHz Radio MobileEstudio de Enlace Inalambrico en Lima 5.8 GHz Radio Mobile
Estudio de Enlace Inalambrico en Lima 5.8 GHz Radio Mobile
 
Ubiquiti Networks
Ubiquiti NetworksUbiquiti Networks
Ubiquiti Networks
 
Enlace Punto a Punto 5.8 GHz Radio Mobile Perú
Enlace Punto a Punto 5.8 GHz Radio Mobile Perú Enlace Punto a Punto 5.8 GHz Radio Mobile Perú
Enlace Punto a Punto 5.8 GHz Radio Mobile Perú
 
Radioenlace proyecto
Radioenlace proyectoRadioenlace proyecto
Radioenlace proyecto
 
Unifi AP
Unifi APUnifi AP
Unifi AP
 
Mikrotik configuracion wds mikrotik ubiquiti freddy beltran
Mikrotik configuracion wds mikrotik ubiquiti freddy beltranMikrotik configuracion wds mikrotik ubiquiti freddy beltran
Mikrotik configuracion wds mikrotik ubiquiti freddy beltran
 
Estudio de Enlace Punto a Punto 5.8 GHZ UBIQUITI AIRLINK- RADIO MOBILE
Estudio de Enlace Punto a Punto 5.8 GHZ UBIQUITI AIRLINK- RADIO MOBILEEstudio de Enlace Punto a Punto 5.8 GHZ UBIQUITI AIRLINK- RADIO MOBILE
Estudio de Enlace Punto a Punto 5.8 GHZ UBIQUITI AIRLINK- RADIO MOBILE
 
Mikrotik RouterOs basics v0.3 español
Mikrotik RouterOs basics v0.3 españolMikrotik RouterOs basics v0.3 español
Mikrotik RouterOs basics v0.3 español
 

Semelhante a Curso migración de aplicaciones nsl nk90 a tmp

Preparando el entorno de Red de Oracle Database 11gZ052 06
Preparando el entorno de Red de Oracle Database 11gZ052 06Preparando el entorno de Red de Oracle Database 11gZ052 06
Preparando el entorno de Red de Oracle Database 11gZ052 06
Alexander Calderón
 
Lenguaje Ensamblador
Lenguaje EnsambladorLenguaje Ensamblador
Lenguaje Ensamblador
gbermeo
 
Anatomía de un ataque a tns listener
Anatomía de un ataque a tns listenerAnatomía de un ataque a tns listener
Anatomía de un ataque a tns listener
yt f
 
Notas clase java ii
Notas clase java iiNotas clase java ii
Notas clase java ii
1 2d
 
Replicacion con postgresql y slony
Replicacion con  postgresql y slonyReplicacion con  postgresql y slony
Replicacion con postgresql y slony
Johanna Mendez
 
Replicacion con postgresql y slony
Replicacion con  postgresql y slonyReplicacion con  postgresql y slony
Replicacion con postgresql y slony
Johanna Mendez
 

Semelhante a Curso migración de aplicaciones nsl nk90 a tmp (20)

Preparando el entorno de Red de Oracle Database 11gZ052 06
Preparando el entorno de Red de Oracle Database 11gZ052 06Preparando el entorno de Red de Oracle Database 11gZ052 06
Preparando el entorno de Red de Oracle Database 11gZ052 06
 
Rendimiento en aplicaciones web con Symfony2
Rendimiento en aplicaciones web con Symfony2Rendimiento en aplicaciones web con Symfony2
Rendimiento en aplicaciones web con Symfony2
 
Seguridad En Programación
Seguridad En ProgramaciónSeguridad En Programación
Seguridad En Programación
 
Lenguaje Ensamblador
Lenguaje EnsambladorLenguaje Ensamblador
Lenguaje Ensamblador
 
Php!
Php!Php!
Php!
 
Cursor Adapter
Cursor AdapterCursor Adapter
Cursor Adapter
 
Cursor Adapter
Cursor AdapterCursor Adapter
Cursor Adapter
 
Lw2010 Pedro Valera
Lw2010 Pedro ValeraLw2010 Pedro Valera
Lw2010 Pedro Valera
 
Lw2010 - Uso De La Programacion En Linux Para La Seguridad En Redes
Lw2010 - Uso De La Programacion En Linux Para La Seguridad En RedesLw2010 - Uso De La Programacion En Linux Para La Seguridad En Redes
Lw2010 - Uso De La Programacion En Linux Para La Seguridad En Redes
 
Redes wan
Redes wanRedes wan
Redes wan
 
Anatomía de un ataque a tns listener
Anatomía de un ataque a tns listenerAnatomía de un ataque a tns listener
Anatomía de un ataque a tns listener
 
01 Ext Js Introduccion
01 Ext Js   Introduccion01 Ext Js   Introduccion
01 Ext Js Introduccion
 
Notas clase java ii
Notas clase java iiNotas clase java ii
Notas clase java ii
 
2. Java Servlets (J2EE) - Curso 2005-2006
2. Java Servlets (J2EE) - Curso 2005-20062. Java Servlets (J2EE) - Curso 2005-2006
2. Java Servlets (J2EE) - Curso 2005-2006
 
Bases de Datos en Java - Intro a JDBC
Bases de Datos en Java - Intro a JDBCBases de Datos en Java - Intro a JDBC
Bases de Datos en Java - Intro a JDBC
 
Replicacion con postgresql y slony
Replicacion con  postgresql y slonyReplicacion con  postgresql y slony
Replicacion con postgresql y slony
 
Replicacion con postgresql y slony
Replicacion con  postgresql y slonyReplicacion con  postgresql y slony
Replicacion con postgresql y slony
 
IoT: Servidor web con_arduino_ethernet_shield_y_display_lcd 44780
IoT: Servidor web con_arduino_ethernet_shield_y_display_lcd 44780IoT: Servidor web con_arduino_ethernet_shield_y_display_lcd 44780
IoT: Servidor web con_arduino_ethernet_shield_y_display_lcd 44780
 
Ruby y las arquitecturas orientadas a servicios
Ruby y las arquitecturas orientadas a servicios Ruby y las arquitecturas orientadas a servicios
Ruby y las arquitecturas orientadas a servicios
 
Tema servlets
Tema servletsTema servlets
Tema servlets
 

Último

GUIA UNIDAD 3 costeo variable fce unc.docx
GUIA UNIDAD 3 costeo variable fce unc.docxGUIA UNIDAD 3 costeo variable fce unc.docx
GUIA UNIDAD 3 costeo variable fce unc.docx
AmyKleisinger
 
Catalogo de tazas para la tienda nube de dostorosmg
Catalogo de tazas para la tienda nube de dostorosmgCatalogo de tazas para la tienda nube de dostorosmg
Catalogo de tazas para la tienda nube de dostorosmg
dostorosmg
 
Comparativo DS 024-2016-EM vs DS 023-2017-EM - 21.08.17 (1).pdf
Comparativo DS 024-2016-EM vs DS 023-2017-EM - 21.08.17 (1).pdfComparativo DS 024-2016-EM vs DS 023-2017-EM - 21.08.17 (1).pdf
Comparativo DS 024-2016-EM vs DS 023-2017-EM - 21.08.17 (1).pdf
AJYSCORP
 
CRITERIOS DE EVALUACIÓN - NIVEL INICIAL.docx
CRITERIOS DE EVALUACIÓN - NIVEL INICIAL.docxCRITERIOS DE EVALUACIÓN - NIVEL INICIAL.docx
CRITERIOS DE EVALUACIÓN - NIVEL INICIAL.docx
geuster2
 

Último (20)

Presentacion encuentra tu creatividad papel azul.pdf
Presentacion encuentra tu creatividad papel azul.pdfPresentacion encuentra tu creatividad papel azul.pdf
Presentacion encuentra tu creatividad papel azul.pdf
 
DISEÑO DE ESTRATEGIAS EN MOMENTOS DE INCERTIDUMBRE
DISEÑO DE ESTRATEGIAS EN MOMENTOS DE INCERTIDUMBREDISEÑO DE ESTRATEGIAS EN MOMENTOS DE INCERTIDUMBRE
DISEÑO DE ESTRATEGIAS EN MOMENTOS DE INCERTIDUMBRE
 
Sostenibilidad y continuidad huamcoli robin-cristian.pptx
Sostenibilidad y continuidad huamcoli robin-cristian.pptxSostenibilidad y continuidad huamcoli robin-cristian.pptx
Sostenibilidad y continuidad huamcoli robin-cristian.pptx
 
CONSTITUCIÓN POLÍTICA DEL PERÚ al 25082023.pdf
CONSTITUCIÓN POLÍTICA DEL PERÚ al 25082023.pdfCONSTITUCIÓN POLÍTICA DEL PERÚ al 25082023.pdf
CONSTITUCIÓN POLÍTICA DEL PERÚ al 25082023.pdf
 
Correcion del libro al medio hay sitio.pptx
Correcion del libro al medio hay sitio.pptxCorrecion del libro al medio hay sitio.pptx
Correcion del libro al medio hay sitio.pptx
 
Contabilidad Gubernamental guia contable
Contabilidad Gubernamental guia contableContabilidad Gubernamental guia contable
Contabilidad Gubernamental guia contable
 
CORRIENTES DEL PENSAMIENTO ECONÓMICO.pptx
CORRIENTES DEL PENSAMIENTO ECONÓMICO.pptxCORRIENTES DEL PENSAMIENTO ECONÓMICO.pptx
CORRIENTES DEL PENSAMIENTO ECONÓMICO.pptx
 
Reporte Tributario para Entidades Financieras.pdf
Reporte Tributario para Entidades Financieras.pdfReporte Tributario para Entidades Financieras.pdf
Reporte Tributario para Entidades Financieras.pdf
 
GUIA UNIDAD 3 costeo variable fce unc.docx
GUIA UNIDAD 3 costeo variable fce unc.docxGUIA UNIDAD 3 costeo variable fce unc.docx
GUIA UNIDAD 3 costeo variable fce unc.docx
 
Empresa Sazonadores Lopesa estudio de mercado
Empresa Sazonadores Lopesa estudio de mercadoEmpresa Sazonadores Lopesa estudio de mercado
Empresa Sazonadores Lopesa estudio de mercado
 
Catalogo de tazas para la tienda nube de dostorosmg
Catalogo de tazas para la tienda nube de dostorosmgCatalogo de tazas para la tienda nube de dostorosmg
Catalogo de tazas para la tienda nube de dostorosmg
 
Comparativo DS 024-2016-EM vs DS 023-2017-EM - 21.08.17 (1).pdf
Comparativo DS 024-2016-EM vs DS 023-2017-EM - 21.08.17 (1).pdfComparativo DS 024-2016-EM vs DS 023-2017-EM - 21.08.17 (1).pdf
Comparativo DS 024-2016-EM vs DS 023-2017-EM - 21.08.17 (1).pdf
 
DECRETO-2535-DE-1993-pdf.pdf VIGILANCIA PRIVADA
DECRETO-2535-DE-1993-pdf.pdf VIGILANCIA PRIVADADECRETO-2535-DE-1993-pdf.pdf VIGILANCIA PRIVADA
DECRETO-2535-DE-1993-pdf.pdf VIGILANCIA PRIVADA
 
Distribuciones de frecuencia cuarto semestre
Distribuciones de frecuencia cuarto semestreDistribuciones de frecuencia cuarto semestre
Distribuciones de frecuencia cuarto semestre
 
Maria_diaz.pptx mapa conceptual gerencia industral
Maria_diaz.pptx mapa conceptual   gerencia industralMaria_diaz.pptx mapa conceptual   gerencia industral
Maria_diaz.pptx mapa conceptual gerencia industral
 
Analisis del art. 37 de la Ley del Impuesto a la Renta
Analisis del art. 37 de la Ley del Impuesto a la RentaAnalisis del art. 37 de la Ley del Impuesto a la Renta
Analisis del art. 37 de la Ley del Impuesto a la Renta
 
CRITERIOS DE EVALUACIÓN - NIVEL INICIAL.docx
CRITERIOS DE EVALUACIÓN - NIVEL INICIAL.docxCRITERIOS DE EVALUACIÓN - NIVEL INICIAL.docx
CRITERIOS DE EVALUACIÓN - NIVEL INICIAL.docx
 
CAMBIO DE USO DE SUELO LO BARNECHEA - VITACURA - HUECHURABA
CAMBIO DE USO DE SUELO LO BARNECHEA - VITACURA - HUECHURABACAMBIO DE USO DE SUELO LO BARNECHEA - VITACURA - HUECHURABA
CAMBIO DE USO DE SUELO LO BARNECHEA - VITACURA - HUECHURABA
 
liderazgo guia.pdf.............................
liderazgo guia.pdf.............................liderazgo guia.pdf.............................
liderazgo guia.pdf.............................
 
Ficha de datos de seguridad MSDS Ethanol (Alcohol etílico)
Ficha de datos de seguridad MSDS Ethanol (Alcohol etílico)Ficha de datos de seguridad MSDS Ethanol (Alcohol etílico)
Ficha de datos de seguridad MSDS Ethanol (Alcohol etílico)
 

Curso migración de aplicaciones nsl nk90 a tmp

  • 2. Consideraciones para la migración.  Diferencias en las funciones de NK90 y TMP.  Diseño de aplicaciones en TMP.  Pruebas y debug en TMP.  Mejores practicas.
  • 3. Conocimiento de funciones NSL en NK90.  Maqueta para pruebas.  Marcación de prueba.
  • 4.
  • 5.
  • 6. Los scripts y audios deben estar colocados de una forma estandar para poder llamar a scripts y audios de igual manera en todas las aplicaciones.
  • 7. Para llamar a un script local del proyecto ◦ sScriptRutinas = “264_rutinas.nek”;  Para llamar a un audio local ◦ sAudiosBienvenida = “audios/bienvenida.wav”;  Para llamar a un script externo al proyecto ◦ sScript264 = http://localhost:8080/264/264/264.nek;
  • 8. Para manejo de archivos de la aplicación, estos se guardan localmente en el MR, estos deben guardar se en la ruta estándar: ◦ /opt/sns/app/<aplicación> ◦ Ejemplo: ◦ /opt/sns/app/fax ◦ /opt/sns/app/buzon ◦ /opt/sns/app/log
  • 9.
  • 10. PlayMessage. ◦ Esta función recibe como parámetro el nombre del archivo a reproducirse, para TMP se coloca la ruta relativa si el archivo esta en el directorio del proyecto o la URL si el archivo esta en otro proyecto. PlayMessage("audios/nombre_de_audio.wav");  RaiseScript y ExecuteScriptFunction ◦ Colocar solo el nombre del archivo a invocar si esta dentro del proyecto o toda la URL si esta en otro proyecto RaiseScript("111_CAC.nek",0,1); StringFormatEx(sScriptMenu3G, "%s/264/264/3G/menu3 G.nek", sHttpBAS); ExecuteScriptFunction (sScriptMenu3G, "", sTemp, iResult,sDynData,sDyn Data);
  • 11. CallInfo ◦ Las transferencias pueden ser con ForwardCall o con MakeCal lEx o MakeCallAsync en cualquiera de los 2 casos se debe de usar la estructura CALL_INFO. ◦ CallInfo.strPhoneA debe ser llenado con el número de A, solo dígitos, el intérprete lo pondrá en el formato correcto en caso de ser llamada IP ◦ CallInfo.strPhoneB debe ser llenado con el número de B, solo dígitos, el intérprete lo pondrá en el formato correcto en caso de ser llamada IP ◦ CallInfo.strNetwork debe ser llamada con PSTN_CALL en caso de llamada ISUP, R2 o ISDN ó IP_CALL en caso de llamada SIP. ◦ Ejemplo: @PHONE_B = "*0002"; @SERVICE_NAME = "IP_CALL"; CALL_INFO sCallInfo; sCallInfo = sCALL_INFO; DynamicClear(sCallInfo.sProtocolInfo); sCallInfo.strPhoneA = @PHONE_A; sCallInfo.strPhoneB = @PHONE_B; sCallInfo.strNetworkChoice = @SERVICE_NAME; ForwardCall(sCallInfo);
  • 12. HTTPRequest ◦ Para las peticiones HTTP se debe de usar la función HTTPRequestEx, la vieja función HTTPRequest queda depreciada para esta versión. Para usar la nueva función hay que declarar las siguientes variables. DYNAMIC_STRUCT dHTTPParams; INT iCode; INT iHttpTimeout = 20000; DynamicAdd(dHTTPParams, "TIMEOUT", iHttpTimeout); DynamicAdd(dHTTPParams, "CONNECTTIMEOUT", iHttpTimeout); La función vieja se veria asi: HttpRequest(salida,entrada,iResult,20000); ◦ La nueva queda asi: HttpRequestEx(salida, dHTTPParams, entrada, iResult, iCode); ◦ El timer que se usaba como parámetro en el HTTPRequest anterior ahora se declara en la estructura dHTTPParams.
  • 13. Consultas a BD [ACTPREPAGO] Application Attributes = T ◦ Las consultas a BD no Attributes = W BatchAutocommitMode = IfAllSuccessful cambian, lo que hay que BindAsFLOAT = F CloseCursor = F conocer es como hacer la DisableDPM = F configuración del ODBC. La DisableMTS = T Driver = Oracle 11g ODBC driver conexión del ODBC debe DSN = ACTPREPAGO EXECSchemaOpt = hacerse en el MR, para lo EXECSyntax = T Failover = T cual es necesario que FailoverDelay = 10 tenga instalado los drivers FailoverRetryCount = 10 FetchBufferSize = 64000 ODBC ya sea para ORACLE ForceWCHAR = F Lobs = T o para MySQL. La conexión Longs = T se declara en el archivo MetadataIdDefault = F QueryTimeout = T ResultSets = T /etc/odbcunix/odbc.ini ServerName = COSTARRICA un ejemplo de conexión SQLGetData extensions = F Translation DLL = para ORACLE es: Translation Option = 0 DisableRULEHint = T UserID = ACTPREPAGO
  • 14. Los campos importantes son:  el nombre del bloque porque ese es el nombre del DSN,  DSN, en este campo va el nombre del DSN, normalmente igual al nombre del bloque.  ServerName , aquí va el identificador del Host, para telcel ese server name siempre es telcel  UserID, este es el usuario de la BD para conectarnos. Para probar la conexión a BD. Se usa el comando isql desde una sesión SSH en el MR: $isql DSN_NAME USER PASSWORD Otro punto importante es que si quieren usar la BD de la plataforma esta es ORACLE por lo que se deben armar los queries para este motor de BD.
  • 15. Fax y File ◦ Para usar las funciones de Fax y File hay que tener en cuenta las rutas recomendadas para tener organizado los archivos en el MR. String sFaxPath = “/opt/sns/apps/<apptmp>/fax”; String sFilePath = “/opt/sns/apps/<apptmp>/log”;  EventLaunchCodes ◦ Los eventlauchcodes son soportados por el ControlNSL pero en vez de asociarlos a prefijos se usan directamente las rutas completas, en nuestro caso por el uso del AS se usan las URLs STRING sHttpBAS = "http://localhost:8080"; STRING sScriptOnBusy; STRING sScriptOnError; STRING sScriptOnAnswer; STRING sScriptOnAnswer; StringFormatEx(sScriptOnBusy, “%s/proyecto/proyecto/OnBusy.nek”, sHttpBAS); StringFormatEx(sScriptOnError, “%s/proyecto/proyecto/OnError.nek”, sHttpBAS); StringFormatEx(sScriptOnAnswer, “%s/proyecto/proyecto/OnAnswer.nek”, sHttpBAS); StringFormatEx(sScriptOnNoAnswer, “%s/proyecto/proyecto/OnNoAnswer.nek”, sHttpBAS); sLaunchCodes.OnAnswerSimple = sScriptOnAnswer; sLaunchCodes.OnBusy = sScriptOnBusy sLaunchCodes.OnError = sScriptOnError sLaunchCodes.OnNoAnswer = sScriptOnNoAnswer; SetEventLaunchCode(sLaunchCodes);
  • 16. Fecha ◦ Cuando se usa la función StringData el formato que retornado es YYYY- MM-DD, para mayor control de la fecha se recomienda usar la función StringDateEx, por ejemplo . StringDateEx("yyyy-MM-dd", strFecha);  Mail ◦ Para enviar un Correo debe de usarse la function MailSend de la siguiente forma. DYNAMIC_STRUCT dMailSend; INT iResult; DynamicAdd(dMailSend, "MailServer", "mail.nekotectelecom.com"); DynamicAdd(dMailSend, "Login", "arturo.ruiz@nekotectelecom.com"); DynamicAdd(dMailSend, "Password", "XXXXXX"); DynamicAdd(dMailSend, "to.AllAddresses", "arturo_ruiz_m@hotmail.com, kaliman1 997@gmail.com"); DynamicAdd(dMailSend, "from.AllAddresses", "arturo.ruiz@nekotectelecom.com"); DynamicAdd(dMailSend, "subject", "un email desde el ControlNSL"); //DynamicAdd(dMailSend, "Text", "El texto del mensaje"); DynamicAdd(dMailSend, "TMIME.1.Text", ""); DynamicAdd(dMailSend, "MIME.2.AttachmentFile", sFileName); MailSend(dMailSend, iResult);
  • 17.
  • 18. Diseñar la Base de datos de acuerdo a los siguientes requerimientos.  Datos dinámicos a consultar  Catálogos a consultar  Reportes  Estadísticas
  • 19. Modularizar ◦ Script Principal con la lógica del servicio ◦ Script de variables ◦ Script(s) de configuración(es). ◦ Scripts Secundarios
  • 20.
  • 21. Cargar la aplicación en el AS y asociarle una regla, usando el SMILODON.
  • 22. Esperar 1 minuto para la sincronización del AS con los MRs.  Marcar al número DID asociado al proyecto.  Seguir el flujo de acuerdo a la prueba que se quiere hacer.  Se pueden consultar los trazados que hace el ControlNSL de la ejecución del script, estos se localizan en la ruta /opt/sixlabs/var/log y el formato del nombre del log es ControlNSL-YYYYMMDD- HHMISS.txt.
  • 23. Es muy recomendable colocar trazados en el script para hacer un debugueo más efectivo.  Para abrir el trace se puede usar el vi o puede descargarse con una aplicación de transferencia de archivos SFTP como el WinSCP, FileZilla, etc.  También se puede usar el comando tail para ver en línea la ejecución: $cd /opt/sixlabs/var/log $tail -f ControlNSL-YYYYMMDD-HHMISS.txt | grep @@@
  • 24.
  • 25. Usar cuadro de datos para cada script: //---------------------------------------------------------------------- // Script 111.nek // Autor: Lucero Estrada // Fecha Elaboración: Abril-Junio de 2011 // Descripcion: Servicio de 111 Homologado //---------------------------------------------------------------------- // Actividad: // - Adaptado para R6 //
  • 26. Versionar cada script y los audios pueden indicarse en el script principal. v.X.Y.Z/a.W X es la versión del script liberado, Y la versión del cambio, Z la versión de la corrección, W la versión del paquete de audios. Cuando X incrementa, Y y Z cambian a 0, cuando Y incrementan Z cambia a 0. W indica los cambios en los archivos de audios. Usar la variable STRING sVersion = “1.0.0”; y actualizarla en cada cambio.
  • 27. Los cambios en el script deben documentarse abajo del cuadro de texto: //---------------------------------------------------------------------------// Actividad: // - Adaptado para R6 // // Versión: 1.0.4/a.3 // Realizada por: Francisco A. Mondragón // Fecha del cambio: 14-07-11 4:15p.m. // Solicitante: Arturo Ruiz //---------------------------------------------------------------------------
  • 28. Usar un encabezado para realizar los traces.  StringFormatEx(sTrace,"[A:%s][%s][%s][v%s][B:%d-S:%d- C:%d]:",sANI,@SCRIPT_NAME,sFH,sVersion,@BOARD,@STREAM,@CHANNEL);
  • 29. Los nombres de las variables debe de tener un prefijo que indique el tipo: str para STRING, i para INT, s Para STRUCT, d para DYNAMIC_STRUCT.
  • 30.  Usar rutinas para las tareas repetitivas. SUB OBTEN_IDEQUIPO ExecuteScriptFunction(sScript_GetIP, "", sTemp, iResult, @DYNAMIC_STRUCT, @DYNAMIC_STRUCT); IF(iResult == 0) //b DynamicGet(@DYNAMIC_STRUCT, "IdEquipo", giID_EQUIPO); Trace("%s IDequipo: %d", sTrace,giID_EQUIPO); ELSE //b giID_EQUIPO = 0; Trace("%s No se pudo obtener IDequipo, se fija a: %d", sTrace,giID_EQUIPO); END_IF //b END_SUB CALL_SUB OBTEN_IDEQUIPO
  • 31.
  • 32. Migrar un script de NK90 a NSL TMP