PRIMEROS PASOS EN ASTERISK

PRIMEROS PASOS EN ASTERISK

Primeros pasos en Asterisk

 

En este capítulo usted va a aprender a configurar Asterisk dentro de una configuración PABX simple. El objetivo aqui es que usted pueda tener una primera experiencia con Asterisk, configurando uno o dos telefonos IP, discando entre ellos o para una extención con un mensaje inicial. Mas adelante, mostraremos, con detalles, los canales SIP, IAX y ZAPATA.

3.1 Objetivos del capítulo

 

3.2 Introducción

 

En este capítulo vamos aprender algunos conceptos que van a permitirnos configurar Asterisk de la forma más básica. Al final tenemos un ejercício que podrá ser hecho usando hardware de una puerta FXO o usando una conexión para un provedor VoIP. En los capítulos siguientes vamos aumentar gradualmente la dificuldad. Es muy importante que se entiendan los conceptos presentados en este capítulo para proseguir con los capítulos siguientes.

3.3 Gramática de los archivos de configuración

 

Asterisk es controlado a través de archivos de configuración localizados en el  directorio /etc/asterisk. El formato de los archivos de configuración de Asterisk es semejante a la de los archivos (.ini) de Windows. El punto y coma es el caracter para los comentarios. El signo (=) y el signo (=>) pueden ser usados de forma identica, las lineas en blanco seran ignoradas. Archivo de ejemplo:

 

;

; la primera linea sin comentario debe ser el título de una sección.

;

[sección]

llave = valor ; Designación de variable

[sessao2]

objeto => valor ; Decalración de objeto

 

El interprete de Asterisk toma (=) y (=>) de forma identica. La sintaxis sirve para tornar el código más legíble. Ahora los archivos comparten la misma sintaxis, existen por lo menos tres tipos distintos de gramática.

3.3.1 Grupo simple

El formato de grupo simple es la más básico y usado por archivos de configuración ddonde los objetos son declarados con todas las opciones en la misma linea. Los archivos extensions.conf, meetme.conf y voicemail.conf siguen este formato.

 

[sección]

objeto1 => op1,op2,op3

objeto2 => op1b,op2b,op3b

 

En este ejemplo, el objeto1 es creado con opciones op1, op2 y op3 entanto el objeto 2 es creado con op1b, op2b y op3b.

3.3.2 Formato de objeto con herencia de opciones

Este formato es usado por el zapata.conf y otras interfaces donde hay muchas opciones.  Entretanto, la mayoria de las interfaces y objetos comparten el mismo valor para opciones con otros. En esta clase de archivo de configuración, tipicamente existen una o más secciones que contienen declaraciones de uno o más canales u objetos. Las opciones para el objeto son especificadas encima de la Declaración de objeto y pueden ser cambiadas para la Declaración de otro objeto. Es un concepto difícil de entender, mas muy facil de usar. Considere el ejemplo expresado aqui abajo:

 

[sección]

op1 = bas

op2 = adv

objeto=>1

op1 = int

objeto => 2

 

Las primeras dos configuran el valor de opción op1 y op2 para “bas” y “adv” respectivamente. Cuando el objeto 1 es instanciado, este es creado con su opción 1 siendo “bas” y su opción 2 siendo “adv”. Despues de declarar el objeto 1, cambiamos el valor de opción 1 en “int”. Y  entonces creamos el objeto 2, ahora el objeto 2 es creado con su opción 1 siendo “int” y su opción 2 permaneciendo “adv”.

3.3.3 Objeto entidad compleja

El formato objeto entidad compleja es usado por el iax.conf , sip.conf y otras interfaces las cuales existen numerosas entidades con muchas opciones y que tipicamente no comparten un gran volumen de configuraciónes comunes.  Cada entidad recibe su própio contexto (A veces existe un contexto reservado tal como [general] para las configuraciónes globales). Las opciones entonces son especificadas en la Declaración de contexto. Considere esto:

 

[entidad1]

op1=valor1

op2=valor2

[entidad2]

op1=valor3

op2=valor4

 

La entidad [entidad1] tiene valores valor1 y valor2 para opciones op1 y op2 respectivamente. La entidad [entidad2] tiene valores valor3 y valor4 para las opciones op1 y op2. 

3.4 Configurando una interface con la red pública.

 

Para intercomunicarse con la red pública de telefonia es necesaria una interface de tipo FXO (Foreign Exchange Office) y una linea telefonica comun. Un ramal de una central telefonica analógica existente  puede ser usado tambien. Usted puede obtener una placa FXO comprando una placa Digium TDM400P.

 

En terminos generales, unaa placa FXO es usada para unir la red pública a un PABX, esta placa recibe asi tono. Una placa FXS en cambio puede ser usada para unir un aparato telefonico comun, una linea FXS dara tono.

 

Figura 3.1  Diferencia entre interface FXS y FXO

 

Una pista:

Otra forma es conseguir una placa FXO clon de una X100P. Algunas placas de modem con chipset Motorola y Intel pueden ser usadas. Ellas son difíciles de ser encontradas, pues ya no son fabricadas. En sitios de subastas, en tiendas comerciales  en Internet y en foros, usted puede acabar encontrando una. Estas placas poseen precios más bajos que las placas de Digium. Los chipsets que son conocidos y funcionan son:

 

Motorola 68202-51

Intel 537PU

Intel 537 PG

Intel Ambient MD3200

 

No hya ninguna garantia de que estas placas funcionen con su PC y que asi mismo funcionando no presenten problemas como ECO devido a diferencias de impedancia. Use las por su própia cuenta y riesgo, si usted no quisiera correr riesgos las placas de Digium son una excelente opcion.

3.4.1 Instalando la placa X100P clon

Antes de instalar una placa X100P en su microcomputador, es recomendable que usted desabilite todas las interrupciones y hardware que no está siendo usadas en este momento, como puertos seriales, paralelos, interrupción para vídeo etc...

 

Para instalar su placa X100P usted debe encajarla en un slot PCI y configurar dos archivos de configuración:

 

·        zaptel.conf  en el directorio /etc que es el archivo de configuración de la placa zaptel.

·        “zapata.conf” en el directorio /etc/asterisk que es el archivo de configuración de los canales zapata de Asterisk.

 

No se preocupe en este momento en entender todos los detalles de los archivos de configuración, tenemos un capítulo entero sobre canales zapata. En este momento queremos apenas integrar Asterisk a la red pública usando una placa FXO. Vamos a mostrar abajo el archivo completo y las instrucciones modificadas se presentaran en forma sombrada. A pesar de ocupar varias páginas es la manera más simple de entender la edición del archivo.

 

zaptel.conf

 

# Zaptel Configuration File

#

# This file is parsed by the Zaptel Configurator, ztcfg

#

#

# First come the span definitions, in the format

# span=<span num>,<timing source>,<line build out (LBO)>,<framing>,<coding>[,yellow]

#

# All T1/E1 spans generate a clock signal on their transmit side. The

# <timing source> parameter determines whether the clock signal from the far

# end of the T1/E1 is used as the master source of clock timing. If it is, our

# own clock will synchronise to it. T1/E1's connected directly or indirectly to

# a PSTN provider (telco) should generally be the first choice to sync to. The

# PSTN will never be a slave to you. You must be a slave to it.

#

# Choose 1 to make the equipment at the far end of the E1/T1 link the preferred

# source of the master clock. Choose 2 to make it the second choice for the master

# clock, if the first choice port fails (the far end dies, a cable breaks, or

# whatever). Choose 3 to make a port the third choice, and so on. If you have, say,

# 2 ports connected to the PSTN, mark those as 1 and 2. The number used for each

# port should be different.

#

# If you choose 0, the port will never be used as a source of timing. This is

# appropriate when you know the far end should always be a slave to you. If the

# port is connected to a channel bank, for example, you should always be its

# master. Any number of ports can be marked as 0.

#

# Incorrect timing sync may cause clicks/noise in the audio, poor quality or failed

# faxes, unreliable modem operation, and is a general all round bad thing.

#

# The line build-out (or LBO) is an integer, from the following table:

# 0: 0 db (CSU) / 0-133 feet (DSX-1)

# 1: 133-266 feet (DSX-1)

# 2: 266-399 feet (DSX-1)

# 3: 399-533 feet (DSX-1)

# 4: 533-655 feet (DSX-1)

# 5: -7.5db (CSU)

# 6: -15db (CSU)

# 7: -22.5db (CSU)

#

# The framing is one of "d4" or "esf" for T1 or "cas" or "ccs" for E1

#

# Note: "d4" could be referred to as "sf" or "superframe"

#

# The coding is one of "ami" or "b8zs" for T1 or "ami" or "hdb3" for E1

#

# E1's may have the additional keyword "crc4" to enable CRC4 checking

#

# If the keyword "yellow" follows, yellow alarm is transmitted when no

# channels are open.

#

#span=1,0,0,esf,b8zs

#span=2,1,0,esf,b8zs

#span=3,0,0,ccs,hdb3,crc4

#

# Next come the dynamic span definitions, in the form:

# dynamic=<driver>,<address>,<numchans>,<timing>

#

# Where <driver> is the name of the driver (e.g. eth), <address> is the

# driver specific address (like a MAC for eth), <numchans> is the number

# of channels, and <timing> is a timing priority, like for a normal span.

# use "0" to not use this as a timing source, or prioritize them as

# primary, secondard, etc.  Note that you MUST have a REAL zaptel device

# if you are not using external timing.

#

# dynamic=eth,eth0/00:02:b3:35:43:9c,24,0

#

# Next come the definitions for using the channels.  The format is:

# <device>=<channel list>

#

# Valid devices are:

#

# "e&m"     : Channel(s) are signalled using E&M signalling (specific

#             implementation, such as Immediate, Wink, or Feature Group D

#             are handled by the userspace library).

# "fxsls"   : Channel(s) are signalled using FXS Loopstart protocol.

# "fxsgs"   : Channel(s) are signalled using FXS Groundstart protocol.

# "fxsks"   : Channel(s) are signalled using FXS Koolstart protocol.

# "fxols"   : Channel(s) are signalled using FXO Loopstart protocol.

# "fxogs"   : Channel(s) are signalled using FXO Groundstart protocol.

# "fxoks"   : Channel(s) are signalled using FXO Koolstart protocol.

# "sf"      : Channel(s) are signalled using in-band single freq tone.

#               Syntax as follows:

#                channel# => sf:<rxfreq>,<rxbw>,<rxflag>,<txfreq>,<txlevel>,<txflag>

#               rxfreq is rx tone freq in hz, rxbw is rx notch (and decode)

#               bandwith in hz (typically 10.0), rxflag is either 'normal' or

#               'inverted', txfreq is tx tone freq in hz, txlevel is tx tone

#               level in dbm, txflag is either 'normal' or 'inverted'. Set

#               rxfreq or txfreq to 0.0 if that tone is not desired.

# "unused"  : No signalling is performed, each channel in the list remains idle

# "clear"   : Channel(s) are bundled into a single span.  No conversion or

#             signalling is performed, and raw data is available on the master.

# "indclear": Like "clear" except all channels are treated individually and

#             are not bundled.  "bchan" is an alias for this.

# "rawhdlc" : The zaptel driver performs HDLC encoding and decoding on the

#             bundle, and the resulting data is communicated via the master

#             device.

# "fcshdlc" : The zapdel driver performs HDLC encoding and decoding on the

#             bundle and also performs incoming and outgoing FCS insertion

#             and verification.  "dchan" is an alias for this.

# "nethdlc" : The zaptel driver bundles the channels together into an

#             hdlc network device, which in turn can be configured with

#             sethdlc (available separately).

# "dacs"    : The zaptel driver cross connects the channels starting at

#             the channel number listed at the end, after a colon

# "dacsrbs" : The zaptel driver cross connects the channels starting at

#             the channel number listed at the end, after a colon and

#             also performs the DACSing of RBS bits

#

# The channel list is a comma-separated list of channels or ranges, for

# example:

#

#   1,3,5 (channels one, three, and five)

#   16-23, 29 (channels 16 through 23, as well as channel 29

#

# So, some complete examples are:

#   e&m=1-12

#   nethdlc=13-24

#   fxsls=25,26,27,28

#   fxols=29-32

#

fxsks=1

#bchan=25-47

#dchan=48

#fxols=1-12

#fxols=13-24

#e&m=25-29

#nethdlc=30-33

#clear=44

#clear=45

#clear=46

#clear=47

#fcshdlc=48

#dacs=1-24:48

#dacsrbs=1-24:48

#

# Finally, you can preload some tone zones, to prevent them from getting

# overwritten by other users (if you allow non-root users to open /dev/zap/*

# interfaces anyway.  Also this means they won't have to be loaded at runtime.

# The format is "loadzone=<zone>" where the zone is a two letter country code.

#

# You may also specify a default zone with "defaultzone=<zone>" where zone

# is a two letter country code.

#

# An up-to-date list of the zones can be found in the file zaptel/zonedata.c

#

loadzone = br

#loadzone = us-old

#loadzone=gr

#loadzone=it

#loadzone=fr

#loadzone=de

#loadzone=uk

#loadzone=fi

#loadzone=jp

#loadzone=sp

#loadzone=no

#loadzone=hu

#loadzone=lt

#loadzone=pl

defaultzone=br

#

# Section for PCI Radio Interface

# (see http://www.zapatatelephony.org/app_rpt.html)

#

# The PCI Radio Interface card interfaces up to 4 two-way radios (either

# a base/mobile radio or repeater system) to Zaptel channels. The driver

# may work either independent of an application, or with it, through

# the driver;s ioctl() interface. This file gives you access to specify

# load-time parameters for Radio channels, so that the driver may run

# by itself, and just act like a generic Zaptel radio interface.

#

# Unlike the rest of this file, you specify a block of parameters, and

# then the channel(s) to which they apply. CTCSS is specified as a frequency

# in tenths of hertz, for example 131.8 HZ is specified as 1318. DCS

# for receive is specified as the code directly, for example 223. DCS for

# transmit is specified as D and then the code, for example D223.

#

# The hardware supports a "community" CTCSS decoder system that has

# arbitrary transmit CTCSS or DCS codes associated with them, unlike

# traditional "community" systems that encode the same tone they decode.

#

# this example is a single tone DCS transmit and receive

#

# # specify the transmit tone (in DCS mode this stays constant)

# tx=D371

# # specify the receive DCS code

# dcsrx=223

#

# this example is a "community" CTCSS (if you only want a single tone, then

# only specify 1 in the ctcss list)

#

# # specify the default transmit tone (when not receiving)

# tx=1000

# # Specify the receive freq, the tag (use 0 if none), and the transmit code.

# # The tag may be used by applications to determine classification of tones.

# # The tones are to be specified in order of presedence, most important first.

# # Currently, 15 tones may be specified..

# ctcss=1318,1,1318

# ctcss=1862,1,1862

#

# The following parameters may be omitted if their default value is acceptible

#

# # set the receive debounce time in milliseconds

# debouncetime=123

# # set the transmit quiet dropoff burst time in milliseconds

# bursttime=234

# # set the COR level threshold (specified in tenths of millivolts)

# # valid values are {3125,6250,9375,12500,15625,18750,21875,25000}

# corthresh=12500

# # Invert COR signal {y,n}

# invertcor=y

# # set the external tone mode; yes, no, internal {y,n,i}

# exttone=y

#

# Now apply the configuration to the specified channels:

#

# # We are all done with our channel parameters, so now we specify what

# # channels they apply to

channels=1

 

Zapata.conf

 

; Zapata telephony interface

;

; Configuration file

;

; You need to restart Asterisk to re-configure the Zap channel

; CLI> reload chan_zap.so

;               will reload the configuration file,

;               but not all configuration options are

;               re-configured during a reload.

 

 [trunkgroups]

;

; Trunk groups are used for NFAS or GR-303 connections.

;

; Group: Defines a trunk group.

;        group => <trunkgroup>,<dchannel>[,<backup1>...]

;

;        trunkgroup  is the numerical trunk group to create

;        dchannel    is the zap channel which will have the

;                    d-channel for the trunk.

;        backup1     is an optional list of backup d-channels.

;

;trunkgroup => 1,24,48

;trunkgroup => 1,24

;

; Spanmap: Associates a span with a trunk group

;        spanmap => <zapspan>,<trunkgroup>[,<logicalspan>]

;

;        zapspan     is the zap span number to associate

;        trunkgroup  is the trunkgroup (specified above) for the mapping

;        logicalspan is the logical span number within the trunk group to use.

;                    if unspecified, no logical span number is used.

;

;spanmap => 1,1,1

;spanmap => 2,1,2

;spanmap => 3,1,3

;spanmap => 4,1,4

 

[channels]

;

; Default language

;

;language=en

;

; Default context

;

context=default

;

; Switchtype:  Only used for PRI.

;

; national:       National ISDN 2 (default)

; dms100:         Nortel DMS100

; 4ess:           AT&T 4ESS

; 5ess:           Lucent 5ESS

; euroisdn:       EuroISDN

; ni1:            Old National ISDN 1

; qsig:           Q.SIG

;

switchtype=national

;

; Some switches (AT&T especially) require network specific facility IE

; supported values are currently 'none', 'sdn', 'megacom', 'accunet'

;

;nsf=none

;

; PRI Dialplan:  Only RARELY used for PRI.

;

; unknown:        Unknown

; private:        Private ISDN

; local:          Local ISDN

; national:       National ISDN

; international:  International ISDN

;

;pridialplan=national

;

; PRI Local Dialplan:  Only RARELY used for PRI (sets the calling number's numbering plan)

;

; unknown:        Unknown

; private:        Private ISDN

; local:          Local ISDN

; national:       National ISDN

; international:  International ISDN

;

;prilocaldialplan=national

;

; PRI callerid prefixes based on the given TON/NPI (dialplan)

; This is especially needed for euroisdn E1-PRIs

;

; sample 1 for Germany

;internationalprefix = 00

;nationalprefix = 0

;localprefix = 0711

;privateprefix = 07115678

;unknownprefix =

;

; sample 2 for Germany

;internationalprefix = +

;nationalprefix = +49

;localprefix = +49711

;privateprefix = +497115678

;unknownprefix =

;

; PRI resetinterval: sets the time in seconds between restart of unused

; channels, defaults to 3600; minimum 60 seconds.  Some PBXs don't like

; channel restarts. so set the interval to a very long interval e.g. 100000000

; or 'never' to disable *entirely*.

;

;resetinterval = 3600

;

; Overlap dialing mode (sending overlap digits)

;

;overlapdial=yes

;

; PRI Out of band indications.

; Enable this to report Busy and Congestion on a PRI using out-of-band

; notification. Inband indication, as used by Asterisk doesn't seem to work

; with all telcos.

;

; outofband:      Signal Busy/Congestion out of band with RELEASE/DISCONNECT

; inband:         Signal Busy/Congestion using in-band tones

;

; priindication = outofband

;

; If you need to override the existing channels selection routine and force all

; PRI channels to be marked as exclusively selected, set this to yes.

; priexclusive = yes

;

; ISDN Timers

; All of the ISDN timers and counters that are used are configurable.  Specify

; the timer name, and its value (in ms for timers).

;

; pritimer => t200,1000

; pritimer => t313,4000

;

; To enable transmission of facility-based ISDN supplementary services (such

; as caller name from CPE over facility), enable this option.

; facilityenable = yes

;

;

; Signalling method (default is fxs).  Valid values:

; em:             E & M

; em_w:           E & M Wink

; featd:          Feature Group D (The fake, Adtran style, DTMF)

; featdmf:        Feature Group D (The real thing, MF (domestic, US))

; featdmf_ta:     Feature Group D (The real thing, MF (domestic, US)) through

;                 a Tandem Access point

; featb:          Feature Group B (MF (domestic, US))

; fxs_ls:         FXS (Loop Start)

; fxs_gs:         FXS (Ground Start)

; fxs_ks:         FXS (Kewl Start)

; fxo_ls:         FXO (Loop Start)

; fxo_gs:         FXO (Ground Start)

; fxo_ks:         FXO (Kewl Start)

; pri_cpe:        PRI signalling, CPE side

; pri_net:        PRI signalling, Network side

; gr303fxoks_net: GR-303 Signalling, FXO Loopstart, Network side

; gr303fxsks_cpe: GR-303 Signalling, FXS Loopstart, CPE side

; sf:             SF (Inband Tone) Signalling

; sf_w:           SF Wink

; sf_featd:       SF Feature Group D (The fake, Adtran style, DTMF)

; sf_featdmf:     SF Feature Group D (The real thing, MF (domestic, US))

; sf_featb:       SF Feature Group B (MF (domestic, US))

; e911:           E911 (MF) style signalling

;

; The following are used for Radio interfaces:

; fxs_rx:         Receive audio/COR on an FXS kewlstart interface (FXO at the

;                 channel bank)

; fxs_tx:         Transmit audio/PTT on an FXS loopstart interface (FXO at the

;                 channel bank)

; fxo_rx:         Receive audio/COR on an FXO loopstart interface (FXS at the

;                 channel bank)

; fxo_tx:         Transmit audio/PTT on an FXO groundstart interface (FXS at

;                 the channel bank)

; em_rx:          Receive audio/COR on an E&M interface (1-way)

; em_tx:          Transmit audio/PTT on an E&M interface (1-way)

; em_txrx:        Receive audio/COR AND Transmit audio/PTT on an E&M interface

;                 (2-way)

; em_rxtx:        Same as em_txrx (for our dyslexic friends)

; sf_rx:          Receive audio/COR on an SF interface (1-way)

; sf_tx:          Transmit audio/PTT on an SF interface (1-way)

; sf_txrx:        Receive audio/COR AND Transmit audio/PTT on an SF interface

;                 (2-way)

; sf_rxtx:        Same as sf_txrx (for our dyslexic friends)

;

signalling=fxs_ks

;

; For Feature Group D Tandem access, to set the default CIC and OZZ use these

; parameters:

;defaultozz=0000

;defaultcic=303

;

; A variety of timing parameters can be specified as well

; Including:

;    prewink:     Pre-wink time (default 50ms)

;    preflash:    Pre-flash time (default 50ms)

;    wink:        Wink time (default 150ms)

;    flash:       Flash time (default 750ms)

;    start:       Start time (default 1500ms)

;    rxwink:      Receiver wink time (default 300ms)

;    rxflash:     Receiver flashtime (default 1250ms)

;    debounce:    Debounce timing (default 600ms)

;

rxwink=300              ; Atlas seems to use long (250ms) winks

;

; How long generated tones (DTMF and MF) will be played on the channel

; (in miliseconds)

;toneduration=100

;

; Whether or not to do distinctive ring detection on FXO lines

;

;usedistinctiveringdetection=yes

 

;

; Whether or not to use caller ID

;

usecallerid=yes

;

; Type of caller ID signalling in use

;     bell     = bell202 as used in US

;     v23      = v23 as used in the UK

;     dtmf     = DTMF as used in Denmark, Sweden and Netherlands

;

;cidsignalling=bell

;

; What signals the start of caller ID

;     ring     = a ring signals the start

;     polarity = polarity reversal signals the start

;

;cidstart=ring

;

; Whether or not to hide outgoing caller ID (Override with *67 or *82)

;

hidecallerid=no

;

; Whether or not to enable call waiting on FXO lines

;

callwaiting=yes

;

; Whether or not restrict outgoing caller ID (will be sent as ANI only, not

; available for the user)

; Mostly use with FXS ports

;

;restrictcid=no

;

; Whether or not use the caller ID presentation for the outgoing call that the

; calling switch is sending.

;

usecallingpres=yes

;

; Some countries (UK) have ring tones with different ring tones (ring-ring),

; which means the callerid needs to be set later on, and not just after

; the first ring, as per the default.

;

;sendcalleridafter=1

;

;

; Support Caller*ID on Call Waiting

;

callwaitingcallerid=yes

;

; Support three-way calling

;

threewaycalling=yes

;

; Support flash-hook call transfer (requires three way calling)

; Also enables call parking (overrides the 'canpark' parameter)

;

transfer=yes

;

; Allow call parking

; ('canpark=no' is overridden by 'transfer=yes')

;

canpark=yes

;

; Support call forward variable

;

cancallforward=yes

;

; Whether or not to support Call Return (*69)

;

callreturn=yes

;

; Stutter dialtone support: If a mailbox is specified without a voicemail

; context, then when voicemail is received in a mailbox in the default

; voicemail context in voicemail.conf, taking the phone off hook will cause a

; stutter dialtone instead of a normal one.

;

; If a mailbox is specified *with* a voicemail context, the same will result

; if voicemail recieved in mailbox in the specified voicemail context.

;

; for default voicemail context, the example below is fine:

;

;mailbox=1234

;

; for any other voicemail context, the following will produce the stutter tone:

;

;mailbox=1234@context

;

; Enable echo cancellation

; Use either "yes", "no", or a power of two from 32 to 256 if you wish to

; actually set the number of taps of cancellation.

;

echocancel=yes

;

; Generally, it is not necessary (and in fact undesirable) to echo cancel when

; the circuit path is entirely TDM.  You may, however, reverse this behavior

; by enabling the echo cancel during pure TDM bridging below.

;

echocancelwhenbridged=yes

;

; In some cases, the echo canceller doesn't train quickly enough and there

; is echo at the beginning of the call.  Enabling echo training will cause

; asterisk to briefly mute the channel, send an impulse, and use the impulse

; response to pre-train the echo canceller so it can start out with a much

; closer idea of the actual echo.  Value may be "yes", "no", or a number of

; milliseconds to delay before training (default = 400)

;

;echotraining=yes

;echotraining=800

;

; If you are having trouble with DTMF detection, you can relax the DTMF

; detection parameters.  Relaxing them may make the DTMF detector more likely

; to have "talkoff" where DTMF is detected when it shouldn't be.

;

;relaxdtmf=yes

;

; You may also set the default receive and transmit gains (in dB)

;

rxgain=0.0

txgain=0.0

;

; Logical groups can be assigned to allow outgoing rollover.  Groups range

; from 0 to 63, and multiple groups can be specified.

;

group=1

;

; Ring groups (a.k.a. call groups) and pickup groups.  If a phone is ringing

; and it is a member of a group which is one of your pickup groups, then

; you can answer it by picking up and dialing *8#.  For simple offices, just

; make these both the same

;

callgroup=1

pickupgroup=1

 

;

; Specify whether the channel should be answered immediately or if the simple

; switch should provide dialtone, read digits, etc.

;

immediate=no

;

; Specify whether flash-hook transfers to 'busy' channels should complete or

; return to the caller performing the transfer (default is yes).

;

;transfertobusy=no

;

; CallerID can be set to "asreceived" or a specific number if you want to

; override it.  Note that "asreceived" only applies to trunk interfaces.

;

;callerid=2564286000

;

; AMA flags affects the recording of Call Detail Records.  If specified

; it may be 'default', 'omit', 'billing', or 'documentation'.

;

;amaflags=default

;

; Channels may be associated with an account code to ease

; billing

;

;accountcode=lss0101

;

; ADSI (Analog Display Services Interface) can be enabled on a per-channel

; basis if you have (or may have) ADSI compatible CPE equipment

;

;adsi=yes

;

; On trunk interfaces (FXS) and E&M interfaces (E&M, Wink, Feature Group D

; etc, it can be useful to perform busy detection either in an effort to

; detect hangup or for detecting busies.  This enables listening for

; the beep-beep busy pattern.

;

;busydetect=yes

;

; If busydetect is enabled, it is also possible to specify how many busy tones

; to wait for before hanging up.  The default is 4, but better results can be

; achieved if set to 6 or even 8.  Mind that the higher the number, the more

; time that will be needed to hangup a channel, but lowers the probability

; that you will get random hangups.

;

;busycount=4

;

; If busydetect is enabled, it is also possible to specify the cadence of your

; busy signal.  In many countries, it is 500msec on, 500msec off.  Without

; busypattern specified, we'll accept any regular sound-silence pattern that

; repeats <busycount> times as a busy signal.  If you specify busypattern,

; then we'll further check the length of the sound (tone) and silence, which

; will further reduce the chance of a false positive.

;

;busypattern=500,500

;

; NOTE: In the Asterisk Makefile you'll find further options to tweak the busy

; detector.  If your country has a busy tone with the same length tone and

; silence (as many countries do), consider defining the

; -DBUSYDETECT_COMPARE_TONE_AND_SILENCE option.

;

; Use a polarity reversal to mark when a outgoing call is answered by the

; remote party.

;

;answeronpolarityswitch=yes

;

; In some countries, a polarity reversal is used to signal the disconnect of a

; phone line.  If the hanguponpolarityswitch option is selected, the call will

; be considered "hung up" on a polarity reversal.

;

;hanguponpolarityswitch=yes

;

; On trunk interfaces (FXS) it can be useful to attempt to follow the progress

; of a call through RINGING, BUSY, and ANSWERING.   If turned on, call

; progress attempts to determine answer, busy, and ringing on phone lines.

; This feature is HIGHLY EXPERIMENTAL and can easily detect false answers,

; so don't count on it being very accurate.

;

; Few zones are supported at the time of this writing, but may be selected

; with "progzone"

;

; This feature can also easily detect false hangups. The symptoms of this is

; being disconnected in the middle of a call for no reason.

;

;callprogress=yes

;progzone=us

;

; FXO (FXS signalled) devices must have a timeout to determine if there was a

; hangup before the line was answered.  This value can be tweaked to shorten

; how long it takes before Zap considers a non-ringing line to have hungup.

;

;ringtimeout=8000

;

; For FXO (FXS signalled) devices, whether to use pulse dial instead of DTMF

;

;pulsedial=yes

;

; For fax detection, uncomment one of the following lines.  The default is *OFF*

;

;faxdetect=both

;faxdetect=incoming

;faxdetect=outgoing

;faxdetect=no

;

; Select which class of music to use for music on hold.  If not specified

; then the default will be used.

;

;musiconhold=default

;

; PRI channels can have an idle extension and a minunused number.  So long as

; at least "minunused" channels are idle, chan_zap will try to call "idledial"

; on them, and then dump them into the PBX in the "idleext" extension (which

; is of the form exten@context).  When channels are needed the "idle" calls

; are disconnected (so long as there are at least "minidle" calls still

; running, of course) to make more channels available.  The primary use of

; this is to create a dynamic service, where idle channels are bundled through

; multilink PPP, thus more efficiently utilizing combined voice/data services

; than conventional fixed mappings/muxings.

;

;idledial=6999

;idleext=6999@dialout

;minunused=2

;minidle=1

;

; Configure jitter buffers in zapata (each one is 20ms, default is 4)

;

;jitterbuffers=4

;

; You can define your own custom ring cadences here.  You can define up to 8

; pairs.  If the silence is negative, it indicates where the callerid spill is

; to be placed.  Also, if you define any custom cadences, the default cadences

; will be turned off.

;

; Syntax is:  cadence=ring,silence[,ring,silence[...]]

;

; These are the default cadences:

;

;cadence=125,125,2000,-4000

;cadence=250,250,500,1000,250,250,500,-4000

;cadence=125,125,125,125,125,-4000

;cadence=1000,500,2500,-5000

;

; Each channel consists of the channel number or range.  It inherits the

; parameters that were specified above its declaration.

;

; For GR-303, CRV's are created like channels except they must start with the

; trunk group followed by a colon, e.g.:

;

; crv => 1:1

; crv => 2:1-2,5-8

;

;

;callerid="Green Phone"<(256) 428-6121>

;channel => 1

;callerid="Black Phone"<(256) 428-6122>

;channel => 2

;callerid="CallerID Phone" <(256) 428-6123>

;callerid="CallerID Phone" <(630) 372-1564>

;callerid="CallerID Phone" <(256) 704-4666>

;channel => 3

;callerid="Pac Tel Phone" <(256) 428-6124>

;channel => 4

;callerid="Uniden Dead" <(256) 428-6125>

;channel => 5

;callerid="Cortelco 2500" <(256) 428-6126>

;channel => 6

;callerid="Main TA 750" <(256) 428-6127>

;channel => 44

;

; For example, maybe we have some other channels which start out in a

; different context and use E & M signalling instead.

;

;context=remote

;sigalling=em

;channel => 15

;channel => 16

 

;signalling=em_w

;

; All those in group 0 I'll use for outgoing calls

;

; Strip most significant digit (9) before sending

;

;stripmsd=1

;callerid=asreceived

;group=0

;signalling=fxs_ls

;channel => 45

 

;signalling=fxo_ls

;group=1

;callerid="Joe Schmoe" <(256) 428-6131>

;channel => 25

;callerid="Megan May" <(256) 428-6132>

;channel => 26

;callerid="Suzy Queue" <(256) 428-6233>

;channel => 27

;callerid="Larry Moe" <(256) 428-6234>

;channel => 28

;

; Sample PRI (CPE) config:  Specify the switchtype, the signalling as either

; pri_cpe or pri_net for CPE or Network termination, and generally you will

; want to create a single "group" for all channels of the PRI.

;

; switchtype = national

; signalling = pri_cpe

; group = 2

; channel => 1-23

 

;

 

;  Used for distintive ring support for x100p.

;  You can see the dringX patterns is to set any one of the dringXcontext fields

;  and they will be printed on the console when an inbound call comes in.

;

;dring1=95,0,0

;dring1context=internal1

;dring2=325,95,0

;dring2context=internal2

; If no pattern is matched here is where we go.

context=default

channel => 1

 

Luego de configurar los archivos cargue los drivers zaptel.

 

modprobe zaptel

ztcfg –vvvvvv

modprobe wcfxo

asterisk -vvvvvgc

3.5 Configuración de los telefonos IP SIP

 

En este capítulo vamos a dar una visión general de como configurar los telefonos SIP.  El objetivo en este momento es que usted pueda configurar un PABX simple. Más adelante usted va a tener una sección entera dedicada a SIP y podremos ver en detalles la configuración.

 

SIP es configurado desde el archivo /etc/asterisk/sip.conf y contiene parametros relacionados con la configuración de los telefonos y operadoras SIP. Los clientes SIP deven estar configurados antes que puedan hacer y recibir llamadas.

 

El archivo SIP es leido de encima para abajo. La primera sección contiene las opciones globales [general]. Estas opciones son: la direccion IP y número de puerto al cual elservidor está ligado.

 

Las secciones siguientes definen los parametros de clientes tales como el nombre de usuário, contraseña, y direccion IP general para clientes no registrados. Las secciones siguientes son el nombre de cliente entre llaves ([]’s) seguida de las respectivas opciones.

 

Configuraciónes globales (Sección [general])

 

allow: Permite que un determinado codec sea usado.

bindaddr: Dirección IP donde Asterisk irá a esperar por las conexiones SIP. El comportamiento general es esperar en todas las interfaces y direcciónes secundárias.

context: Configura el contexto general donde todos los clientes seran colocados, a menos que sea sobrescrito en la definición de entidad.

disallow: Prohíbe un determinado codec.

bindport: Puerto que Asterisk debe esperar por conexiones de entrada SIP. El mas general o usado es el puerto 5060.

maxexpirey: Tiempo máximo para registro en segundos.

defaultexpirey: Tiempo por defecto para registrarse en segundos.

register: Registra Asterisk con otro host. El formato es una dirección SIP opcionalmente seguido por una barra normal (/) y una extensión.

3.5.1 Archivo ejemplo de sip.conf sección general [general]

[general]

bindport = 5060

bindaddr = 10.1.30.45

context = default

disallow = all

allow = ulaw

maxexpirey = 120

defaultexpirey = 80

3.5.2 Opciones para cada telefono

Despues de la sección general, siguen las definiciones de las entidades generales SIP. Es bueno recordar que en esta sección vamos apenas a dar una introducción a el archivo sip.conf. Tenemos una sección específica para detallar los otros parametros.  Las entradas son divididas en tres categorias:

 

peer: Entidad para la cual Asterisk envia llamadas.

user: Entidad que hace llamadas a través de Asterisk.

friend: las dos interiores al mismo tiempo.

 

type: Configura la clase de conexion, las opciones son peer, user y friend.

 

host: Configura la dirección IP o el nombre de host. Se puede usar tambiém la opção ‘dynamic’ donde se espera que el telefono se registre, es la opcion más común.

 

username: Esta opción configura el nombre de usuário que  Asterisk intenta conectar cuando una llamada es recibida.

 

secret:  Un secreto compartido usado para autentificar los peers y users haciendo una llamada.

3.5.3 Ejemplo completo de SIP

[general]

bindport=5060

bindaddr=10.1.30.45

context=default

 

[cisco]

type=friend

secret=mysecret

host=10.1.30.50

canreinvite=no

mailbox=8580

context=trusted

 

[xlite]

type=friend

secret=xlite

host=dynamic

defaultip=10.1.30.17

mailbox=8590

3.6 Introducción al plano de discado

 

El plano de discado es el corazón de Asterisk, en la medida, que este define como Asterisk irá a gerenciar las llamadas. Este consiste de una lista de instrucciones o pasos que Asterisk debería seguir. Esas instrucciones son disparadas a partir dos dígitos recibidos de un canal o aplicación. Es fundamental para configurar Asterisk, que se entienda el plano de discado.

 

La mayor parte del plano de discado está contenida en el archivo extensions.conf en el directorio /etc/asterisk.  El archivo puede ser separado en quatro partes:

 

Aplicaciones

 

Contextos

 

Extensiones

 

Prioridads

 

En este capítulo vamos a ver como crear un plano de discado básico, pero que atiende a nuestras necesidades actuales. Más adelante usteds tendra la oportunidad de conocer el plano de discado más a fondo.

 

Si usted instaló los archivos de ejemplo, ya existe el extensions.conf.  En nuestro caso será más interesante comenzar de zero. Esto va a ayudar al aprendizaje y podremos abordar paso a paso cada parte del archivo de plano de discado.

3.6.1 Contextos

Los contextos tienen un papel importante en Asterisk en lo que respercta a organización y seguridad del plano de discado. los contextos tambiém definen el objetivo y permiten separar diferentes partes del plano de discado. Un punto que llama la atencion es que los contextos estan ligados diretamente a los canales. Cada canal existe dentro de un contexto. Cuando una llamada entra al Asterisk por un canal ella es procesada dentro de un contexto.

 

Ejemplificando, vamos a suponer que usted tenga dos clases de ramales, aquellos que pueden hacer llamadas de larga distancia y aquellos que no.  Usted puede crear dos contextos, [gerente] y [funcionário]. Dentro del contexto [gerentes] cuando el dígito  “0”  es discado, se oye el tono de discado de la red pública. Dentro del contexto [funcionário] cuando el dígito “0” es discado es recibida, por ejemplo, por una grabacion “llamada no autorizada”.

 

Por otro lado, una llamada es recibida dentro del contexto del canal. Con esto diferentes canales pueden ser recibidos en diferentes telefonos dependiendo del contexto selecionado. Esto puede ser útil para tener una recepción diferente para cada compañia compartiendo un mismo servidor Asterisk.

 

Contextos tambiém son usados para crear menus de voz que dan al usuário una lista de extensiones para escojer presionando las teclas de um telefono multifrequencial. Esta funcionalidad es normalmente conocida como auto-atencion de llamadas. Auto-atencion de llamadas será visto en capítulos posteriores.

 

Los contextos recibem su nombre dentro de llaves ([]s). Por ejemplo, si nosotros hiciéramon la creacion de un contexto para la entrada de llamadas, podríamos definir esta  como sigue:

 

[entrada]

 

Todas las instrucciones colocadas depués de esta definicion son partes del contexto. Para iniciar un nuevo contexto, simplemente escriba el nuevo contexto [nuevocontexto]. En el  início del archivo extensions.conf existe un contexto llamado [globals]. El contexto globals es donde las variábles son definidas y pueden ser usadas por todo el plano de discado.

3.6.2 Extensiones

Dentro de cada contexto seran definidas diversas extenciones. En Asterisk, una extensión es un string que dispara un evento. Vea este ejemplo:

 

exten=>8580,1,Dial(SIP/8580,20)

exten=>8580,2,voicemail(u8580)

exten=>8580,101,voicemail(b8580)

 

A instrución “exten=> “ describe cual es el próximo passo para la llamada. El “8580” es un conjunto de dígitos que fue recibido (número discado). El “1”, “2” y “101” son las prioridads que determinam la orden de ejecución de los comandos.  En este ejemplo, discando “8580” sonará el telefone IP registrado como “8580”, el cual de no ser  atendido en 20 segundos será desviado para la prioridad 2 en la casilla de correo de voz con un mensaje “no atendida”. Si estibiese ocupado es desviado para la prioridad 101 y va para el correo de voz con el mensaje, “ocupado”.

 

Las extensiones determinan el flujo de las llamadas. Ahora las extensiones podran ser usadas para especificar las extensiones, ellas pueden ser usadas para más que esto en Asterisk. Una extensión puede ser creada con la sintaxis definida abajo:

 

exten=> número (nombre), prioridad, aplicación

El comando “exten=>” es seguido por un número de extensión, una coma, la prioridad, otra coma y finalmente la aplicación.

3.6.3 Prioridads

Prioridads son pasos numerados de execución de cada extensión. Cada prioridad llama a una aplicación especifica. Normalmente estos números de prioridad comienzan con 1 y aumentan de uno en uno en cada extensión. Los números de prioridad como usted vío encima no siempre son consecutivos. Las prioridads son corridas en orden numérica.

3.6.4 Aplicaciones

Las aplicaciones son parte fundamental de Asterisk, ellas tratan al canal de voz, tocando sonidos, aceptando dígitos o cortando una llamada. Las aplicaciones son llamadas con opciones que afectan a su forma de funcionamento. Usted puede usar show applications en interface de linea de comando de Asterisk. En la medida en que usted construye su primer plano de discado usted va a aprender a usar las aplicaciones de forma apropiada. Usted puede ver las opciones de aplicación instaladas en Asterisk usando el comando:

 

CLI>show applications



3.6.5 Creando un ambiente de tests

 

Figura 3.2  Laboratório de voz sobre IP

 

La manera mas economica de testear Asterisk es conectarse a un provedor (en www.voipcharges.com usted puede encontrar una lista de proveedores que actuan en cualquer país del mundo), vamos a ver como se conecta a un proveedor en el capítulo relativo a los canales SIP. Otra forma es usar una placa FXO. Para hacer el laboratório descripto usted va a precisar de dos PCs, Pentium 300 Mhz o mayores com 256 MB RAM por lo menos. Si usted tubiera un único PC puede usar el vmware (no es freeware) y usted precisara por lo menos 512 MB RAM. Vamos a usar el softfone gratuito de counterpath el xlite. Usted puede bajarlo de www.counterpath.com. Existen otros softfones gratuítos como el Sjphone de SJLabs www.sjlabs.com. Ciertamente usted encontrará otros buscando en Internet. Puede ser tambiém que los dos citados arriba no existan más cuando usted estubiese leyendo este material. Usted puede también crear este laboratório usando un equipamento para Asterisk y un adaptador de telefonia analógico de dos canales.

 

Paso 1: Edite el archivo sip.conf y adicione la configuración de un ramal con número 2000.

 

[general]

bindport=5060

bindaddr=10.1.30.45 ; Coloque aqui la dirección IP de su servidor

context=default

allow=all

 

[2000]

type=friend

secret=2000

host=dynamic

canreinvite=no

 

Paso 2: Repita el passo 1 ahora para el ramal 2001

 

Paso 3: Configure los softphone xlite de ramal 2000 para Asterisk.

 

a)    Ejecute el programa de instalación

 

b)    Pressione “next” en la primeira pantalla

c)     Acepte el contrato de licencia

 

d)    Acepte las próximas ventanas en general hasta terminar la instalación. En otras palabras NEXT->NEXT->FINISH.

 

e)    Entre en el menu de X-LITE presionando el ícono mostrado abajo:

 

 

f)      En la siguinte pantalla escoja “system settings”.

 

g)    En la próxima escoja SIP PROXY.

 

h)    Escoja Default

 

i)      Complete los siguientes campos:

 

Display Name: 2000

Username: 2000

Authorization User: 2000

Password: 2000

Domain/Realm: Dirección IP del servidor

SIP Proxy: Dirección IP del servidor

 

j)      Cierre el XLITE e abralo de nuevo.

 

k)    Confirme que el telefono fue registrado por Asterisk con el comando sip show peers.

 

Paso 4: Repita la configuración de XLITE para el softphone 2001.

3.6.6 Creando un plano de discado simple

Ahora, estamos listos para nuestro primer ejemplo de plano de discado. Por favor, presten atención a la manera en que cada prioridad llama una aplicación. Note que en este ejemplo tenemos apenas una extensión creada con SIP. En estos ejemplos se asume que usted tiene una placa FXO. Vamos a mostrar los ejemplos y explicar paso a paso.

 

Ahora estamos listos para crear el extensions.conf de la forma mas simple posible. En este ejemplo todo lo que Asterisk irá a hacer es responder a una llamada, tocar un sonido que dice “adios” y colgar.

 

La extensión especial ”s”

 

Vamos a comezar viendo la extensión especial ‘s’ que significa inicio (start). De una forma general la llamada inicia un contexto al cual el canal pertenece. La extensión ‘s’ es inmediatamente ejecutada al entrar en un canal. En nuestro ejemplo vamos a crear un plano de discado con la extensión ‘s’

 

Las aplicaciones Answer(), Hangup() y Playback()

 

Si vamos a responder a una llamada, es mejor que conoscamos las aplicaciones que van a hacer esto.  La aplicación answer() es usada para responder a un canal que está sonando. Esta hace la configuración inicial de llamada y puede hacer otras funciones. Pocas aplicaciones no requierem que necesariamente se responda (Answer()) al canal antes de hacer cualquer otra cosa

 

La aplicación playback() es usada para hacer sonar un archivo de sonido previamente grabado sobre un canal. Cuando la aplicación Playback() está siendo ejecutada, cualquier dígito presionado por el usuário es simplemente ignorado. El formato es Playback(nombredearchivo), este hace sonar el archivo con la extensión .gsm en el diretório de sonido por defecto.

 

La aplicación hangup() face exactamente lo que su nombre dice. Ella cuelga un canal activo. Usted deveria usárla en el fin de contexto una vez que usted quiera colgar a quien no precise estar conectado al sistema.

 

Ahora, estamos listos para nuestro primeir ejemplo de plano de discado. Por favor, presten atención a la manera que cada prioridad llama una aplicación. Note que en este ejemplo tenemos apenas una extensión creada con SIP. En estos ejemplos asumimos que usted tiene una placa FXO. Vamos a mostrar los ejemplos y explicar paso a paso.

 

[entrada]

exten=>s,1,answer()

exten=>s,2,playback(goodbye)

exten=>s,3,hangup()

 

Una llamada que entre por la FXO es enviada dentro del contexto [entrada] (Este contexto [entrada] debe estar configurado en el archivo zapata.conf para el canal FXO) y es enviada para la extensión ‘s’. Tenemos tres prioridads en el contexto, 1, 2 y 3. Cada prioridad llama un aplicativo. Vamos a observar de cerca las prioridads:

 

La prioridad 1 llama a la aplicación answer(), Asterisk toma cuenta de la linea y configura la llamada. Despúes de responder la linea, asterisk va para la próxima prioridad.

 

Prioridad 2, Asterisk llama a la aplicación playback() para tocar el archivo de sonido goodbye.gsm (por tanto vamos usar los mensajes en ingles), este mensaje dará un saludo de adios al usuário.

 

Por fin la prioridad 3 irá a desconectar al usuário.

Un ejemplo más útil

Ahora que ya comezamos con algo simple, vamos a incrementar aprendiendo un poco de los aplicativos background() y goto(). Estas dos aplicaciones iran a permitirnos crear planos de discado, con mucho más funcionalidad.

 

La llave para sistemas interativos basados en Asterisk está en la aplicación Background(). Ella permite que usted grave un archivo de sonido, pero cuando el originador presiona una tecla eso interrumpe la grabacíon y manda para la extensíon correspondiente a los dígitos discados.

 

Otra aplicación muy útil es el goto(). Como su nombre lo inplica, este salta de un contexto actual, extensión y prioridad para un contexto específico y prioridad especifica. La aplicación goto() torna fácil el movimiento entre diferentes partes del plano de discado. El formato del comando goto() precisa un contexto de destino y prioridad como argumentos.

 

exten=>extensión, prioridad,Goto(contexto,extensión, prioridad)

 

Formatos válidos del comando Goto() son :

 

Goto(contexto,extensión,prioridad)

Goto(extensión,prioridad)

Goto(prioridad)

 

En este ejemplo, vamos asumir que somos una empresa de soporte, entrenamiento y ventas. Vamos a crear un sistema interactivo que permita al usuário selecionar para que área de la empresa esta quiera ser redirecionado. En primer lugar vamos a usar el comando Background() para tocar un mensaje “disque 1 para soporte, 2 para entrenamiento y 3 para ventas”, en este momento todabia no vamos a explorar el tratamiento de dígitos inválidos.  En cada contexto vamos a tocar una grabación como “usted fue redirecionado para soporte (entrenamiento o ventas)”.

 

[entrada]

exten=>s,1,Answer()

exten=>s,2,Background(saludos)

exten=>s,3,hangup()

exten=>1,1,playback(soporte)

exten=>1,2,goto(soporte,s,1)

exten=>2,1,playback(entrenamiento)

exten=>2,2,goto(entrenamiento,s,1)

exten=>3,1,playback(ventas,)

exten=>3,2,goto(ventas,s,1)

 

Vamos a seguir este ejemplo paso a paso. Cuando alguien se comunica en la interface FXO (Configurada para el contexto [entrada]), la comunicación es pasada para la extensión ‘s’ dentro del contexto [entrada]. La extensión ‘s’ atiende la comunicación y usando el comando Background() hace sonar un saludo y aguarda por el discado de un dígito.  Despues de discar el dígito ‘1’ por ejemplo, el sistema va  para la extensión ‘1’ en la prioridad ‘1’ y toca un mensaje del archivo soporte.gsm (Algo como, “usted se comunico con el area de soporte técnico” lo atendemos en breve). Enseguida tenemos el comando goto() que manda la comunicación para el contexto (soporte) donde ela será tratada por uma fila de atendimento.

Intercomunicando canales con la aplicación Dial()

Nosotros vamos a adicionar a nuestro ejemplo la aplicación Dial(). En vés de mandar la comunicación para otro contexto, vamos atenderla en un ramal específico.

 

[entrada]

exten=>s,1,Answer()

exten=>s,2,Background(saludo)

exten=>s,3,hangup()

exten=>1,1,playback(soporte)

exten=>1,2,Dial(SIP/8000)

exten=>2,1,playback(entrenamiento)

exten=>2,2,Dial(ZAP/1)

exten=>3,1,playback(ventas)

exten=>3,2,Dial(IAX/8002)

 

Al comparar con el ejemplo anterior, apenas creamos un atajo. En ves de enviar para otro contexto para el tratamiento de la llamada, enviamos directamente a un canal SIP  del ramal 8000 o a un canal  Zaptel (FXS - Analógico) o también a un canal IAX del ramal 8002.

 

En este punto usted ya debe estar entendiendo el uso de várias aplicaciones como el Answer(), Background(), Goto(), Hangup() y Playback() y lo básico del comando Dial(). Esto es fundamental para el aprendizaje de aqui en delante. Si algo no esta claro todabia vuelva y lea de nuevo, es fundamental que haya entendido el processo antes de seguir adelante.

 

Con un entendimiento básico de las extensiones,  prioridades y aplicaciones es simple crear un plano de numeración básico. En los próximos capítulos vamos hacer un plano de discado más puederoso.

3.7 Laboratório

 

En este laboratório vamos a crear una pequeña central telefonica capaz de discar entre ramales, para la rede pública por la placa PSTN o por un proveedor VoIP y recibiendo llamadas usando atencion automática de llamadas. Para crear este PABX vamos hacer algunas consideraciones:

 

Los ramales van desde 2000 hasta 2100

Para salir para la red pública se disca el número 0 (cero)

Para salir para la red pública a través de un proveedor se disca 1 (um)

8000 sera el ramal para grabación de menu de atencion automatica de llamadas.

3.7.1 Comunicandose entre telefonos.

En el archivo extensions.conf en la sección default entre con los siguientes comandos:

 

[default]

exten=>2000,1,Dial(SIP/2000)

exten=>2001,1,Dial(SIP/2001)

3.7.2 Comunicandose para la rede pública usando la placa zaptel

Coloque las siguientes lineas en el archivo extensions.conf. Para testear marque 0 (cero)  seguido de un número externo.

 

[default]

exten=>0,1,Dial(ZAP/1,20,r)

3.7.3 Recibiendo comunicaciones usando atencion automatica de llamadas.

Escriba los comandos que estan abajo, estos van a crear una interface para que usted pueda grabar los mensajes del menu de atención automática de llamadas. El mensaje puede ser algo como “Usted se comunico con  xyz, disque el ramal deseado o aguarde y sera atendido”. Cuando termine de hablar el mensaje disque “#” para que este sea grabado. Usted va a oirlo enseguida cuando el comando “playback” fuese executado.

 

[default]

exten=>8000,1,Wait(2)

exten=>8000,2,Record(menu:gsm)

exten=>8000,3,Wait(2)

exten=>8000,4,Playback(menu)

exten=>8000,5,Hangup()

 

Abajo el comando Background va a tocar un mensaje que usted grabó y esperará que usted digite algo. Digite 2001 y usted va a ver que la comunicación será desviada para el ramal 2001.  Si nada fuera discado la comunicación será automáticamente transferida para el ramal 2000.

 

[default]

exten=>s,1,Background(menu)

exten=>s,2,Dial(SIP/2000)

exten=>2000,1,Dial(SIP/2000)

exten=>2001,1,Dial(SIP/2001)



3.8 Sumário

 

En este capítulo usted aprendió que los archivos de configuración estan en /etc/asterisk. Para usar Asterisk es preciso en primer lugar configurar los canales (Ej. sip.conf y zapata.conf). Existen basicamente tres formatos, el grupo simple, herencia de opciones, entidad compleja. 

 

El plano de discado es creado en el archivo extensions.conf, en el son creados contextos, aplicaciones, extensiones y prioridades.  Las aplicaciones que usamos han sido Playback(), Background(), Dial(), Goto(), Hangup() e Answer().

 

Background() es un comando importante en la creación de una URA. Dial() es el principal comando del plano de discado

3.9 Questionário

 

1. Son ejemplos de archivos de configuración de canales Asterisk.

 

£ zaptel.conf

£ zapata.conf

£ sip.conf

£ iax.conf

 

2. Es importante definir el contexto de los archivos de canales, pues cuando nos llega una comunicación de este canal (sip, iax, zap) al Asterisk este será tratado en el archivo extensions.conf en este contexto.

 

£ Correcto

£ Incorrecto

 

3. El parametro switchtype del archivo zapata.conf define

el tipo de PABX al cual Asterisk está ligado.  Esto es válido para conexiones no standard E1 con señalización ISDN PRI. Normalmente en Brasil y en Europa este standard debe ser definido como National.

 

£ Correcto

£ Incorrecto

 

4. Apesar de ser considerado una linea digital, el E1 puede ser configurado con señalización asociada al canal (CAS) en este caso cada timeslot puede scomportarse como un canal analógico FXS o FXO,  por ejemplo. Esto es útil para la conexion a channel-banks (bancos de canales).

 

£ Correcto

£ Incorrecto

 

5. SIP Session Initiated Protocol es el protocolo de la ITU usado para conexiones de voz sobre IP. Este es bastante antiguo y viene siendo substituído recientemente por el H.323.

 

£ Correcto

£ Incorrecto

 

6. Dado la configuración de abajo del archivo sip.conf, en la sección [general] está definido la dirección IP 10.1.30.45, donde SIP estará esperando por conexiones. Si fuera necesário que todas las placas de red de la máquina esperasen por una conexión SIP, bindaddr debería estar configurado para: ___.___.___.___

 

[general]

bindport = 5060

bindaddr = 10.1.30.45

context = default

disallow = speex

disallow = ilbc

allow = ulaw

maxexpirey = 120

defaultexpirey = 80

 

7. En el archivo de abajo, los telefonos 8000 y 8001 fueron definidos con la opción  canreinvite=no. Con esto, cuando una comunicación es hecha de un telefono para el otro, el Áudio va directamente de un telefono para otro sin pasar por Asterisk.

 

[8000]

type=friend

secret=8000

host=dynamic

canreinvite=no

 

[8001]

type=friend

secret=8000

host=dynamic

canreinvite=no

 

£ Correcto

£ Incorrecto

 

8. La principal diferencia entre el comando Playback() y el comando Background()  es que el Playback() simplemente toca un mensaje y pasa al comando siguiente, en cambio el Background aguarda que usted digite algo y desvia para algun lugar en el plano de discado basandose en los dígitos discados.

 

£ Correcto

£ Incorrecto

 

9. Cuando una comunicación entra en Asterisk por una interface de telefonia (FXO) sin identificación de llamada, esta comunicación es desviada para la extensión especial:

 

£ ‘0’

£ ‘9’

£ ‘s’

£ ‘i’

 

10. Los formatos válidos para el comando Goto() son:

 

£ Goto(contexto,extensión,prioridad)

£ Goto(prioridad, contexto, extensión)

£ Goto(extensión,prioridad)

£ Goto(prioridad)

 




[1] POTS – Plain Old Telephony System, sistema de telefonia convencional, baseado normalmente em líneas analógicas.

[2] TDM – TDM - multiplexación por división de tiempo, toda a telefonía convencional está basada en este concepto, cuando hablamos en TDM estaremos refiriéndonos a circuitos T1 e E1. E1 es más común en Brasil e Europa, T1 es más usado en EUA.

[3] Soft-switch es un termino usado para un programa que se utiliza para hacer un puente entre la telefonia tradicional y la realizada por voz sobre IP. Los softswitches estan aptos para procesar una señalizacion para todos los tipos de protocolos de paquetes. Un softswitch es una plataforma de conmutacion que al contrário de las plataformas tradicionais conmuta flujos de media a contraparte de flujos de circuitos.

Flavio E. Goncalves, This eBook has the ISBN number ISBN: 978-85-906904-3-6.