Protocolo PJSIP


(Yeison Manrique) #1

Cordial Saludo Compañeros.
En las últimas instalaciones que he realizado con Centos 7.2+Asterisk 13+FreePbx 13 es necesario compilar antes el proyecto PJSIP.
Después de la instalación y en la consola de administración de FreePbx aparece este nuevo protocolo que indagando por Internet veo que hasta ahora no ha tenido mucha acogida tal vez por la falta de conocimiento; por lo tanto configuro las extensiones nuevas con el protocolo tradicional chan_sip.
Quiero preguntar a las personas que ya han realizado instalaciones con este nuevo protocolo cuales son las ventajas y características del pjsip?.
Configuré una extensión pjsip en FreePbx y la verdad fue muy difícil su implementación en X-lite y Zoiper, adicionalmente en un teléfono IP físico no pude registarlo al asterisk.
Realmente es complicado implementar este nuevo protocolo? o es simplemente falta de conocimiento? o los teléfonos IP deben también contar con este protocolo pjsip?.
Muchas gracias por la información que me puedan brindar.
Atentamente,

Yeison Manrique
Ing. Sistemas
Cel. +57 300 217 20 29
e-mail: sistemas@voipsystem.net.co
http://www.voipsystem.net.co


(Luis Alvear - Sepia Solutions) #2

Estimado Yeison.

Por el contrario de tu experiencia, en mi caso he tenido buenos resultados y no mayores inconvenientes.
En realidad no se trata de otro protocolo, sino otra implementación del módulo SIP a nivel de asterisk.
Lo que debes tomar en cuenta es que si tienes corriendo los dos módulos, deben escuchar en puertos distintos y en el cliente apuntar al puerto correspondiente, dependiendo que módulo quieras que haga la gestión de la comunicación.
En lo que si vas a notar un cambio significativo es a nivel de CLI. Pero es cuestión de leer un poco la documentación.
En lo que a mi respecta usamos ya solo chan_pjsip y es funcional al 100%, si necesitas ayuda estamos a las órdenes.


(Astrosendero) #3

Buen dia Amigo yo tambien tengo PJSIP en mi freepbx14 y hasta ahora la comunicacion interna y saliente funciona, yo manejo para mi dialplan extensions.ael, mi archivo antes funcionaba de maravilla cuando invocaba REALTIME, Hoy no puedo echarlo a volar, aqui pongo mi macro donde quiero leer una tabla MySQL donde tengo las contraseñas para salir a la pstn.

context from-service-level {
includes {
eventos;
from-internal;
};
_ZXXX => goto from-internal|${EXTEN}|1;
_9XXXXXXXXXX => goto from-internal|${EXTEN}|1;
_90[29]0 => &permiso(3,${EXTEN});
};

macro permiso(campo,dest) {
Set(GLOBAL(Fila=${REALTIME(services,exten,${CALLERID(num)},&)}));
Set(${CUT(Fila,&,2)}); // Password
Set(valor=${CUT(CUT(Fila,&,${campo}),=,2)}); // Campo correspondiente

    switch (${valor}) {
            case 1:         // Salir a todo
                    goto from-internal|${dest}|1;
                    break;
            case 2:         // Pedir pass
                    Authenticate(${password});
                    goto from-internal|${dest}|1;
                    break;
            default:                // No salir a nada
                    Playback(privacy-incorrect);
                    Congestion(10);
                    Hangup;
    };

};

Aqui te posteo lo que me arroja la consola:

– Executing [9090@from-service-level:1] Gosub(“PJSIP/1154-00000042”, “permiso,s,1(3,9090)”) in new stack
– Executing [s@permiso:1] MSet(“PJSIP/1154-00000042”, “LOCAL(campo)=3”) in new stack
– Executing [s@permiso:2] MSet(“PJSIP/1154-00000042”, “LOCAL(dest)=9090”) in new stack
– Executing [s@permiso:3] MSet(“PJSIP/1154-00000042”, “LOCAL(EXTEN)=s”) in new stack
– Executing [s@permiso:4] MSet(“PJSIP/1154-00000042”, “LOCAL(EXTEN)=s”) in new stack
– Executing [s@permiso:5] Set(“PJSIP/1154-00000042”, “GLOBAL(Fila=exten=1154&password=3531&local=0&ldn=0&ldi=0&cel=0&celld=0&)”) in new stack
– Executing [s@permiso:6] Set(“PJSIP/1154-00000042”, “”) in new stack
[2020-06-25 10:41:26] WARNING[2847][C-00000032]: pbx_variables.c:1138 pbx_builtin_setvar: Set requires one variable name/value pair.
– Executing [s@permiso:7] Set(“PJSIP/1154-00000042”, “valor=”) in new stack
– Executing [s@permiso:8] Goto(“PJSIP/1154-00000042”, “sw_2_,10”) in new stack
– Goto (permiso,sw_2_,10)
– Executing [sw_2_@permiso:10] Goto(“PJSIP/1154-00000042”, “sw_2_.,10”) in new stack
– Goto (permiso,sw_2_.,10)
– Executing [sw_2_.@permiso:10] Playback(“PJSIP/1154-00000042”, “privacy-incorrect”) in new stack
> 0x7efdb818d350 – Strict RTP learning after remote address set to: 192.168.5.167:3000
> 0x7efdb818d350 – Strict RTP switching to RTP target address 192.168.5.167:3000 as source
– <PJSIP/1154-00000042> Playing ‘privacy-incorrect.ulaw’ (language ‘es’)
– Executing [h@permiso:1] Goto(“PJSIP/1154-00000042”, “9991”) in new stack
– Goto (permiso,h,9991)
– Executing [h@permiso:9991] Set(“PJSIP/1154-00000042”, “parentcxt=from-service-level”) in new stack
– Executing [h@permiso:9992] GotoIf(“PJSIP/1154-00000042”, “0?9996”) in new stack
– Executing [h@permiso:9993] GotoIf(“PJSIP/1154-00000042”, “1?9994:9996”) in new stack
– Goto (permiso,h,9994)
– Executing [h@permiso:9994] StackPop(“PJSIP/1154-00000042”, “”) in new stack
– Executing [h@permiso:9995] Goto(“PJSIP/1154-00000042”, “from-service-level,h,1”) in new stack
– Goto (from-service-level,h,1)
– Executing [h@from-service-level:1] Macro(“PJSIP/1154-00000042”, “hangupcall”) in new stack
– Executing [s@macro-hangupcall:1] GotoIf(“PJSIP/1154-00000042”, “1?theend”) in new stack
– Goto (macro-hangupcall,s,3)
– Executing [s@macro-hangupcall:3] ExecIf(“PJSIP/1154-00000042”, “0?Set(CDR(recordingfile)=)”) in new stack
– Executing [s@macro-hangupcall:4] NoOp(“PJSIP/1154-00000042”, " montior file= ") in new stack
– Executing [s@macro-hangupcall:5] GotoIf(“PJSIP/1154-00000042”, “1?skipagi”) in new stack
– Goto (macro-hangupcall,s,7)
– Executing [s@macro-hangupcall:7] Hangup(“PJSIP/1154-00000042”, “”) in new stack
== Spawn extension (macro-hangupcall, s, 7) exited non-zero on ‘PJSIP/1154-00000042’ in macro ‘hangupcall’
== Spawn extension (from-service-level, h, 1) exited non-zero on ‘PJSIP/1154-00000042’
New MFC/R2 call detected on chan 7.