Enviado por admin el
Después de la instalación de Asterisk 12, ya podemos realizar la primera prueba de llamadas entre extensiones configuradas en PJSIP.
La configuración es bastante distinta a la que estamos acostumbrados. Como PJSIP y el canal SIP, por defecto, escuchan en el puerto 5060, tenemos dos opciones:
- desactivar el modulo chan_sip
- utilizar un puerto distinto al 5060 para PJSIP
En este caso se ha optado para desactivar el el modulo chan_sip. Esto se realiza en el archivo de configuración modules.conf
nano /etc/asterisk/modules.conf
al final se añade:
noload => chan_sip.so
Se guardan los cambios
Para la configuración de PJSIP, primero renombramos el archivo predefinido:
mv /etc/asterisk/pjsip.conf /etc/asterisk/pjsip.conf.old
Creamos unos nuevo:
nano /etc/asterisk/pjsip.conf
Lo primero que tenemos que hacer es configurar el tipo de transporte para las extensiones que vamos a configurar; como el servidor es remoto y las extensiones se conectan detrás de un NAT, añadimos este bloque:
[transport-udp-nat]
type=transport
protocol=udp
bind=0.0.0.0
local_net=10.128.0.0/255.255.0.0
external_media_address=162.243.208.100
external_signaling_address=162.243.208.100
Luego configuramos la primera extensión:
[1000]
type=endpoint
context=internos
disallow=all
allow=ulaw
allow=alaw
transport=transport-udp-nat
direct_media=no
force_rport=yes
rtp_symmetric=yes
mailboxes=1000@default
auth=1000
aors=1000
[1000]
type=auth
auth_type=userpass
password=1000
username=1000
[1000]
type=aor
max_contacts=2
qualify_frequency=30
Esta extensión aceptará un máximo de dos registros (max_contacts=2). Pasamos a la segunda extensión:
[1001]
type=endpoint
context=internos
disallow=all
allow=ulaw
allow=alaw
transport=transport-udp-nat
force_rport=yes
rtp_symmetric=yes
mailboxes=1001@default
auth=1001
aors=1001
[1001]
type=auth
auth_type=userpass
password=1001
username=1001
[1001]
type=aor
max_contacts=1
qualify_frequency=30
Luego pasamos a la configuración del dialplan:
mv /etc/asterisk/extensions.conf /etc/asterisk/extensions.conf.old
nano /etc/asterisk/extensions.conf
Añadimos las líneas que siguen:
[general]
static=yes
writeprotect=yes
autofallthrough=yes
extenpatternmatchnew=yes
clearglobalvars=no
[internos]
exten => 123,1,Answer
same => n,Playback(hello-world)
same => n,Hangup
exten => 200,1,Answer
same => n,MusicOnHold(default,60)
same => n,Hangup
exten => _100[01],1,NoOp(llamadas entre extensiones)
same => n,Dial(PJSIP/${EXTEN},30)
same => n,hangup
Guardamos los cambios y reiniciamos Asterisk:
service asterisk restart
Entramos en la consola de Asterisk:
asterisk -rvvvvvvvvv
y miramos las extensiones configuradas:
CLI> pjsip show endpoints
<Endpoint/CID................................................> <State.....> <Channels.>
I/OAuth: <AuthId/UserName...........................................................>
Aor: <Aor............................................> <MaxContact>
Contact: <Aor/ContactUri...............................> <Status....> <RTT(ms)..>
Channel: <ChannelId......................................> <State.....> <Time(sec)>
Codec: <Codec> Exten: <DialedExten...........> CLCID: <ConnectedLineCID.......>
=========================================================================================
1000 Invalid 0 of inf
InAuth: 1000/1000
Aor: 1000 2
1001 Invalid 0 of inf
InAuth: 1001/1001
Aor: 1001
Para la prueba configuramos tres Softphone: X-Lite y BRIA para la extensión 1000; en el menú Topology seleccionamos la casilla “None (use local IP address) ya que Asterisk se hará cargo del tratamiento del NAT. Para la extensión 1001 utilizaremos 3CX. El resultado:
CLI> pjsip show endpoints
<Endpoint/CID................................................> <State.....> <Channels.>
I/OAuth: <AuthId/UserName...........................................................>
Aor: <Aor............................................> <MaxContact>
Contact: <Aor/ContactUri...............................> <Status....> <RTT(ms)..>
Channel: <ChannelId......................................> <State.....> <Time(sec)>
Codec: <Codec> Exten: <DialedExten...........> CLCID: <ConnectedLineCID.......>
=========================================================================================
1000 Not in use 0 of inf
InAuth: 1000/1000
Aor: 1000 2
Contact: 1000/sip:1000@190.67.250.52:19273;rinstance=36f Avail 149.600
Contact: 1000/sip:1000@190.67.250.52:19278;rinstance=591 Avail 154.701
1001 Not in use 0 of inf
InAuth: 1001/1001
Aor: 1001 1
Contact: 1001/sip:1001@190.67.250.52:19282;transport=UDP Avail 251.089
Ahora desde la extensión 1001 llamamos la extensión 1000:
-- Executing [1000@internos:1] NoOp("PJSIP/1001-00000000", "llamadas entre extensiones") in new stack
-- Executing [1000@internos:2] Dial("PJSIP/1001-00000000", "PJSIP/1000,30") in new stack
-- Called PJSIP/1000
-- PJSIP/1000-00000001 is ringing
En teoría, según la Wiki oficial de Asterisk deberían timbrar el X-Lite y el Bria pero timbra solamente la extensión que aparece como primera en la lista de endpoints. La verdad no se a que se debe. Investigaré. De todas formas ya tenemos nuestras llamadas entre extensiones configuradas con PJSIP.
Actualización:
efectivamente como mencionado en el comentario que acompaña esta entrada, para llamar todos los contactos de una extensión hay que utilizar la función PJSIP_DIAL_CONTACTS. Para que funcione, hay que modificar el bloque de llamadas entre extensiones:
exten => _100[01],1,NoOp(llamadas entre extensiones)
same => n,Dial(PJSIP/${EXTEN},30)
same => n,hangup
para que quede:
exten => _100[01],1,NoOp(llamadas entre extensiones)
same => n,Dial(${PJSIP_DIAL_CONTACTS(${EXTEN})},30)
same => n,hangup
5 comentarios
Hola, Para que timbren todos
Enviado por navaismo (no verificado) el
Hola, Para que timbren todos los contactos se debe de usar la función PJSIP_DIAL_CONTACTS().
Saludos.
Re: Hola, Para que timbren todos
Enviado por admin el
Hola,
muchas gracias por tu aporte. Ya actualicé la entrada.
Saludos
Asterisk 12 - Configuración y llamadas entre extensiones PJSIP
Enviado por Anónimo (no verificado) el
Hay un tema; si haces noload => chan_sip.so no se registraran los endpoints tanto en sip como en pjsip.
De hecho no hace falta hacer en el module.conf lo podes hacer mediante unload mediante el comando en consola de module unload chan_sip.so.
Que sucede, si ejecutas el comando de "pjsip set logger on" para monitorear los login de los endpoints no veras que reporta ningun login, pero si dejas el modulo cargado de chan_dahdi.so veras que los endpoints cuando peticionan registracion te lo indicara mediante un notice.
softphones
Enviado por Manuel19 (no verificado) el
Hola, quería saber que softphones son los que soportan este Protocolo de señalización y si la configuración es tan intuitiva como la del clasico SIP.
asterisknow
Enviado por samuel (no verificado) el
ola a tdos antes de todo les felicito por el blog , y ademas quisiera decirles que soy nuevo en el mundo de asterisk
bueno teno instalado el asterisknow 6.12 que me parece que equivale a la version de asterisk 11....
y no logro visualiazar ninguna extensions y tampoco configurar telef con PJSIP y SIP respetivamente.
haber si me pueden ayudar en eso.
cordiales saludos