Recuperar un SPA400 como gateway en asterisk

Hace poco he recuperado un cacharro que tenía tirado por la oficina… el linksys spa400. En su día lo compramos como gateway para los enlaces GSM del asterisk de la office, pero sus cuelgues y estabilidad, lo relegaron a estar apagado y sustituirlo por un portech mv-374.

Pese a ello, tiene 4 puertos FXO, que nos valdrán para enchufarlo a alguna línea y hacer pruebas…. la config:

en el extensions.conf, sección [globals]

[globals]
OUT_2 = SIP/spa400

Luego, donde vayan las entrantes

exten => spa400,1,NoOP(llamada entrante desde spa400)
exten => spa400,n,Dial(SIP/3005&SIP/3006,100,tTm)
exten => spa400,n,Voicemail(3000)
exten => spa400,n,Hangup

Y para las salientes…..

exten => _[89][123456789]XXXXXXX,n,Dial(SIP/${EXTEN}@spa400,100,tT)

Y ahora, en el sip.conf, en el register

register => spa400@ip.del.spa.400/spa400

y la definición:

[spa400]
type =friend
user =spa400
secret =
host =ip.del.spa.400
dtmfmode=rfc2833
context =contexto_de_entrantes
insecure=very

Y ahora, en la web del spa400:

Y más cosillas:

Seguimos…

Y por último…

Enjoy your spa400 🙂

Configurar SipDroid con Asterisk + NAT

En este artículo, mostramos cómo configurar el sipDroid en nuestra querida HTC Hero… funcionando perfectamente en wifi / 3G.

Cabe decir que, en españa, el uso de la voIP en el 3G no está permitido, pero cada uno que haga lo que quiera!! xDD

1º) Desde el market, bajamos e instalamos el sipDroid.

2º) Una vez descargado e instalado lo tendremos en nuestro escritorio.

3º) Lanzamos la aplicación y tendremos la siguiente pantalla.

4º) En el botón menú, seleccionamos settings.

5º) ahora nos vamos a configurar la cuenta de nuesto asterisk.

6º) Editamos:
Autorization Username: usuario del sip.conf
Password: el password configurado
Server Proxy: la ip pública de nuestro asterisk
Username or Caller ID:Volvemos a poner el usuario del sip.conf

Opciones: Seleccionamos el códec GSM para optimizar el uso de los datos con nuestra tarifa. Con cobertura 3g / Wifi funciona bastante bien y nos sirve para ahorrar en nuestras llamadas 😉

7º) Si hemos configurado bien nuestro asterisk y el sipDroid, lo tendremos registrado en nuestro sistema y podemos desde ya utilizarlo como una extensión más:

asterisk*CLI> sip show peers
Name/username Host Dyn Nat ACL Port Status
11/11 192.168.2.250 D 5062 OK (16 ms)
3015/3015 192.168.2.249 D 5060 OK (15 ms)
3014/3014 (Unspecified) D 0 Unmonitored
3013/3013 (Unspecified) D 0 Unmonitored
3012/3012 (Unspecified) D N 0 Unmonitored
3011/3011 (Unspecified) D N 0 Unmonitored
3010/3010 192.168.2.230 D 5060 Unmonitored
3009/3009 (Unspecified) D 0 Unmonitored
3008/3008 81.184.xz.xz D N 12091 Unmonitored
3007/3007 192.168.5.1 D 5060 Unmonitored
3006/3006 192.168.2.250 D 5060 OK (16 ms)
3005/3005 192.168.2.233 D 5060 OK (31 ms)
3004/3004 192.168.2.232 D 2048 Unmonitored
3002/3002 212.231.xz.xz D N 1025 Unmonitored
datacenter_fax/125 x.x.x.x 5060 Unmonitored
zoonsuite2 x.x.x.x 5060 Unmonitored
zoonsuite x.x.x.x 5060 Unmonitored

8º) Aquí lo tenemos en acción recibiendo una llamada

Llamadas salientes portech mv-378 con asterisk

El siguiente código muestra como aprovechar para las llamadas salientes los 8 canales de nuestro portech mv-378; el código original aquí:

en el extensions.conf, definimos:

[globals]

TRY1=SIP/GSMtrunk
TRY2=SIP/GSMtrunk1
TRY3=SIP/GSMtrunk2
TRY4=SIP/GSMtrunk3
TRY5=SIP/GSMtrunk4
TRY6=SIP/GSMtrunk5
TRY7=SIP/GSMtrunk6
TRY8=SIP/GSMtrunk7

;////////////////////////////////////////////
; ////// moviles ///////////////////////////
;////////////////////////////////////////////

[macro-encuentra-linea]
exten => s,1,set(TRIES=0) ; inicializamos la variable
exten => s,n(nextone),set(TRIES=$[${TRIES} + 1]) ; incrementa 1 a TRIES
exten => s,n,set(DIALSTRING=${TRY${TRIES}}) ; asignamos el valor de TRYn al DIALSTRING
exten => s,n,gotoif($[“${DIALSTRING}” = “”]?donehere) ; vemos si la variable = “” entonces no hay canales
exten => s,n,ChanIsAvail(${DIALSTRING}) ; para ver si el canal esta activo
exten => s,n,gotoif($[${AVAILSTATUS} = 0]?:nextone)
exten => s,n,gotoif($[${GROUP_COUNT(${DIALSTRING})} >= 1]?nextone) ; el canal esta ocupado
exten => s,n,set(GROUP()=${DIALSTRING}) ; Encontramos linea !!!!
exten => s,n,Dial(${DIALSTRING}/${ARG1}) ; Marcamos
exten => s,n,GotoIf($[“${DIALSTATUS}” = “BUSY”]?donehere) ; no podemos llamar 🙁
exten => s,n,NoOp(“Vamos al siguiente canal”);
exten => s,n,goto(nextone) ; TEMP
exten => s,n(donehere),MacroExit() ; finalizamos, no hay canales

[moviles]
exten => _6XXXXXXXX,1,Macro(encuentra-linea,${EXTEN})
exten => _6XXXXXXXX,n,hangup()