Una de las cosas que más quebraderos de cabeza nos da, es el registro de la linea de teléfono que tenemos sobre nuestra conexión de fibra óptica.
Esta conexión, está basada en el protocolo SIP, el protocolo por excelencia utilizado por la VoIP. Pero en este caso hemos mejorado este protocolo básico y haremos la conexión por PJSIP, que poco a poco desbanca al protocolo SIP. En si no lo desbanca, lo mejora. Ya que PJSIP es una combinación del SIP con muchas mejoras aprovechando el recorrido NAT para otras funciones. Esto esta explicado el la pagina del proyecto (que es libre) del protocolo en cuestión http://www.pjsip.org
Su definición por excelencia, sacada de su pagina original es la siguiente:
"PJSIP es una biblioteca de comunicación multimedia libre y de código abierto escrita en lenguaje C que implementa protocolos basados en estándares como SIP, SDP, RTP, STUN, TURN e ICE. Combina el protocolo de señalización (SIP) con la rica estructura multimedia y la funcionalidad de recorrido NAT en un API de alto nivel que es portátil y adecuado para casi cualquier tipo de sistemas que van desde equipos de escritorio, sistemas embebidos y teléfonos móviles."
Es por ello por lo que hemos adaptado la configuración para poder montar toda la centralita bajo PJSIP.
Hay varias cosas que debemos tener en cuenta a la hora de configurar nuestro troncal con Movistar. Aunque son aplicables a cualquier proveedor de VoIP si fuese necesario.
La primera que vamos a ver es la relacionada con el archivo pjsip.conf donde vamos a ver a continuación como configurar el troncal de Movistar:
; ###########################################################
; ############# Registro troncal de Telefonica ##############
; ###########################################################
[Movistar_registration]
type=registration
transport=transport-udp
outbound_auth=Movistar_auth
server_uri=sip:10.31.255.134:5070
client_uri=sip:Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.
retry_interval=60
expiration=600
support_path=yes
[Movistar_auth]
type=auth
auth_type=userpass
password=91XXXXXXX
username=Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.
realm=telefonica.net
[Movistar_endpoint]
type=endpoint
transport=transport-udp
context=Telefonica
disallow=all
allow=ulaw
allow=alaw
allow=g729
allow=gsm
outbound_auth=Movistar_auth
aors=Movistar_aor
from_user=91XXXXXXX
from_domain=telefonica.net
dtmf_mode=auto
direct_media=no
trust_id_inbound=yes
force_rport=yes
rewrite_contact=yes
rtp_symmetric=yes
send_rpid=yes
100rel=yes
[Movistar_aor]
type=aor
max_contacts=2
contact=sip:10.31.255.134:5070
qualify_frequency=60
qualify_timeout=30
support_path=yes
remove_existing=yes
maximum_expiration=600
[Movistar_identify]
type=identify
endpoint=Movistar_endpoint
match=10.31.255.134/24
match=telefonica.net
[acl]
type=acl
acl=internal
Como vemos, tenemos varios apartados a diferencia de SIP. Tenemos un endpoint que identifica el punto final de la conexión y sus parámetros, en este caso la centralita, este apartado hace referencia a otro llamado aor, que nos da una funcionalidad muy importante ya que hace referencia al numero de extensiones diferentes que se pueden registrar con el mismo nombre de extension. En nuestro caso nos va a permitir realizar dos llamadas de forma simultánea con el mismo número de teléfono de forma independiente.
El apartado indentify, va a identificar el endpoint
Y la parte de registration, que contiene la forma y por dónde realiza el registro y este a su vez hace referencia al apartado auth, o autenticación que indica usuario y contraseña y modo de autenticarse.
Una vez tenemos esto, existe un pequeño problema con Movistar. Y es que, ademas de que el trafico de VoIP va por su propia VLAN como debe ser y no junto a la de datos, el servidor de Movistar no es alcanzable de forma visible. Es decir, no responde a ping, ni podemos resolver su nombre de dominio, pero cuando recibe la petición de registro SIP, la realiza sin problemas. La cuestión, es que Asterisk no es capaz de resolver el nombre de dominio, y es por ello por lo que debemos decirle que el dominio telefonica.net corresponde a la IP 10.31.255.134.
Esto lo haremos fuera de asterisk, en el archivo hosts dentro de /etc
Lo editaremos y añadiremos la siguiente linea:
10.31.255.134 telefonica.net
No contentos con esto, debemos decirle al sistema en algunas ocasiones que el servidor dhcp no es Asterisk, sino el router de nuestra red, sin este detalle, registrara el trunk, pero cuando intentemos realizar una llamada, no se realizara dando fallo, ya que Asterisk la lanzara contra si mismo pensando que es quien administra la red. Esto se resuelve añadiendo una linea mas en el archivo dhcpcd.conf, que esta en /etc, bajo el apartado #Example static IP configuration
static domain_name_servers=192.168.99.1
Con esto, debería funcionar sin ningún problema.
Vamos a ver cómo definimos una llamada saliente en extensions.conf para que podamos diseñar nuestro dialplan a gusto.
[fijos]; Llamadas a telefonos fijos nacionales desde el fijo.
exten => _[89]ZXXXXXXX,1,NoOp
same => n,Dial(PJSIP/Movistar_endpoint/sip:${EXTEN}@telefonica.net:5070,60)
same => n,hangup()
[Telefonica]; Llamadas entrantes por trunk Movistar.
exten => s,1,NoOp(Llamada entrante)
same => n,Dial(Local/5000@extensiones,30,Tti)
same => n,Voicemail(5000@default)
same => n,Hangup();(Llamada entrante de ${CALLERID(num)} finalizada)
;Podemos ver como en la aprte fijos, tenemos un ejemplo para una llamada saliente, la ;cual empieza por 8 o 9 seguido de un numero diferente a 0, realiza la llamada y ;finalmente cuando acaba cuelga.
;
;En cuanto a las llamadas entrantes, vemos como entra una llamada, psoteriormente ;marcamos una extension, o en su defecto un grupo de timbrado (5000 en este caso), si no ;contestan, salta el buzon de voz y finalmente se cuelga cuando finaliza la llamada.
Espero que haya sido de ayuda.