Grandstream GXW4104 y Asterisk (Telmex y Axtel)

En esta ocasión nos tocó configurar un equipo Grandstream GXW4104 para hacerlo funcionar con Asterisk y líneas Axtel y Telmex. Para los que aún no lo conocen el GXW4104 es un gateway SIP - FXO para poder conectar líneas telefónicas de la PSTN a un PBX en caso de que no puedan meter tarjetas PCI como Digium o Sangoma.

Siguiendo el manual que pone Grandstream para la integración con Asterisk el proceso fue relativamente fácil, lo complicado salió en la integración con las líneas de la PSTN. Como es costumbre en los equipos Grandstream no es muy "sencilla" la configuración, y el motivo de este post es compartirles lo que hice para que no se metan en tantos problemas.

La configuración consta en 3 cosas:

1. Configuración de Grandstream GXW4104





Dadas las características de los Telcos en México, la frecuencia en los tonos se deben de configurar a 425 Hz. NOTA IMPORTANTE: Si tienen algunos problemas para la detección de colgado con algún otro proveedor que no sea Telmex (Axtel en mi caso), es probable que antes de mandar la señal de Fast Busy (2 tonos por segundo) mande un tono de ocupado de 1 tono por seguno (.5 segundos de prendido, .5 segundos apagado), por lo que tendrían que adecuar la línea en Channels llamada Busy Tone para que quede algo como:

ch1-4:f1=425@-10,f2=425@-10,c=50/50;


Si en el mismo equipo tienen líneas de diferentes proveedores mezcladas es posible poder especificar por canal cada configuración. En el siguiente ejemplo en el puerto 1 y 2 tenemos líneas que mandan un tono Fast Busy como señal de colgado y en el puerto 3 y 4 líneas que mandan tono normal de ocupado:

ch1-2:f1=425@-10,f2=425@-10,c=25/25;ch3-4:f1=425@-10,f2=425@-10,c=50/50;

2. Integración con Asterisk para llamadas de salida:

Ya que la mayoría de las configuraciones de este tipo de equipos se hacen utilizando "Stage Method 1" (en otro post explicaremos que es esto), no es necesario crear diferentes usuarios SIP en Asterisk, sólo se ingresa una entrada en sip.conf:

[gxw410x]
type=peer
context=entrantes
host=192.168.2.252 ; IP del Gateway Grandstream
insecure=port


Y para realizar llamadas basta con configurar nuestro extensions.conf de la siguiente manera:

exten => _XXXXXXXX,1,Dial(SIP/${EXTEN}@gxw410x,40,rRtT)


Con esta configuración el Gateway tomará la primer línea disponible, y aplicará un esquema de Round Robin para seleccionar las líneas en futuras llamadas (en la sección Channels de nuestro Gateway).

Si se quiere seleccionar un puerto especial en el que se quiere realizar la llamada basta con anteponer un 99 + número de puerto a nuestra cadena de marcación, por lo que quedaría:

exten => _XXXXXXXX,1,Dial(SIP/991${EXTEN}@gxw410x,40,rRtT)


De esta manera le podemos indicar que queremos que sólo use el puerto 1.

3. Configuración de Asterisk para llamadas de entrada:

En la configuración del Grandstream, en la sección FXO Lines en el renglón Unconditional Call Forward to VOIP podemos indicar en el campo User ID a qué extensión de nuestro extensions.conf nos va a reenviar todas las llamadas que reciba de la PSTN. Esto significa que tenemos que crear dicha extensión dentro del contexto donde creamos el usuario SIP.

En nuestro caso indicamos en sip.conf que el usuario pertenece al contexto "entrantes" y dentro del Grandstream indicamos que las llamadas de entrada las mande a la extensión 1005, por lo que nuestro extensions.conf puede quedar:

[entrantes]
exten => 1005,1,Ringing
exten => 1005,n,wait(2)
exten => 1005,n,Gotoiftime(10:00-19:00|mon-fri|*|*?1005,Menu)
exten => 1005,n,Background(afterhours)
exten => 1005,n(Menu),Background(menu)
exten => 1005,n,Waitexten(20)
exten => 1005,n,Macro(marcar,SIP,${RECEPCION},30)


Con estos sencillos pasos podemos tener una solución flexible para interconectar líneas analógicas de la PSTN a un Asterisk sin necesidad de instalar tarjetas al servidor.

Espero les haya sido de utilidad.

Integración de Asterisk y Avaya mediante H323

Hace unos meses uno de nuestros clientes pidió integrar Asterisk a su conmutador Avaya, pero el problema es que ya no tenía puertos analógicos o troncales digitales libres, así como soporte para SIP. Antes de que sigan leyendo el post ¡les recomiendo que esta sea su última opción!, ¡no son enchiladas!

Si después de agotar los otros métodos no logran encontrar una forma mas fácil de integrar los PBX entonces tenemos que intentar mediante H323. De la misma forma, antes de irse a la "carnita" del post es importante saber que el protocolo H323 es viejo, casi ya no se encuentra soporte y no tiene las funcionalidades de otros métodos (como transferir llamadas, algunos problemas con el paso de CallerID, etc). Una vez dicho esto entramos en materia.

Todo el proceso, como es de imaginarse, consiste en la configuración correcta tanto de Asterisk como del PBX Avaya, y como yo no soy experto de Avaya solo les copio las configuraciones que se usaron y ya alguna persona capacitada en esta marca les podrá ayudar a adaptarlo a sus necesidades:

IP NETWORK REGION
Region: 3
Location: 1 Authoritative Domain:
Name: CONDUSEF
MEDIA PARAMETERS Intra-region IP-IP Direct Audio: no
Codec Set: 1 Inter-region IP-IP Direct Audio: translated(NAT)
UDP Port Min: 2048 IP Audio Hairpinning? y
UDP Port Max: 2201
DIFFSERV/TOS PARAMETERS RTCP Reporting Enabled? y
Call Control PHB Value: 34 RTCP MONITOR SERVER PARAMETERS
Audio PHB Value: 46 Use Default Server Parameters? y
Video PHB Value: 26
802.1P/Q PARAMETERS
Call Control 802.1p Priority: 7
Audio 802.1p Priority: 6
Video 802.1p Priority: 5 AUDIO RESOURCE RESERVATION PARAMETERS
H.323 IP ENDPOINTS RSVP Enabled? n
H.323 Link Bounce Recovery? y
Idle Traffic Interval (sec): 20
Keep-Alive Interval (sec): 5
Keep-Alive Count: 5


IP NETWORK REGION


INTER-GATEWAY ALTERNATE ROUTING
Incoming LDN Extension:
Conversion To Full Public Number - Delete: Insert:
Maximum Number of Trunks to Use:

BACKUP SERVERS IN PRIORITY ORDER SECURITY PROCEDURES
1 1 challenge
2 2
3 3
4 4
5
6

Inter Network Region Connection Management

src dst codec direct Total Video Dyn
rgn rgn set WAN WAN-BW-limits WAN-BW-limits Intervening-regions CAC IGAR
3 1 1 y :NoLimit :NoLimit n
3 2
3 3 1
3 4
3 5
3 6
3 7
3 8
3 9
3 10
3 11
3 12
3 13
3 14
3 15


SIGNALING GROUP

Group Number: 3 Group Type: h.323
Remote Office? n Max number of NCA TSC: 0
SBS? n Max number of CA TSC: 0
IP Video? n Trunk Group for NCA TSC:
Trunk Group for Channel Selection: 7
Supplementary Service Protocol: b Network Call Transfer? n
T303 Timer(sec): 10

Near-end Node Name: CLAN-2E08 Far-end Node Name: CONDUSEF
Near-end Listen Port: 1720 Far-end Listen Port: 1720
Far-end Network Region: 3
LRQ Required? n Calls Share IP Signaling Connection? n
RRQ Required? n
Media Encryption? n Bypass If IP Threshold Exceeded? n
H.235 Annex H Required? n
DTMF over IP: out-of-band Direct IP-IP Audio Connections? n
IP Audio Hairpinning? n
Interworking Message: PROGress
DCP/Analog Bearer Capability: 3.1kHz


Type Name IP Address
IP CLAN_04A10 192.168.231.179
IP CLAN_DGRO_06A02 172.21 .2 .22
IP CLAN_DGRO_06A03 172.21 .2 .23
IP CLAN_DGRO_07A02 172.21 .2 .24
IP CLAN_DGRO_07A03 172.21 .2 .25
IP CLAN_DRGO_05A02 172.21 .2 .20
IP CLAN_DRGO_05A03 172.21 .2 .21
IP CLAN_DRGO_10A02 172.21 .2 .30
IP CMS 172.16 .2 .10
IP CONDUSEF 172.16 .2 .13
IP Clan-02E09 172.16 .2 .42
IP Clan-03E08 172.16 .2 .41
IP Clan-04E10-Next 172.16 .2 .40
IP DURANGO1_ESS 172.21 .2 .10
IP DURANGO2_ESS 172.21 .2 .11
IP MEDPRO-01A18 172.16 .2 .46



TRUNK GROUP

Group Number: 7 Group Type: isdn CDR Reports: y
Group Name: CONDUSEF COR: 90 TN: 1 TAC: #07
Direction: two-way Outgoing Display? y Carrier Medium: H.323
Dial Access? y Busy Threshold: 255 Night Service:
Queue Length: 0
Service Type: tie Auth Code? n
Member Assignment Method: auto
Signaling Group: 3
Number of Members: 5


Group Type: isdn

TRUNK PARAMETERS
Codeset to Send Display: 6 Codeset to Send National IEs: 6
Charge Advice: none
Supplementary Service Protocol: b Digit Handling (in/out): enbloc/enbloc

QSIG Value-Added? y
Digital Loss Group: 13
Incoming Calling Number - Delete: Insert: Format: pub-unk

Disconnect Supervision - In? y Out? y
Answer Supervision Timeout: 0

TRUNK FEATURES
ACA Assignment? n Measured: internal
Internal Alert? n Maintenance Tests? y
Data Restriction? n NCA-TSC Trunk Member:
Send Name: y Send Calling Number: y
Used for DCS? n Hop Dgt? n Send EMU Visitor CPN? y
Suppress # Outpulsing? y Format: public
UUI IE Treatment: service-provider

Replace Restricted Numbers? n
Replace Unavailable Numbers? n
Send Called/Busy/Connected Number: y
Hold/Unhold Notifications? y
Send UUI IE? y Modify Tandem Calling Number? n
Send UCID? n
Send Codeset 6/7 LAI IE? y


QSIG TRUNK GROUP OPTIONS




Diversion by Reroute? y
Path Replacement? y
Path Replacement with Retention? n
Path Replacement Method: better-route
SBS? n
Display Forwarding Party Name? y
Character Set for QSIG Name: eurofont

TRUNK GROUP
Administered Members (min/max): 1/5
GROUP MEMBER ASSIGNMENTS Total Administered Members: 5

Port Name Night
1: T00231 CONDUSEF
2: T00232 CONDUSEF
3: T00233 CONDUSEF
4: T00234 CONDUSEF
5: T00235 CONDUSEF

Una vez teniendo configurado el enlace por parte de Avaya para usar H323 hacia Asterisk (en este caso Asterisk se quedó con la IP: 172.16.2.13) vamos a ver lo referente a Asterisk. Para este caso utilicé los paquetes sobre Redhat 5.1:
Asterisk 1.4.17
Zaptel 1.4.8
PWLib 1.10.0
OpenH323 1.18.0

Es muy importante que utilicen estas versiones para pwlib y para openh323, ya que utilizando versiones mas recientes no aseguran que se integre completamente.

Como paso 1 hay que compilar pwlib (se requiere openssl-devel y expat-devel previamente):

tar -xzvf pwlib-v1_10_0-src-tar.gz
cd /directorio/de/pwlib_v1_10_0/
./configure
make clean opt
PWLIBDIR=/directorio/de/pwlib_v1_10_0
export PWLIBDIR


Después seguimos con opehh323:

tar -xzvf openh323-v1_18_0-src-tar.gz
cd /directorio/de/openh323_v1_18_0/
./configure
make clean opt
OPENH323=/directorio/de/openh323_v1_18_0
export OPENH323DIR


Ya teniendo tanto pwlib y openh323 compilados e instalados resta instalar Asterisk

tar -xzvf asterisk-1.4.9.tar.gz
cd /directorio/de/asterisk-1.4.9/
./configure
male menuselect (aquí hay que validar que dentro de Asterisk Channels venga seleccionado chan_h323 dentro de Channel Drivers, si no lo permite seleccionar es que no se compiló correctamente pwlib y/o openh323)
make
make install


Ya con esto podemos entrar a la consola de Asterisk y validar que se encuentre registrado el canal H323 de la siguiente manera:

asterisk -vvvvvvvvvvvvvvvvgc
*CLI> core show channeltypes
Type Description Devicestate Indications Transfer
---------- ----------- ----------- ----------- --------
Local Local Proxy Channel Driver yes yes no
SIP Session Initiation Protocol (SIP) yes yes yes
Console OSS Console Channel Driver no yes no
MGCP Media Gateway Control Protocol (MGCP) yes yes no
H323 The NuFone Network's Open H.323 Channel no yes no
Phone Standard Linux Telephony API Driver no yes no
Agent Call Agent Proxy Channel yes yes no
Skinny Skinny Client Control Protocol (Skinny) no yes no
IAX2 Inter Asterisk eXchange Driver (Ver 2) yes yes yes
----------
9 channel drivers registered.


Habiendo validado todo este proceso podemos pasar a la etapa de configuración del sistema:

1. Dentro de /etc/asterisk/h323.conf

[general]
port = 1720
bindaddr = 172.16.2.60 ; Esta es la IP de nuestro Asterisk
disallow=all
allow=alaw ; Validen bien que codecs tiene habilitado Avaya, de otra manera no podrán realizar llamadas
context=default
faststart=yes
h245tunneling=yes
gatekeeper = 172.16.2.16 ; Esta es la IP de Avaya


Para este caso en particular no es necesario configurar clientes H323, ya que mandaremos las llamadas directamente dentro de nuestro extensions.conf a Avaya:

2. Dentro de /etc/asterisk/extensions.conf

[globals]
[default]
exten => _X.,1,Dial(H323/8${EXTEN}@172.16.2.16:1720,40)


Recuerden que la IP de nuestro Avaya para este ejemplo es 172.16.2.16. Y listo, con esto debe de ser suficiente para empezar a pasar llamadas en ambos sentidos. Claro esta que cada integración tiene sus peculiaridades dependiendo de la versión y configuración de ambos equipos, por lo que no pierdan de vista analizar codecs disponibles entre los dos, planes de marcación, configuración del puerto H323 (por default es TCP 1720), etc. Espero les ayude en sus proyectos.

Metfan

Drivers de Unicall para Asterisk 1.4.16

Para todos aquellos que utilizan Unicall para interconectar sus enlaces digitales MFCR2, nuestro amigo Moises Silva publicó su nuevo paquete con todo lo necesario para instalar el soporte Unicall para Asterisk 1.4.16.

El nuevo paquete incluye una modificación para resolver el problema de MusicOnHold en canales Unicall. El paquete incluye:

Asterisk 1.4.16
Zaptel 1.4.7
Unicall 0.0.5pre1
Spandsp 0.0.4
Se puede descargar de esta liga.