Llámame a mi email

Otra entrada que es un apunte.

Recientemente, he tenido que probar esta funcionalidad con mi centralita casera, basada en asterisk.

La idea es, que desde cualquier teléfono IP compatible, sin necesidad de estar registrado en ningún servicio voIP, marques craem@craem.net y la llamada llegue a mi casa / móvil o lo que sea…. la verdad es que es bastante chulo y lo veo realmente práctico; tu teléfono es tu dirección de email.

Nos ponemos a ello; primero de todo hemos de modificar nuestro dominio para que sepa que tenemos un servicio SIP:

SipDNS

Y explicamos un poco el registro:

_sip._tcp.craem.net SRV 0 5 5060 sip.craem.net.
_sip._udp.craem.net SRV 0 5 5060 sip.craem.net.

_sip._tcp.craem.net SRV 0 5 5060 sip.craem.net.

_sip._tcp –> tipo de servicio SIP, en este caso, TCP (por ahora no lo tengo funcionando)
_sip._udp –> Este es el que tengo activo.

SRV –> tipo de registro

0 –> Prioridad (de momento sólo tengo una conexión a internet).
5 –> Peso
5060 –> Puerto donde tenemos el servicio
sip.craem.net –> donde tenemos apuntando el servicio.

Una vez llegados aquí, nos toca configurar el asterisk; editamos el fichero sip.conf y en la sección [general], lo tenemos que dejar tal que:

context=default ; contexto por defecto, entrantes... por si peta que solo puedan llamar a las locales
allowguest=yes ; Allow or reject guest calls (default is yes)
language=es ; lo pasamos a castellano
allowexternalinvites=no ; para evitar marrones

Hemos de permitir las llamadas anónimas, pero las enviaremos al contexto DEFAULT… OJO CON PONER EN EL CONTEXTO DEFAULT, REFERENCIAS A LLAMADAS SALIENTES. Seguro de que alguno de los que leen el blog ha sufrido “robos” de dinero en la centralita por culpa de malas configuraciones.

No vamos a explicar cómo protegerla, pero empieza por tener contraseñas fuertes, límite de llamadas, etc… y ahora el contexto default en en extensions.conf

[default]
exten => test1,1,Dial(SIP/3010,30)
exten => test1,n,VoiceMail()
exten => test1,n,Hangup()
exten => test2,1,Dial(SIP/3000,30)
exten => test2,n,VoiceMail()
exten => test2,n,Hangup()
exten => music,1,MusicOnHold(default)
exten => music,n,Hangup
exten => s,1,Noop(Colgando la llamada.....)
exten => s,2,Hangup

Si queréis probar, llamar a music@craem.net y os sonará la música en espera que tengo en el asterisk.

Y ahora, desde nuestro móvil, hacemos una llamada a music@craem.net y vemos:

-- Executing [music@default:1] MusicOnHold("SIP/1024-9408c880", "default") in new stack
-- Started music on hold, class 'default', on SIP/1024-9408c880

Se ejecuta: music@default:1

music –> donde hemos llamado
default –> contexto default de las llamadas entrantes (SIN PERMISO DE LLAMADAS SALIENTES)

Enjoy 🙂

Group_count asterisk 1.4

Otra entrada que es un apunte.

Recientemente, me ha tocado controlar en un cliente, que los usuarios que usan softphones en sus pc’s, no puedan recibir más de una llamada a la vez.

Mirando por encima en voipinfo, veo que existe la función call-limit, pero mi decepción al comprobar que si lo seteaba a 1, los usuarios podían hacer / recibir llamadas, pero no podían hacer transferencias atendidas, pues se necesitan 2 canales para ello.

Buscando un poco, veo que existe la función GROUP() y GROUP_COUNT(), así que vamos a ello en el fichero extensions.conf:


exten => _[23]XX,n,NoOP(.... llamadas entre extensiones ......)
exten => _[23]XX,n,set(GROUP()=${EXTEN})
exten => _[23]XX,n,NoOP(Group Count = ${GROUP_COUNT(${EXTEN})} para grupo = ${EXTEN})
exten => _[23]XX,n,GotoIf($[ ${GROUP_COUNT(3${EXTEN})} > 1 ]?maxtrucades)
exten => _[23]XX,n,Dial(SIP/${EXTEN},60,tTwWm)
exten => _[23]XX,n,Hangup
exten => _[23]XX,n(maxtrucades),Congestion
exten => _[23]XX,n(maxtrucades),Hangup()

Explicamos un poco el dialplan:

Como lo queremos controlar por extensión, haremos un grupo por extensión:

exten => _[23]XX,n,set(GROUP()=${EXTEN})

Si tiene más de una llamada, lo enviamos a la etiqueta “maxtrucades”

exten => _[23]XX,n,GotoIf($[ ${GROUP_COUNT(3${EXTEN})} > 1 ]?maxtrucades)

Y el resto, es leer el dialplan 😉