Finalmente le toco a un servidor, instalar un conmutador Asterisk con una tarjeta E1. Para ser la primera vez no estuvo tan mal teniendo en cuenta que actualmente se encuentra operando de manera satisfactoria, uno que otro detalle pero nada con tintes de catástrofe.
Para poner las cosas en contexto, desde que inicie en esto de Asterisk siempre encontré información de que en México y otros países no era algo trivial la instalación de enlaces E1, en caso concreto con Telmex.
Bueno estas cosas son empíricas, hasta que uno no se encuentra con el problema, uno no aprende como resolverlo.
Vamos a ver la tarjeta que se uso fue una Wildcard TE122.
Despues de instalar el Linux de tu preferencia (CentOS y Debian son los que mas uso), nuestro sistema debe reconocer la tarjeta, dando el comando lspci | grep Digium podemos ver lo siguiente:
[root@asteriskcentro ~]# lspci | grep Digium
05:02.0 Ethernet controller: Digium, Inc. Unknown device 8001 (rev 11)
05:04.0 Ethernet controller: Digium, Inc. Unknown device 0800 (rev 11)
En este caso aparecen dos, por que también hay una tarjeta analógica TDM800P, con ocho puertos FXO. Hay una serie de aplicaciones que necesitamos instalar para echar a andar esta situación, las cuales son: zaptel, spandsp, libsupertone, libunicall, libmfcr2 y Asterisk. Podemos descargar cada una de estas aplicaciones por separado pero afortunadamente hay alguien (es el desarrollador principal de chan_unicall) que tiene un comprimido con todo lo necesario incluyendo manual de instrucciones, podemos descargarlo desde aquí: http://www.moythreads.com/astunicall/downloads/
La versión que yo use es la1.4.21.2, realmente es fácil la instalación, suponiendo que tienes todas las dependencias, todo se resume a tres cosas: ./configure –prefix=/usr && make && make install.
Terminado esto, y configurado adecuadamente el archivo zaptel.conf tomando como base el ejemplo que acompaña a los archivos de instalación nos queda de la siguiente manera, a lo ultimo hay algo extra con respecto de la tarjeta analógica, en caso de solo tener la tarjeta digital se omite la ultima linea.
[root@asteriskcentro ~]# more /etc/zaptel.conf # MFC/R2 requires CAS signaling # channel 16 is required to transmit ABCD bits so is not used for voice span=1,1,0,cas,hdb3 cas=1-15:1101 dchan=16 cas=17-31:1101 fxsls=32-39
Si verificamos con el comando ztcfg, que lee el archivo zaptel.conf, para verificar la configuración, obtendremos algo similar a lo siguiente:
[root@asteriskcentro ~]# ztcfg -v Zaptel Version: 1.4.11 Echo Canceller: MG2 Configuration ====================== SPAN 1: CAS/HDB3 Build-out: 0 db (CSU)/0-133 feet (DSX-1) 39 channels to configure.
Eso es en caso de ir bien, si se te presenta un error similar a este:
ZT_CHANCONFIG failed on channel 2: Invalid argument (22) Did you forget that FXS interfaces are configured with FXO signaling and that FXO interfaces use FXS signaling?
En mi caso era de que por alguna razón, los módulos no cargaban bien, volviendo a cargar los modulos de zaptel y verificar bien la configuración del archivo, obtenemos que las tarjetas están listas para usarse.
Después de esto, te copias el archivo de ejemplo de unicall.conf, dentro de /etc/asterisk, para modificarlo a tu gusto aunque realmente lo que tienes que verificar es la siguiente linea: protocolvariant=mx,10,4
Esto significa que estamos en México, que son 10 numeros y que los últimos 4 números son los que envía el proveedor, por ejemplo tenemos las siguientes lineas telefónicas en la ciudad de México (55) 51 41 21 00, 51 41 21 02, 51 41 21 06, 51 41 21 07, etc., son diez dígitos y los que cambian son los últimos 2 que identifican cada linea, estos se denominan dígitos ANI y DNI.
Ahora si, iniciamos Asterisk, y verificamos el estado de las canales, realmente al conectar el enlace a nuestra tarjeta surgirán un montón de mensajes, el color del led pasara de rojo a verde, y directo a probar agarramos un celular y marcamos para ver como se comporta.
asteriskcentro*CLI> UC show channels Channel Extension Context Status Language MusicOnHold 1 2107 entrantescentro Idle en default 2 2100 entrantescentro Idle en default 3 2110 entrantescentro Idle en default 4 2113 entrantescentro Idle en default 5 2107 entrantescentro Idle en default 6 2120 entrantescentro Idle en default 7 entrantescentro Idle en default 8 entrantescentro Idle en default 9 entrantescentro Idle en default 10 entrantescentro Idle en default asteriskcentro*CLI>
Configuramos nuestro contexto de llamadas entrantes:
[entrantescentro]
include => ivr
exten => _X.,1,Background(custom/ivrcentro)
exten => _X.,n,WaitExten(15)
exten => _X.,n,Dial(SIP/2100)
exten => 2102,1,Macro(voicemail,SIP/${EXTEN})
exten => 2105,1,Macro(voicemail,SIP/${EXTEN})
exten => 2106,1,Macro(voicemail,SIP/${EXTEN})
exten => 2107,1,Macro(voicemail,SIP/${EXTEN})
exten => 2110,1,Macro(voicemail,SIP/${EXTEN})
exten => 2120,1,Macro(llamar,SIP/${EXTEN})
exten => 2121,1,Macro(llamar,SIP/${EXTEN})
Realizamos una llamada de prueba, y vemos el estado de la consola.
Connected to Asterisk 1.4.21.2 currently running on asteriskcentro (pid = 3281) Verbosity is at least 10 [Oct 23 15:10:38] NOTICE[3395]: chan_unicall.c:2518 handle_uc_event: Unicall/1 event Detected [Oct 23 15:10:39] NOTICE[3395]: chan_unicall.c:2518 handle_uc_event: Unicall/1 event Offered [Oct 23 15:10:39] NOTICE[3395]: chan_unicall.c:2642 handle_uc_event: CRN 33152 - Offered on channel 0 (ANI: , DNIS: 2100, Cat: 1) [Oct 23 15:10:40] NOTICE[3395]: chan_unicall.c:2518 handle_uc_event: Unicall/1 event Accepted -- Executing [2100@entrantescentro:1] NoOp("UniCall/1-1", "2100") in new stack -- Executing [2100@entrantescentro:2] NoOp("UniCall/1-1", "") in new stack -- Executing [2100@entrantescentro:3] Set("UniCall/1-1", "CALLERID(all)="Llamada"") in new stack -- Executing [2100@entrantescentro:4] BackGround("UniCall/1-1", "custom/ivrcentro") in new stack -- <UniCall/1-1> Playing 'custom/ivrcentro' (language 'en') [Oct 23 15:10:40] NOTICE[13441]: chan_unicall.c:2518 handle_uc_event: Unicall/1 event Answered [Oct 23 15:11:02] NOTICE[13441]: chan_unicall.c:1914 unicall_exception: Exception on 23, channel 1 [Oct 23 15:11:02] NOTICE[13441]: chan_unicall.c:2518 handle_uc_event: Unicall/1 event Far end disconnected [Oct 23 15:11:02] NOTICE[13441]: chan_unicall.c:2790 handle_uc_event: CRN 33152 - far disconnected cause=Normal Clearing [16] -- Channel 0 got hangup == Spawn extension (entrantescentro, 2100, 4) exited non-zero on 'UniCall/1-1' -- Hungup 'UniCall/1-1' [Oct 23 15:11:02] NOTICE[3395]: chan_unicall.c:2518 handle_uc_event: Unicall/1 event Drop call [Oct 23 15:11:02] NOTICE[3395]: chan_unicall.c:2518 handle_uc_event: Unicall/1 event Release call -- Unicall/1 released asteriskcentro*CLI>
Lo que hicimos fue marcar al numero cabeza de grupo, el que termina en 2100, si marcamos el numero con terminación 2107 se dirige directamente al usuario sin pasar por el mensaje de bienvenida.
Caso contrario si queremos hacer llamadas creamos un contexto como este:
[salientescentro-local] exten => _XXXXXXXX,1,Dial(Unicall/g1/${EXTEN})
Hasta ahorita todo va bien, conforme pase el tiempo veremos como se comporta esto, y lo pondre por acá.
Date una vuelta por estas paginas y échales un ojo:
http://zarzamora.com.mx/archivo-historico/17


También existe la alternativa de instalar R2 usando chan_zap sin niguna libreria de Unicall y por tanto poder marcar Dial(Zap/g1/1234) en lugar de Dial(Unicall/g1/1234) además de que está en proceso de ser el soporte oficial por Digium y se integra mas sencillo con soluciones como trixbox y elastix.
Para mas información pueden referirse a http://www.libopenr2.org/
comentario por moy — Octubre 23, 2008 @ 4:44 pm
Hola.
Quería saber como logran asociar una extension a un canal de la E1. Por ejemplo, cuando hacen “UC show channels”, veo que el canal 1 tiene asociada la extension “2107″. Dónde configuran esto? busqué y prové varias cosas, pero sin éxito.
Saludos.
comentario por Jose Luis — Octubre 16, 2009 @ 7:36 am