Você está na página 1de 35

README channel 2.

README channel 2.3

Sumrio
Guia Rpido........................................................................................................................................................1
Compilando o driver e iniciando os servios..........................................................................................1
Utilizando o channel da Khomp.............................................................................................................2
Consideraes iniciais........................................................................................................................................4
Disposio dos arquivos.........................................................................................................................4
Mdulos Asterisk....................................................................................................................................4
Configurao......................................................................................................................................................6
Configurao da API K3L......................................................................................................................6
Configurao do channel........................................................................................................................6
Utilizao do application Dial..............................................................................................................10
Variveis...............................................................................................................................................13
Configurao do Asterisk.....................................................................................................................17
Comandos de console.......................................................................................................................................21
Recursos adicionais..........................................................................................................................................23
Aplicaes (applications) e canais........................................................................................................23
Interface de gerenciamento (AMI)........................................................................................................27
Interface gateway (AGI).......................................................................................................................29
Utilizao de patches adicionais.....................................................................................................................31
Cdigos e significados......................................................................................................................................32
Estados de canais..................................................................................................................................32
Estados de ligao.................................................................................................................................32

17-03-2009

README channel 2.3

Guia Rpido
Depois de instalar a placa no sistema, e executar o programa de instalao pela primeira vez, os drivers e
servios da Khomp sero automaticamente acrescentados na inicializao do sistema, e carregados.
Se o sistema possuir pelo menos uma placa de tronco E1 e/ou uma placa FXO, uma tela de configurao
bsica dever ser apresentada ao final do processo, questionando parmetros de sinalizao (placas E1) ou
realizando o ajuste de cadncias (placas FXO).
Caso estas etapas tenham sido executadas com sucesso, prossiga para o item Utilizando o channel da
Khomp.
Entretanto, durante a instalao do channel da Khomp, podem ocorrer as seguintes mensagens:
K3L: WARNING: Unable to find a module for [...]

ou
install:
install:
install:
install:
install:
install:

******

THE KERNEL MODULE HAS NOT BEEN INSTALLED: *******

** Please, untar the file kpci9030*.tar.gz located in:


**
'/usr/src/khomp/'
**
then check the README.txt
** for knowing how to proceed with the installation.

**
**
**
**

Neste caso, ser necessrio compilar os drivers manualmente para o seu sistema. Prossiga para o item abaixo
para maiores informaes.

Compilando o driver e iniciando os servios


Basta seguir ao diretrio /usr/src/khomp, descompactar o arquivo "kpci9030-[data]-[hora].tar.gz" ou
"kpdriver-[data]-[hora].tar.gz", e acompanhar procedimentos descritos no arquivo README.txt.
Aps realizar a compilao e a instalao do mdulo, basta carreg-lo no sistema, configurar as placas, e
iniciar o servidor de processos da Khomp.
Para carregar o driver de kernel, necessrio executar o seguinte comando:
# kpload

Para configurar as placas, por sua vez, necessrio executar o comando:


# khompwizard

Isto executar um assistente de configurao, que ir perguntar a sinalizao utilizada no sistema, bem como
outros parmetros de utilizao das placas.
Caso seja necessrio configurar outros parmetros adicionais, pode-se utilizar o seguinte comando:

17-03-2009

Guia Rpido

README channel 2.3


# k3lconfig

Este configurador, por sua vez, mostra todas as opes possveis de configurao da placa. Os parmetros que
no forem configurados assumem os valores padro automaticamente, e so compatveis com a maior parte
dos sistemas. Maiores detalhes sobre este programa podem ser obtidos na seo de nmero '2'.

IMPORTANTE: Para o Asterisk iniciar, preciso que a placa da khomp esteja configurada e todos
mdulos estejam rodando (conforme mostrado acima). Caso a placa no esteja configurada, o
Asterisk no iniciar.
Se voc deseja rodar o sistema sem a placa da Khomp, preciso configurar o asterisk para ele no
carregar o mdulo da Khomp. Para isso, abra o arquivo "/etc/asterik/modules.conf", e adicione a
linha:
noload => chan_khomp.so

Quando a placa da Khomp estiver devidamente configurada e os mdulos da khomp carregados


(explicado acima), lembre-se de retirar esta linha do arquivo.

Por fim, para carregar o servidor de processos, basta executar o seguinte comando:
# kserver start

Aps realizar estes procedimentos, o channel j estar operacional, e o Asterisk j pode ser carregado.

Utilizando o channel da Khomp


Aps a instalao e inicializao dos servios necessrios pela Khomp, o Asterisk j pode ser carregado ou
inicializado.
AVISO: imprescindvel que o Asterisk seja executado utilizando a opo de escalonamento em
tempo real (-p), especialmente se este estiver sendo executado lado-a-lado com servidores web ou
servidores de banco de dados. No realizar este procedimento pode resultar em perda de qualidade do
udio, gerando um srio comprometimento no andamento das ligaes do sistema.
Aps carregar o Asterisk, pode-se verificar se o mdulo da Khomp foi carregado, execute dentro do console
do Asterisk:
asterisk-pbx*CLI> show modules

Dever existir uma linha com as seguintes informaes:


chan_khomp.so

17-03-2009

Khomp Channel Driver

Guia Rpido

README channel 2.3


Para verificar se o Asterisk reconheceu todas as placas, digite:
asterisk-pbx*CLI> khomp summary

A sada desse comando mostrar detalhes de todas placas reconhecidas.


No caso de uma placa de tronco E1, pode-se verificar o estado dos links com o seguinte comando:
asterisk-pbx*CLI> khomp links show

O estado dos canais individuais, por sua vez, pode ser aferido com o comando:
asterisk-pbx*CLI> khomp channels show

Para mais detalhes sobre os comandos do channel da khomp digite no console do Asterisk:
asterisk-pbx*CLI> help khomp

IMPORTANTE: Para fazer completo uso da sua placa Khomp, ser preciso configurar suas regras de
discagem, seja atravs do arquivo extension.conf ou de um aplicativo externo, definindo regras
especficas para realizar ao receber ligaes.
Ao decorrer deste documento, podem ser encontradas informaes sobre o formato dos contextos de
entrada (responsveis por receber as ligaes) e sobre as opes disponveis no application Dial
(responsvel por realizar ligaes) que podem ser utilizadas com o channel da Khomp, alm de outras
funcionalidades especiais providas pelo mesmo.

17-03-2009

Guia Rpido

README channel 2.3

Consideraes iniciais
Disposio dos arquivos
Os diretrios criados/modificados nesta instalao so:
/usr/sbin/
/usr/lib/
/usr/lib/asterisk/modules/
/usr/doc/khomp/
/var/log/khomp1.6/
/etc/khomp/
/etc/asterisk/

--------

Utilitrios e servidor de processos;


Bibliotecas compartilhadas da K3L;
Onde instalado mdulo 'chan_khomp.so';
Documentao da K3L e do channel;
Diretrio de logs da K3L e channel;
Arquivos de firmware e configuraes;
Configurao do Asterisk e arquivo 'khomp.conf';

Conforme mencionado anteriormente, o programa kpload serve para carregar o mdulo kpci9030.ko (driver
das placas) no kernel. Para que a carga seja feita na inicializao do sistema basta criar um link para
/usr/sbin/kpload, no diretrio de inicializao do sistema, seguindo as normas da distribuio. O mesmo pode
ser feito com o servidor de processos da Khomp, /usr/sbin/kserver, o que iniciar automaticamente este
servio tambm.
No Debian, por exemplo, este diretrio seria /etc/rcS.d/, e o comando para executar estas aes seria:
# ln -s /usr/sbin/kpload /etc/rcS.d/S19kpload
# ln -s /usr/sbin/kserver /etc/rcS.d/S20kserver

Mdulos Asterisk
Em alguns casos, quando a instalao do Asterisk feita por algum gerenciador de pacotes, o mdulo da
Zaptel pode ser carregado por padro mesmo no havendo necessidade. Caso no seja utilizado o mdulo
zaptel, sugere-se que seja removido este mdulo. Abaixo alguns passos para verificar se o mdulo est
carregado e como remov-lo:
Para saber se o mdulo da Zaptel est carregado:
# lsmod | grep ztdummy

Caso o comando acima retorne algum valor, significa que o mdulo est carregado. Para remov-lo,
execute:
# rmmod zaptel

necessrio certificar que esse mdulo no seja novamente carregado. No Debian isso pode ser feito
removendo o pacote zaptel:
# apt-get remove zaptel

17-03-2009

Consideraes iniciais

README channel 2.3


Enfim, para carregar o mdulo das placas da Khomp basta executar:
# kpload

OBS: interessante notar que existe a possibilidade de utilizar os mdulos da Zaptel com as placas da
Khomp, mas para isso necessrio inicializar *primeiramente* o mdulo da khomp, para ento depois
carregar o zaptel.

Utilizando ztdummy
No sistema Asterisk, existem algumas aplicaes como o Meetme e o prprio protocolo IAX, que quando
compilado com suporte aos drivers Zaptel, requerem uma fonte de clock para fornecer temporizao.
Normalmente a fonte de clock do Asterisk vm das placas que utilizam o driver da Zaptel.
Se o sistema no possui uma placa que utiliza este mdulo, ento o driver ztdummy usado pelo Asterisk em
substituio ao driver Zaptel para gerao de clock. J o ztdummy faz uso de um temporizador interno do
kernel ou at mesmo o driver RTC da mquina, o que pode ocasionar em perda de algumas temporizaes.
Devido a testes feitos em laboratrio, constatou-se que a utilizao do mdulo ztdummy pode ocasionar
problemas de ligaes sem udio e isto est relacionado ao driver de dispositivo RTC do Linux. A Khomp
tentando melhorar as solues Asterisk que rodam sem placas Zaptel est disponibilizando um patch que vem
a corrigir esse problema.
Este patch faz basicamente a alterao de alguns pedaos de cdigo no mdulo ztdummy. Este cdigo
desabilita o uso do dispositivo RTC e por este motivo pode haver uma reduo de performance do Asterisk,
sendo que essa possvel diminuio do desempenho est relacionada entre outros fatos com a configurao de
kHz do kernel.
Para fazer do download do patch, acesse a sesso de downloads do site da Khomp.

17-03-2009

Consideraes iniciais

README channel 2.3

Configurao
Configurar o channel da Khomp para Asterisk uma tarefa que consiste de trs etapas:

Configurao da API K3L


Esta etapa pode ser realizada de maneira automatizada, utilizando o programa "k3lconfig" ou o programa
"k3lwizard", sendo o segundo um assistente que configura os parmetros bsicos de placas digitais.
Utilizando o programa "k3lconfig", pode-se configurar outros parmetros disponveis: basta selecionar a placa
desejada, e as opes das placas sero apresentadas, divididas em sees e subsees para facilitar o acesso.
No necessrio efetuar a configurao de todos os parmetros: os valores padro so assumidos, caso no
sejam configurados.
Para ajustar a sinalizao do link, basta - depois de selecionar a placa - entrar na seo "Opes de
sinalizao", e em seguida, em "Sinalizao da linha". Para escolher uma sinalizao especfica, basta utilizar
as teclas de direcionamento (setas) at selecion-la, pressionar 'espao', e confirmar a opo pressionando
'enter' sobre o boto "Confirmar".
Por fim, para salvar as configuraes modificadas, basta sair do programa: ele ir mostrar uma janela, com
opes para salvar ou no as alteraes realizadas.
importante notar que no necessrio alterar/ativar as seguintes opes:
Cancelamento de eco automtico;
Supresso de DTMFs automtica;
Controle de ganho (AGC) automtico.
Estas opes so controladas pelo channel, e devem estar desabilitadas no 'k3lconfig'.

Configurao do channel
As configurao padro do sistema costumam atender maior parte das necessidades. De qualquer forma, a
configurao do channel da Khomp pode ser modificada alterando-se as opes disponveis no arquivo de
configurao '/etc/asterisk/khomp.conf', selecionando as configuraes existentes no mesmo de acordo com a
necessidade.
A lista de opes a seguinte:
Seo "channels", que define configuraes gerais:
echo-canceller (antigo "echocanceller"): Ativa ("yes") ou desativa ("no") o cancelamento de
eco automtico do channel;
auto-gain-control: Ativa ("yes") ou desativa ("no") a ativao do controle automtico de
ganho (AGC) pelo channel;

17-03-2009

Configurao

README channel 2.3


out-of-band-dtmfs (antigo "dtmfsuppression"): Ativa ("yes") ou desativa ("no") a supresso
DTMF e o envio destes out-of-band;
suppression-delay (antigo "suppressiondelay"): Ativa ("yes") ou desativa ("no") o delay
necessrio para supresso DTMF. Se desativado ("no"), tambm desativa supresso de
DTMFs;
auto-fax-adjustment: Ativa ("yes") ou desativa ("no") o ajuste automtico do canal
(desabilitar o cancelador de eco e a supresso DTMF) ao detectar tom de FAX;
pulse-forwarding (antigo "pulsedetection"): Ativa ("yes") ou desativa ("no") a deteco de
pulsos e a converso dos mesmos em DTMFs;
r2-strict-behaviour: Ativa ("yes") ou desativa ("no") o comportamento da sinalizao
R2/MFC conforme a norma define. O padro "no", e pode ser alterado para "yes" caso seja
necessrio receber/enviar dados precisos da sinalizao do protocolo (condio de B, por
exemplo);
r2-preconnect-wait (antigo "r2preconnectwait"): Define o tempo de espera do envio da
sinalizao de ringback, no protocolo R2/MFC, para iniciar o envio de udio de silncio.
Apenas utilizado quando "r2-strict-behaviour" estiver ajustado para "no";
native-bridge (antigo "bridge"): Ativa ("yes") ou desativa ("no") o modo de bridge nativo,
onde o udio comutado diretamente por dentro da mesma placa - caso a ligao esteja
situada em dois canais de uma mesma placa e nenhuma opo do Asterisk limite esta
comutao direta. O padro "yes";
context-digital: Contexto de entrada para ligaes em placas digitais (O padro
"khomp-DD-LL", onde "DD" ser substitudo, no momento da ligao, pelo nmero do
dispositivo, "LL" pelo nmero do link, "CCC" pelo nmero do canal e "SSSS" pelo nmero
serial do dispositivo);
context-fxs: Contexto de entrada para placas FXS (O padro "khomp-DD-CC", onde "DD"
ser substitudo, no momento da ligao, pelo nmero do dispositivo, "CC" pelo nmero do
canal, e "SSSS" pelo nmero serial do dispositivo);
context-fxs-alt: Contexto de entrada alternativo para placas FXS (O padro nulo, no entanto
quando definido, segue a mesma regra de substituio da opo context-fxs);
context-fxo: Contexto de entrada para placas FXO (O padro "khomp-DD-CC", onde "DD"
ser substitudo, no momento da ligao, pelo nmero do dispositivo, "CC" pelo nmero do
canal, e "SSSS" pelo nmero serial do dispositivo);
context-fxo-alt: Contexto de entrada alternativo para placas FXO (O padro nulo, no
entanto quando definido, segue a mesma regra de substituio da opo context-fxo);
context-gsm-call (ou "context-gsm"): Contexto de entrada para ligaes GSM (O padro
"khomp-DD-CC", onde "DD" ser substitudo no momento da ligao pelo nmero do
dispositivo, "CC" pelo nmero do canal, e "SSSS" pelo nmero serial do dispositivo);
context-gsm-call-alt (ou "context-gsm-alt"): Contexto de entrada alternativo para ligaes
GSM (O padro nulo, no entanto quando definido, segue a mesma regra de substituio da
opo context-gsm-call);
context-gsm-sms: Contexto de entrada para SMSs (O padro "khomp-sms-DD-CC", onde
"DD" ser substitudo pelo nmero de dispositivo, "CC" pelo nmero do canal, e "SSSS" pelo
nmero serial do dispositivo);
disconnect-delay: Define o tempo de delay do envio de desconexo (em mili-segundos), que
cancelado ao receber EV_CONNECT (til para situaes onde o PABX apresenta recurso
de DROP COLLECT CALL ativo e no possvel desativ-lo [configurao global]);
ringback-delay-co: Define o tempo de delay para ativar a gerao de tom de controle de
chamada (ringback) pelo channel da Khomp quando h uma indicao de ringback, e no h
udio sendo enviado por quem indicou a situao de controle da chamada;

17-03-2009

Configurao

README channel 2.3


ringback-delay-pbx: Define o tempo de delay para ativar a gerao de controle de chamada
(ringback) pelo channel da Khomp quando h uma indicao de ringback, e o udio de
controle enviado no possui nenhum tom (ou seja, est em silncio);
log-to-disk (antigo "log"): Define mensagens de log que devem ser salvar em disco;
log-to-console: Define mensagens de log que devem ser impressas na console;
trace: Define opes de depurao. No deve ser utilizado em produo a no ser que
estritamente necessrio;
language: Define idioma para ligaes entrantes;
mohclass: Define classe de msica de espera para ligaes entrantes;
output-volume (antigo "volume"): Define o volume de sada das ligaes. Varia de -10 a
+10;
input-volume: Define o volume de entrada das ligaes. Varia de -10 a +10;
has-ctbus: Ativa ("yes") ou desativa ("no") o suporte a CT-bus em placas de CTI;
fxs-global-orig: Nmero base de origem para ligaes originadas nas placas FXS que no
estiverem listadas na seo "callerids". somado a um nmero sequencial para definir um
nmero de origem nico para cada ramal, e que aumenta conforme o nmero do canal e da
placa;
fxs-co-dialtone: Seqncias de nmeros, separados por vrgula, que disparam um tom
contnuo (de central pblica) em ramais FXS (ex: 0 -- faz com que, ao discar 0, o usurio
receba o tom de linha contnuo);
fxs-bina: Quando ativada ("yes"), envia os dgitos correspondente ao telefone de origem em
sinalizao BINA por DTMF ao ramal que receber a chamada. (Valor padro "no").
fxs-digit-timeout: Define o tempo em segundos do timeout entre dgitos discados em um
ramal das placas FXS. (Valor padro "7").
record-prefix: Define o caminho base para os arquivos de gravao das ligaes. Caso no
seja especificado, o caminho padro adotado "/var/spool/asterisk/monitor/";
amaflags: Define a flag padro do Automated Message Accounting, afetando na
categorizao das entradas no CDR;
accountcode: Define o account code padro para chamadas no channel. Esta opo pode ser
qualquer string alfanumrica;
callgroup: Define os grupos padro de chamada em todos os canais;
pickupgroup: Define o grupo padro que pode puxar chamadas que esto sendo recebidas.
optimize-audio-path: Define se o canal deve otimizar o atraso de udio derrubando
(agressivamente) pacotes de udio que no so tratados prontamente pelo o Asterisk. Isso
garante o atraso mnimo de udio para o usurio e evita atrasos associados a clientes SIP mal
codificados. Entretanto, dependendo da poltica de escalonamento do sistema, isso pode
resultar em descarte excessivo de pacotes e picote no udio. Esta opo no deve ser
alterada ingenuamente (Valor padro desta opo "no").
fxo-send-pre-audio: Quando ativada ("yes") libera canal de udio sainte antes da conexo da
chamada em placas KFXO. (Valor padro "yes").
drop-collect-call: Ativa ou desativa a queda de ligaes cobrar. Caso esteja habilitada,
todas as ligaes cobrar sero derrubadas no importa o que contenha a varivel
KDropCollectCall no dialplan.

Seo "fxs-branches", que define nmeros de origem para a placa KFXS:


Neste caso, as opes so seqncias de prefixos de ramais e nmeros seriais das placas
(prefixo = serial1, serial2, ...), que definem os nmeros base dos endereos de origem, e a
ordem numrica das placas. Para maiores detalhes, favor consultar o arquivo de configurao.

17-03-2009

Configurao

README channel 2.3

Seo "cadences", que define configuraes de cadncias para o channel:


Neste caso, as opes so nomes de cadncias e um ou dois pares de nmeros, que definem os
intervalos de tom e silncio a ser utilizado nas cadncias. Para maiores detalhes, favor
consultar o arquivo de configurao.

Seo "fxs-hotlines", que define hotlines para a placa KFXS:


Neste caso, as opes so seqncias de ramais e nmeros (ramal = nmero), que definem
ramais a serem tratados como "hotlines", e nmeros que devem ser discados quando estes
forem retirados do gancho (ex: "100 = 1234" ou "200 = 4321" -- fazem, respectivamente, com
que primeiro ramal da placa 1 ligue para nmero 1234 ao ser retirado do gancho, ou primeiro
ramal da placa 2 ligue para nmero 4321 ao ser retirado do gancho).

Seo "groups", que define os grupos para serem usados na alocao de canal:
Neste caso, as opes so usadas para definir nomes para strings de alocao de canais. O
formato segue o padro <nome grupo> = <string alocao>, onde as strings de alocao de
canais so as mesmas utilizadas no application Dial, e nome do grupo um nome arbitrrio
escolhido pelo usurio.
Por exemplo, para definir o grupo pstn como os canais 0 e 5 da placa 0, deveria-se
utilizar a linha:
pstn = b0c0 + b0c5

Este grupo, por sua vez, poderia ser usado no application Dial como
Dial(Khomp/Gpstn/...).
Pode-se tambm associar um determinado contexto de entrada a um grupo de canais,
bastando especificar um nome de contexto aps a string de alocao, separado por ':' da
mesma.
Por exemplo, para definir o mesmo grupo pstn acima como os canais 0 at 20 da
placa 0, com contexto de entrada from-pstn, poderia-se utilizar a linha:
pstn = b0c0-20:from-pstn

Este grupo, por sua vez, poderia ser usado no application Dial como
Dial(Khomp/Gpstn/...), e todas as ligaes vindas destes canais seriam tratadas no
contexto from-pstn.

Seo "fxs-options", que permitite definir configuraes especficas por ramal FXS:
Neste caso, as configuraes so nmeros de ramais (baseado nos definidos na seo
[fxs-branches]), e as opes e seus valores. As opes disponveis so:
pickupgroup;
callgroup;
context;

17-03-2009

Configurao

README channel 2.3


input-volume;
output-volume;
language;
mohclass;
amaflags;
accountcode;
calleridnum;
calleridname;
mailbox.
Cada opo separada uma da outra por um pipe "|" ou uma barra "/" e definidas aps dois
pontos ":". Para maiores informaes sobre a sintaxe e exemplos, favor consultar o arquivo de
configurao.
Para maiores informaes, consultar o prprio arquivo de configurao 'khomp.conf'.

Utilizao do application Dial


O aplicativo (ou application) Dial responsvel por gerar chamadas no Asterisk a partir de um dialplan. Este
aplicativo pode ser utilizado para gerar chamadas a partir de diversos tipos de channels, sendo que cada
channel segue um formato especfico para definir tanto as opes quanto os canais de comunicao a serem
utilizados.

Campos relativos ao channel


Quando utilizado para canais da Khomp, a string de Dial pode ter dois, trs ou quatro campos separados por
uma barra (/). Algumas strings de exemplo:
Dial(Khomp/B2L0/32625644,30,tT)
Dial(Khomp/*B2L0/32625644)
Dial(Khomp/S0411/99991234)
Dial(Khomp/Gpstn/99991234)
Dial(Khomp/*Gpstn/99991234,,t)
Dial(Khomp/B2C58/32625644/category=4:orig=4855553232,,tT)
Dial(Khomp/b0c9,30)
Dial(Khomp/b0c1+b0c14)
Dial(Khomp/r304)

Nos cinco primeiros exemplos, temos trs campos sendo especificados; no quarto, quatros campos so
utilizados; e por fim, nos trs ltimos exemplos, apenas dois so utilizados. importante notar que os valores
separados por vrgula (,) so opes do application Dial, no do channel da Khomp.
Sobre os campos utilizados, segue a descrio:
1 campo, 'Khomp': identifica o tipo do channel em questo;
2 campo, 'B2L0', 'S0411', 'Gpstn', etc: representa a Poltica de Alocao de Canais;
3 campo, '32625644' e '99991234': so os nmeros de destino, para onde ser efetuada a ligao;
4 campo, 'category=4:orig=4855553232': opes adicionais no-obrigatrias, detalhadas mais
frente.
17-03-2009

10

Configurao

README channel 2.3


OBS: A string de Dial com somente dois campos especfica ligaes para uma placa KFXS, onde o
destino est atrelado automaticamente ao canal alocado, ou ao ramal especificado.

Poltica de alocao de canais


A poltica de alocao de canais, no channel da Khomp, pode ser especificado na prpria string de Dial ou
atravs de grupos, no arquivo de configurao "khomp.conf". Para especificar placas, canais e links a serem
alocados existe a seguinte sintaxe disponvel (considerando X, Y e Z como nmeros quaisquer):
bX -- busca os canais na placa 'X', de maneira crescente.
bXLY -- busca canais no link 'Y' da placa 'X', fazendo uma procura crescente (com relao ao nmero
dos canais).
bXcY -- utiliza apenas o canal 'Y' da placa 'X'.
bXcY-Z -- busca por canais, iniciando do canal 'Y' e indo at o canal 'Z' (inclusive), da placa 'X', de
maneira crescente.
BXcY-Z -- idem ao anterior, de maneira decrescente.
sX -- busca os canais na placa de serial 'X', de maneira crescente.
sXLY -- busca canais no link 'Y' da placa de serial 'X', fazendo uma procura crescente (com relao
ao nmero dos canais).
sXcY -- utiliza apenas o canal 'Y' da placa de serial 'X'.
sXcY-Z -- busca por canais, iniciando do canal 'Y' e indo at o canal 'Z' (inclusive), da placa de serial
'X', de maneira crescente.
SXcY-Z -- idem ao anterior, de maneira decrescente.
Para buscar por ramais de placas KFXS de acordo com o nmero do ramal, pode ser utilizada a seguinte
sintaxe (considerando X e Y nmeros de ramais vlidos):
rX -- busca ramal 'X'.
RX -- equivalente ao anterior.
rX-Y -- busca de ramal 'X' a 'Y', ordem crescente.
RX-Y -- busca de ramal 'X' a 'Y', ordem decrescente.
interessante notar que apenas a capitalizao da letra 'B', 'S' ou 'R' define a ordem de busca dos canais; se
minscula, crescente, e se maiscula, decrescente.
J para a alocao de canais atravs de grupos, existe a seguinte sintaxe disponvel:
Ggroupname -- utiliza a string de Dial definida ao grupo "groupname" no arquivo de configurao; j
detalhado na seo de configurao do channel.
ggroupname -- equivalente ao anterior.

17-03-2009

11

Configurao

README channel 2.3


Agrupando alocaes de canais
Existem casos onde necessrio buscar canais mais de um determinado dispositivo, ou determinado grupo de
ramais. Para isto, existe uma extenso disponvel na string de alocao, que diz respeito ao uso do smbolo de
soma (+) para concatenar vrias strings de ligao, da seguinte forma:
Dial(Khomp/B1L0+B2L0/32332933,30,tT)
Dial(Khomp/*B2+B3+B4/99887766)
Dial(Khomp/S0411+B1L0/99887766)
Dial(Khomp/Gpstn1+Gpstn2/99991234)
Dial(Khomp/*gOperadora1+gOperadora2/98891234)

Esta extenso est disponvel tanto no application Dial quanto na especificao de grupos, e pode ser utilizada
para agrupar qualquer string de alocao vlida outra. O processamento das strings de alocao se d da
direita para a esquerda - exceto quanto utilizando a alocao cclica, onde todos os canais especificados so
verificados simultaneamente.

Escolha cclica e/ou justa


Uma variao da alocao de canais atravs de uma escolha cclica e/ou justa, que consiste em escolher o
canal que completou - at o momento - o menor nmero de ligaes saintes. Essa forma caracterizada por
um asterisco (*) antes da string de alocao de canais (conforme pode ser verificado acima, no segundo e
quinto exemplos).
Quando iniciada com um asterisco (*), as outras formas de alocao subseqentes (crescente, decrescente, etc)
so utilizadas para decidir, entre os canais com menor nmero de ligaes saintes, qual ser verificado
primeiro para realizar a chamada.
AVISO: O uso da alocao justa e/ou cclica recomendvel *somente* em placas analgicas
(KFXO), de ramais (KFXS) e de interface celular (KGSM). Conexes E1 tendem a alocar os
canais de maneira crescente ou decrescente de um lado (na operadora, por exemplo), e o inverso do
outro (no PABX, por exemplo), para evitar problemas de dupla ocupao (o que pode ocorrer na
sinalizao R2/MFC).
Por estes motivos, alocaes justas e/ou cclicas devem ser utilizadas apenas em sinalizaes onde
isso pode representar alguma diferena real, como equalizar a tarifao das linhas, o uso das mesmas,
ou o nmero de ligaes recebidas por cada ponto de atendimento (PA).

Opes disponves
orig: Define o nmero de origem a ser utilizado na chamada, sem alterar a varivel
${CALLERID(num)}. Ou seja, a opo orig serve apenas para repassar um nmero de origem
diferente do ${CALLERID(num)}. Caso o Asterisk j tenha ajustado a varivel
${CALLERID(num)}, o que o comportamento padro, o channel utiliza este valor automaticamente
como referncia do nmero de origem, sem ser necessrio repassar nenhuma opo adicional.
Nas placas KGSM, se ajustado para restricted, omite o nmero de origem. Exemplo:

17-03-2009

12

Configurao

README channel 2.3


Dial(Khomp/b0/99887766/orig=restricted)

category: Quando ajustado para um valor numrico, define a categoria do nmero de A. Disponvel
apenas em sinalizao R2/MFC;
uui: Quando ajustado para um nmero e uma string de texto, separados por cerquilha ("#"), envia uma
mensagem "UserToUser" para a outra ponta, antes de realizar a chamada, utilizando o descritor como
o nmero e a mensagem como o texto. Disponvel apenas em sinalizao RDSI (ISDN);
ring_cadence: Quando ajustado para um identificador, utiliza cadncia definida com este nome na
seo "cadences" do arquivo de configurao do channel da Khomp para chamar o canal desejado.
Disponvel apenas em sinalizao FXS;
ring: Quando ajustado para dois nmeros, separados por ponto ("."), define as cadncias de chamada
de um ramal FXS para estes valores, sendo o primeiro relativo ao tempo de chamando, e o segundo,
ao tempo de silncio;
ring_ext: Quando ajustado para dois nmeros, separados por ponto ("."), define as cadncias de
chamada extendidas (a serem executadas depois da cadncia principal) de um ramal FXS para estes
valores, sendo o primeiro relativo ao tempo de chamando, e o segundo, ao tempo de silncio;
usr_xfer: Quando ajustado para uma seqncia de dgitos DTMF, define estes como dgitos a serem
utilizados para iniciar uma transferncia entre PABXes (utilizando sinalizaes de usurio);
drop_on: Quando ajustado para "message_box", "human_answer", "answering_machine",
"carrier_message", "unknown" ou uma lista destes (separados por mais ("+") ou ponto (".")), faz com
que a chamada seja derrubada ao detectar tons de caixa de caixa postal, atendimento humano,
secretria eletrnica, mensagens da operadora, ou algum atendimento desconhecido respectivamente. Disponvel em sinalizaes digitais (links E1 e placas KGSM). Adicionalmente, a
informao de atendimento reportada para o usurio na varivel KCallAnswerInfo (mas necessrio
aplicar um patch no Asterisk para que esta pode ser acessada);
answer_info: Opo booleana (no necessita de valor). Quando especificada, reporta informaes de
atendimento para o usurio atravs da varivel KCallAnswerInfo (mas necessrio aplicar um patch
no Asterisk para que esta pode ser acessada);
pre: Quando ajustado para uma seqncia de dgitos DTMF, utiliza estes para pre-alocar um canal de
sada em um PABX analgico, discando o nmero de B desejado a seguir. Somente disponvel para
sinalizao analgica (FXO);
pre_answer: Opo booleana (no necessita de valor). Quando especificada, "antende" o canal antes
de a ligao ser completada permitindo, por exemplo, que DTMFs possam ser enviados; til para
utilizar em um DISA.

Variveis
Lista de variveis
A lista de variveis disponveis no channel 2.3, junto com sua descrio, a seguinte:
KDropCollectCall: Presente desde o channel 2.2. Quando definida antes do atendimento (ao receber
uma chamada), ativa ("yes") ou desativa ("no", padro) o derrubamento de chamadas cobrar
baseado na sinalizao recebida da central pblica; atravs do duplo atendimento; ou atravs do
reconhecimento por udio de uma chamada cobrar. Pode ser definido de maneira global.

17-03-2009

13

Configurao

README channel 2.3


KR2SendCondition: Quando definida antes do envio de ringback pelo Asterisk (ao receber uma
chamada), ajusta a condio de B para o valor numrico que foi ajustada. Apenas disponvel para
sinalizao R2;
KR2GotCategory: Ajustada pelo channel ao receber uma chamada entrante, e possui a categoria do
nmero de A. Apenas disponvel para sinalizao R2;
KR2GotCondition*: Ajustada pelo channel, e disponvel aps o retorno de uma chamada realizada
pelo Asterisk. Contm a condio de B recebida ao realizar a chamada. Necessita de um patch no
Asterisk para funcionar corretamente, e est disponvel apenas para sinalizao R2;
KISDNGotCause*: Ajustada pelo channel, e disponvel aps o retorno de uma chamada realizada
pelo Asterisk. Contm o cdigo de cause do ISDN recebido ao realizar a chamada. Necessita de um
patch no Asterisk para funcionar corretamente, e est disponvel apenas para sinalizao ISDN;
KCallAnswerInfo*: Ajustada pelo channel, e disponvel aps o retorno de uma chamada realizada
pelo Asterisk. Contm as informaes de atendimento detectadas ao realizar a chamada. Necessita de
um patch no Asterisk para funcionar corretamente, e est disponvel apenas para sinalizaes digitais
(E1, GSM);
KSmsDelivered: Ajustada pelo channel ao enviar uma mensagem SMS com o application
KSendSMS, e define se a mensagem foi entregue com sucesso ("yes") ou no ("no");
KSmsErrorCode: Ajustada pelo channel ao enviar uma mensagem SMS com o application
KSendSMS, e define o cdigo de erro ao enviar a mensagem (string iniciada em "kgcc");
KSmsFrom: Ajustada pelo channel no contexto de entrada das ligaes GSM, define o nmero de
origem da mensagem recebida;
KSmsDate: Ajustada pelo channel no contexto de entrada das ligaes GSM, define a data de envio
da mensagem;
KSmsSize: Ajustada pelo channel no contexto de entrada das ligaes GSM, contm o tamanho (em
bytes) da mensagem recebida;
KSmsMode: Ajustada pelo channel no contexto de entrada das ligaes GSM, contm o tipo
codificao da mensagem recebida;
KSmsBody: Ajustada pelo channel no contexto de entrada das ligaes GSM, recebe o texto da
mensagem enviada.
KUserInfoDescriptor: Define/informa descritor do protoloco utilizado na mensagem User-to-User
Information (RDSI).
KUserInfoData: Define/informa os dados na mensagem User-to-User Information (RDSI).

Descrio detalhada
Abaixo, segue uma explanao sobre como utilizar as variveis do channel do Khomp disponveis no dialplan,
tanto para comunicar quanto para receber informaes:

KDropCollectCall
Quando ativada, faz com que o channel da Khomp gere um comando que derruba chamadas a cobrar ou
atravs de duplo atendimento (disponvel para sinalizao 'R2 Digital'), ou atravs da informao disponvel
no protocolo RDSI e R2/MFC, ou ento atravs da deteco do udio de chamada a cobrar (disponvel para
qualquer sinalizao digital por link E1, e para sinalizao GSM). til para derrubar chamadas a cobrar para
determinados ramais. Deve ser ajustado preferencialmente antes de utilizar o application "Dial" no dialplan, e
pode ser ajustado globalmente.

17-03-2009

14

Configurao

README channel 2.3


Ativando a varivel dentro do contexto 'default':
[default]
...
exten => _X.,1,Set(KDropCollectCall=yes)
...

Ativando a varivel no contexto global:


[globals]
...
KDropCollectCall=yes
...

KR2SendCondition
Ao receber uma chamada, pode ser definida antes do envio de ringback pelo Asterisk (ou seja, antes do
Asterisk executar as aplicaes Answer, Ringing, ou Dial). Quando utilizada em sinalizao R2/MFC, esta
varivel ajusta a condio de B para o valor numrico desejado.
Exemplo:
;; Condio "NUMBER CHANGED", avisa ao chamador que o nmero de B mudou.
;;
exten => _X.,1,KR2SendCondition(3)&nbsp

KR2GotCategory
Ao receber uma chamada, ajustada pelo channel com a categoria recebida do nmero que originou a
chamada. ajustada na sinalizao R2/MFC, e pode ser consultada em qualquer local do dialplan.
Exemplo:
exten => _X.,1,NoOp(${KR2GotCategory})

KR2GotCondition
Varivel ajustada pelo channel, e disponvel aps o retorno de uma chamada realizada pelo Asterisk. Contm
a condio de B recebida ao realizar a chamada, e necessita de um patch no Asterisk para funcionar
corretamente. Disponvel apenas para sinalizao R2/MFC.
Exemplo:
exten => _X.,1,NoOp(${KR2GotCondition})

17-03-2009

15

Configurao

README channel 2.3


KUserInfoDescriptor
Varivel ajustada pelo channel no contexto de entrada, a partir de informaes recebidas pela rede RDSI
atravs da funcionalidade User-to-User Information. Contm o nmero do descritor do protocolo utilizado
pela outra ponta, e normalmente contm valor '0', mas este valor dependente da aplicao utilizada.
Maiores informaes, consultar a especificao ITU-T Q931 (mais precisamente, a tabela 4-26 da
especificao).
Exemplo (trabalhando com o nmero do descritor do protocolo):
exten => _X.,1,Verbose( ${KUserInfoDescriptor} )

KUserInfoData
Varivel ajustada pelo channel no contexto de entrada, a partir de informaes recebidas pela rede RDSI
atravs da funcionalidade User-to-User Information. Contm os dados propriamente ditos, que foram
recebidos, em forma de uma 'string' de texto.
Maiores informaes sobre este recurso, consultar a especificao ITU-T Q931.
Exemplo (trabalhando com os dados recebidos):
exten => _X.,1,Verbose( ${KUserInfoData} )

importante salientar que as variveis so sensveis capitalizao das letras (case sensitive).

KCallAnswerInfo
Varivel ajustada pelo channel quando utilizando um patch adicional no Asterisk, que est disponvel junto
com a distribuio source do channel. ajustada em ligaes de sada, representando o tipo de atendimento
realizado pela outra ponta. Pode conter os seguintes valores:

"MessageBox" (*): detectada caixa postal de um telefone celular;


"CarrierMessage": mensagem de operadora enviada antes do atendimento;
"AnsweringMachine" (**): atendimento por secretria eletrnica;
"HumanAnswer" (**): atendimento humano;
"Unknown": tipo de atendimento desconhecido;
"Fax": reportado quando um tom de fax for detectado.

(*) Este tipo de atendimento detectado por sinais em determinadas freqncias que so enviados antes da

17-03-2009

16

Configurao

README channel 2.3


chamada entrar em uma caixa postal, e variam conforme a operadora. O algoritmo captura a maior parte das
caixas postais, mas pode falhar se no existir um sinal claro, ou se o mesmo no estiver dentro dos padres
mais utilizados;
(**) A diferenciao entre estes dois tipos de atendimento depende de configurao especfica utilizando o
programa k3lanswerinfoconfig, sendo a deteco apenas baseada em heursticas e nunca com preciso de
100%.

Configurao do Asterisk
Ao receber ligaes no channel da Khomp, estas so encaminhadas para contextos especficos, que possuem
um certo formato pr-definido, e que pode ser alterado atravs do arquivo de configuraes khomp.conf
disponvel no diretrio de configurao do asterisk /etc/asterisk (para maiores detalhes, consultar a seo de
opes de configurao).
importante salientar que os contextos relacionados placa da Khomp so sensveis capitalizao das letras
(case sensitive).

Abaixo, encontram-se alguns aspectos de como configurar os contextos das chamadas de entrada pela placa da
khomp no Asterisk. Ser mostrado configurao de contextos para placas SPX de E1, FXO, FXS e GSM.

Contextos de entrada em canais E1


Para placas E1, as ligaes de entrada chegam em um contexto pr-definido de acordo com o nmero da placa
e nmero do link, conforme exemplo abaixo:
[khomp-DD-LL]

Neste caso, DD o nmero dispositivo (com dois dgitos), e LL o nmero do link (tambm com dois
dgitos). Entretanto, possvel configurar no khomp.conf, a opo context-digital com outros formatos.
Pode-se utilizar tambm CCC, que o nmero do canal na placa (com trs dgitos), e SSSS, que representa o
nmero serial da placa. Exemplos de configurao no arquivo khomp.conf
; nmero seqencial da placa e do link (ex: khomp-01-00)
context-digital=khomp-DD-LL
; nmero serial da placa e seqencial do link (ex: khomp-3049-00)
context-digital=khomp-SSSS-LL
; nmero seqencial da placa e do canal (ex: khomp-00-001)
context-digital=khomp-DD-CCC

Abaixo alguns exemplos de como os contextos devem ser escritos no dial plan:
; Este contexto presente no extensions.conf ir manipular chamadas
; de entrada no link 0 (primeiro link) da placa 0.
;
[khomp-00-00]

17-03-2009

17

Configurao

README channel 2.3


Outro exemplo utilizando o mesmo formato:
; Este contexto presente no extensions.conf ir manipular chamadas
; de entrada no link 1 (segundo link) da placa 0.
;
[khomp-00-01]

Mais exemplos abaixo:


Ligao
Ligao
Ligao
Ligao

entrante
entrante
entrante
entrante

no
no
no
no

link
link
link
link

0
1
1
0

da
da
da
da

placa
placa
placa
placa

0
0
3
4

=>
=>
=>
=>

[khomp-00-00]
[khomp-00-01]
[khomp-03-01]
[khomp-04-00]

Para um exemplo prtico de extension.conf, teramos:


[khomp-00-00]
exten => 1234,1,Dial(Khomp/b0L1/2345)
exten => _23XX,1,Dial(SIP/11${EXTEN:2})
[khomp-00-01]
exten => 1111,1,Dial(Khomp/b0L0/2345)

O dialplan acima define o recebimento de chamadas na placa 0 e no link 0, redirecionando o nmero 1234
para o link 1 da placa 0, pro ramal/telefone 2345, e redirecionando qualquer nmero de quatro dgitos
comeado com '23' (23xy) para telefones SIP de quatro dgitos comeados com '11' (11xy).
Tambm h mais uma extenso definida, onde as ligaes recebidas no link 1 da placa 0 para o nmero 1111,
so redirecionadas para o link 0 da placa 0, para o telefone/ramal 2345.

Contextos de entrada em canais FXS/FXO/GSM


Para estas placas, as ligaes de entrada possuem dois contexto pr-definidos. Estes contextos so buscados
com uma ordem de preferncia, sendo realizada a busca no primeiro contexto quando ocorre uma ligao, e
caso nenhuma extenso tenha sido encontrada, a busca realizada no segundo. O nome e o formato destes
contextos tambm pode ser alterado atravs de opes no arquivo de configurao.
O primeiro contexto possui o seguinte formato padro:
[khomp-DD-CC]

Enquanto o segundo contexto possui o seguinte formato padro:


[khomp-DD]

Nestes casos, DD o nmero dispositivo (com dois dgitos), e CC o nmero do canal da placa. Pode-se
utilizar tambm SSSS, que representa o nmero serial da placa.

17-03-2009

18

Configurao

README channel 2.3


No caso da placa KGSM, as ligaes entrantes so encaminhadas sempre para o extension "s" por padro,
visto que o protocolo GSM no repassa nmero de destino nas ligaes entrantes, apenas o nmero de origem
(quando no omitido).

Prioridade de contextos na placa FXS


Em ligaes sendo originadas partir de um ramal FXS, o channel driver procura um extension vlido dos
dgitos discados em at trs contextos diferentes. A prioridade dos contextos a seguinte:
1) Contexto especfico do ramal definido na seo [fxs-options].
2) Contexto definido na opo "context-fxs"
3) Contexto definido na opo "context-fxs-alt"
Caso durante a discagem, nenhum extension vlido puder mais ser encontrado, ento a extenso "i"
procurada nos contextos em ordem de prioridade, e por fim, no contexto default. Se existir timeout
(fxs-digit-timeout em khomp.conf) durante a discagem, o mesmo comportamento ser aplicado - no entanto, a
busca se dar inicialmente pelo nmero j discado at o timeout e, se no encontrado, a busca nos contextos
ser repetida para a extenso "t".

Contextos de mensagens SMS (GSM apenas)


Mensagens SMS so recebidas pelo channel da Khomp e encaminhadas para o Asterisk como uma ligao
sem udio, que possui algumas variveis ajustadas com os valores recebidos na mensagem (para maiores
informaes, consulte a documentao das variveis do channel). Este contexto tambm pode ser alterado, de
mesma forma que o contextos acima.
Esta ligao entra no seguinte contexto, por padro:
[khomp-sms-DD-CC]

Onde DD o nmero dispositivo (com dois dgitos), e CC o nmero do canal (tambm com dois dgitos).
Por exemplo:
[khomp-sms-00-01]
exten => s,1,System(/usr/bin/tratar-SMS.sh ${KSmsFrom} ${KSmsBody})

Contextos em transferncias
O Asterisk responsvel por iniciar transferncias, agrupar os dgitos discados e realizar todos os outros
passos da lgica de uma transferncia de chamada. Entretanto, cada canal alocado no Asterisk (seja para uma
ligao sante ou entrante) permite especificar somente 1 contexto de transferncia. Isto implica que somente
um contexto (alm do default) pode ser usado durante uma transferncia de chamada.
Neste caso, o contexto escolhido pelo channel driver segue a seguinte regra para o canal que realizar a
transferncia:

17-03-2009

19

Configurao

README channel 2.3


Se for o canal que originou a chamada, o contexto escolhido o mesmo contexto que foi usado para
originar a chamada corrente;
Se for o canal que recebeu a chamada, o contexto escolhido o de "maior prioridade", onde a
chamada foi recebida.

Contextos por grupo de chamada


Caso desejado definir contextos especficos para determinados grupos de canais, isto pode ser realizado
utilizando a seo groups, no arquivo de configurao khomp.conf. Esta seo detalhada mais frente, no
subcaptulo Configurao do channel.

17-03-2009

20

Configurao

README channel 2.3

Comandos de console
Lista de comandos disponveis no console do Asterisk para o channel da Khomp:
khomp channels disconnect: Desconecta um ou vrios canais atualmente conectados. Este comando
envia uma mensagem diretamente para o canal fsico da placa em questo, requisitando a desconexo.
Use com cautela;
khomp channels show: Mostra o estado dos canais da Khomp, podendo lista tambm o estado de
canais de uma placa especfica apenas;
khomp channels statistics: Mostra as estatsticas de ligaes dos canais, ou as estatsticas de um
canal especfico;
khomp channels unblock: Desbloqueia canais bloqueados para entrada ou para sada. Somente
disponvel em sinalizao digital via link E1;
khomp links errors: Mostra estado dos contadores de erro de todos os canais, ou de uma placa/link
somente;
khomp links reset: Envia um comando de reset para um determinado link E1 de uma determinada
placa;
khomp links show: Mostra estados dos links E1 disponveis.
khomp log console: Ajusta opes de logs no console.
khomp log disk: Ajusta opes de log em disco.
khomp log console e khomp log disk dispem de opes auxiliares no, que inverte a escolha
de mensagens, e just, que generaliza a escolha. Exemplos:
khomp log disk just commands events (Habilita somente o registro de comandos e
eventos da API em disco).
khomp log disk no commands (Desabilita o registro em disco de comandos
enviados API).
khomp log disk warnings (Habilita tambm o registro em disco dos avisos do
channel).
Mais informaes sobre as opes de log nos comando "help khomp log disk" ou "help
khomp log console".
khomp log rotate: Rotaciona arquivos de log do channel.
khomp log status: Mostra mensagens de log atualmente sendo escritas em disco e mostradas no
console.
khomp log trace isdn: Ativa a depurao da sinalizao RDSI (ISDN).
khomp log trace k3l: Ativa a depurao de baixo nvel da API K3L.
khomp log trace r2: Ativa a depurao de baixo nvel da sinalizao R2/MFC.
khomp record: Ativa gravao de udio atravs do channel.
khomp revision: Mostra nmero da verso e reviso do channel.
khomp send command: Envia comando da API K3L diretamente para a placa. Apenas para
depurao de problemas, pode compromenter a estabilidade do sistema se utilizado de maneira
incorreta.
khomp send raw command: Envia um comando diretamente para o DSP da placa. Apenas para
depurao de problemas, pode compromenter a estabilidade do sistema se utilizado de maneira
incorreta.
khomp set: Ajusta opes diversas do channel da Khomp, explicadas em maior detalhe no descrio
de uso do comando ("help khomp set").
khomp sms: Envia uma mensagem SMS utilizando canais da placa KGSM para um determinado
nmero.

17-03-2009

21

Comandos de console

README channel 2.3


khomp summary: Imprime um sumrio das placas do sistema e de suas caractersticas.
Para maiores informaes e exemplos de uso, adicionar help antes dos comandos. Por exemplo: help khomp
links errors.

17-03-2009

22

Comandos de console

README channel 2.3

Recursos adicionais
Este captulo trata de recursos adicionais do channel, relacionados funcionalidades especiais presentes em
algumas sinalizaes.

Aplicaes (applications) e canais


O channel da Khomp, alm de registrar um tipo de canal de comunicao "Khomp", registra tambm os
seguintes itens:

Aplicao "KUserTransfer"
Realiza o processo de transferncia do canal atual para o ramal nmero' utilizando a o protocolo de
sinalizao QSig (Single Step Call Transfer).
A sintaxe segue:
KUserTransfer(nmero)

Exemplo:
exten => 1234,1,KUserTransfer(2345)

Aplicao "KRecord"
Aplicao para gravar udio atravs das placas da Khomp. Esta aplicao foi criada para utilizar o recurso de
gravao presente nas placas da Khomp, que pode realizar a mistura do udio em hardware e envi-lo
diretamente para o disco. A gravao feita apenas em formato A-Law, com cabealhos WAV.
A sintaxe da aplicao a seguinte:
KRecord([arquivo[|opes[|opes-mixmonitor]]])

Os campos tm o seguinte significado:


arquivo: Nome do arquivo a gravar; caso omitido, ser utilizado um formato de nome padro.
opes: Define as opes de gravao a utilizar, que so:
b: Grava apenas quando canal for conectado (anloga opo "b" do MixMonitor);
w: Interrompe execuo do dialplan, aguardando at o fim da ligao para continuar. til em
placas de gravao passiva.

17-03-2009

23

Recursos adicionais

README channel 2.3


f: Fora aplicao KRecord a executar, mesmo se o canal de entrada no for do tipo Khomp.
Neste caso, a aplicao ajusta variveis do channel atual, para que quando o canal de sada
tenha udio disponvel, a gravao inicie. ATENO: esta opo apenas pode ser
utilizada quando o canal de sada for do tipo Khomp. Caso este pr-requisito no seja
cumprido, a gravao no ser realizada.
opes-mixmonitor: Define as opes de gravao a serem repassadas para o application
MixMonitor, caso este seja chamado pelo KRecord.
Exemplos:
exten => 1234,1,KRecord(teste.wav)
exten => 1234,1,KRecord(teste.wav|f)

Aplicao "KSendSMS"
Esta aplicao tem a funo de enviar mensagens SMS atravs das placas KGSM da Khomp, utilizando os
mdulos e SIM cards presentes na placa para tal. A sintaxe da aplicao a seguinte:
KSendSMS(recurso|destino|mensagem)

Podendo cada campo ser resumido em:


recurso segue uma sintaxe idntica alocao de canais do application Dial, e define qual modem
utilizar;
destino o nmero para onde enviar a mensagem;
mensagem o texto (sem aspas) que deve ser enviado para destino.
Exemplos de uso desta aplicao seguem abaixo:
Envia "Mensagem de teste." para telefone "99887766" utilizando o modem "1" (segundo modem) da
placa "0":
exten => [...],n,KSendSMS(b0c1|99887766|Mensagem de teste.)

Envia "Mensagem de teste." para telefone "99887766" utilizando o primeiro modem livre da placa
"0":
exten => [...],n,KSendSMS(b0|99887766|Mensagem de teste.)

17-03-2009

24

Recursos adicionais

README channel 2.3


Envia "Mensagem de teste." para telefone "99887766" utilizando o primeiro modem livre da placa
"0", ou para o primeiro canal livre da placa "1" (se no houver canal livre na primeira placa):
exten => [...],n,KSendSMS(b0+b1|99887766|Mensagem de teste.)

Aplicao "KEchoCanceller"
Esta aplicao tem a funo de habilitar ou desabilitar o cancelador de eco do canal. A sintaxe da aplicao
a seguinte:
KEchoCanceller(on|off)

Onde:
on, habilita o cancelador de eco no canal atual;
off, desabilita o cancelador de eco no canal atual;
Exemplo de uso desta aplicao:
exten => [...],n,KEchoCanceller(off)

Aplicao "KAutoGainControl"
Esta aplicao tem a funo de habilitar ou desabilitar o controle automtico de ganho no canal. A sintaxe da
aplicao a seguinte:
KAutoGainControl(on|off)

Onde:
on, habilita o controle automtico de ganho no canal atual;
off, desabilita o controle automtico de ganho no canal atual;
Exemplo de uso desta aplicao:
exten => [...],n,KAutoGainControl(on)

17-03-2009

25

Recursos adicionais

README channel 2.3

Aplicao "KDTMFSuppression"
Esta aplicao tem a funo de habilitar ou desabilitar a supresso de DTMF do canal. A sintaxe da aplicao
a seguinte:
KDTMFSuppression(on|off)

Onde:
on, habilita a supresso de DTMF no canal atual;
off, desabilita a supresso de DTMF no canal atual;
importante notar que, quado desabilitada a supresso de DTMF, os DTMFs sero passados inband e no
sero mais reportados ao Asterisk. Dessa forma o Asterisk no reconhecer os DTMFs, o que pode ocasionar
em mau funcionamento de aplicaes como por exemplo, URAs.
Exemplo de uso desta aplicao:
exten => [...],n,KDTMFSuppression(off)

Aplicao "KSetVolume"
Esta aplicao tem a funo de ajustar o volume de entrade e sada de canais da Khomp, sendo a sua sintaxe a
seguinte:
KSetVolume(<volume>)
KSetVolume(<output-volume>|<input-volume>)

Onde os campos possuem o seguinte significado:


volume: ajusta o volume de entrada e sada (-10 a +10);
output-volume: ajusta o volume de sada (-10 a +10, "none" para no alterar);
input-volume: ajusta o volume de entrada (-10 a +10, "none" para no alterar).

Aplicao "KAdjustForFax"
Esta aplicao tem a funo de ajustar um canal da Khomp para o recebimento de sinal de FAX/modem,
otimizando o canal de comunicao para o trfego de dados. Sintaxe:
KAdjustForFax()

17-03-2009

26

Recursos adicionais

README channel 2.3

Esta aplicao no recebe parmetros.

Canal "Khomp_SMS"
Este canal de comunicao utilizado para receber mensagens SMS e criar ligaes entrantes no Asterisk para
cada mensagem recebida. Este canal no possui qualquer tipo de tratamento ou processamento de udio, e
chamado com cinco variveis ajustadas:
KSmsFrom, contendo o nmero de origem de quem enviou a mensagem;
KSmsDate, que define a data/hora do recebimento da mensagem;
KSmsSize, representando o tamanho da mensagem (em bytes);
KSmsMode, contendo a codificao utilizada para transmitir a mensagem;
KSmsBody, que a mensagem em si.
O processamento do dialplan do Asterisk pode ser utilizado para guardar esta mensagem em um banco de
dados, executar alguma aplicao, entre outros. Entretanto, a nica ao aceita por este channel
desligamento (hangup) - ou seja, esta ligao entrante no pode ser considerada uma ligao comum.

Canal "Khomp_PR"
Este canal de comunicao utilizado para receber ligaes em placas de gravao passiva (KPR-300 e
KPR-300S), criando ligaes entrantes no Asterisk para cada chamada recebida. Este canal permite apenas o
recebimento de udio capturado do link, no permitindo tanto o envio de mensagens de udio quanto o de
sinalizaes de controle.
O processamento do dialplan do Asterisk pode ser utilizado para gravar dados sobre esta ligao em um banco
de dados, executar alguma aplicao especial e/ou algum application de gravao (como o Monitor, o
MixMonitor, ou o KRecord), entre outros. Entretanto, a nica ao aceita por este channel desligamento
(hangup) - ou seja, esta ligao entrante no pode ser considerada uma ligao comum.

Interface de gerenciamento (AMI)


A interface de gerenciamento AMI permite a um programa externo controlar o Asterisk e as ligaes
gerenciadas pelo mesmo. Para facilitar este gerenciamento o channel da Khomp disponibiliza as seguintes
facilidades:

Lista de comandos
Os comandos AMI permitem ao channel realizar funes auxiliares e/ou de ligaes atravs de um programa
externo. Os comandos disponibilizados so os seguintes:

17-03-2009

27

Recursos adicionais

README channel 2.3


KSendSMS
Envia mensagens SMS atravs de canais da placa KGSM da Khomp. Campos necessrios para este comando:
Device: especifica o dispositivo a alocar (para maiores informaes, consultar a documentao do
item recurso da aplicao KSendSMS);
Destination: define o nmero de destino a enviar a mensagem;
Message: contm a mensagem a ser enviada.

Lista de eventos
Os eventos de AMI permitem ao channel comunicar eventos de ligaes a um programa/aplicao externo que
realiza o gerenciamento e/ou controle das ligaes presentes no sistema. Os eventos disponibilizados so os
seguintes:

Alarm
Reporta notificao de alarme em canal. Contm as seguintes informaes:
Channel: nome do canal (em formato 'Khomp/BxCy') onde ocorreu o alarme;
Alarm: nome do alarme ocorrido no link (consultar captulo "Cdigos e significados").

AlarmClear
Reporta notificao de fim de alarme em canal. Contm as seguintes informaes:
Channel: nome do canal (em formato 'Khomp/BxCy') onde o alarme cessou.

AnswerInfo
Reporta deteco de atendimento no canal. Contm as seguintes informaes:
Channel: nome do canal (em formato 'Khomp/BxCy') onde ocorreu o alarme;
Info: nome do tipo de atendimento detectado (para maiores informaes, consulte a descrio
detalhada da varivel "KCallAnswerInfo").

AntennaLevel
Reporta alteraes no nvel de sinal da antena GSM; dsponvel apenas em placas KGSM. Contm as
seguintes informaes:
Channel: nome do canal (em formato 'Khomp/BxCy') representando o modem;
Signal: porcentagem do sinal, de 0 a 99 (inclusive).

17-03-2009

28

Recursos adicionais

README channel 2.3


BranchOffHook
Reporta que ramal est fora do gancho; disponvel apenas em placas KFXS. Contm as seguintes
informaes:
Channel: nome do canal (em formato 'Khomp/BxCy') que est fora do gancho.

BranchOnHook
Reporta que ramal est no gancho; disponvel apenas em placas KFXS. Contm as seguintes informaes:
Channel: nome do canal (em formato 'Khomp/BxCy') que est no gancho.

CollectCall
Reporta deteco de chamada a cobrar. Contm as seguintes informaes:
Channel: nome do canal (em formato 'Khomp/BxCy') onde ocorreu o alarme.

NewSMS
Reporta que h uma nova mensagem SMS na placa; dsponvel apenas em placas KGSM. Contm as
seguintes informaes:
Channel: nome do canal (em formato 'Khomp/BxCy') onde a mensagem foi recebida;
From: nmero de telefone de onde a mensagem foi enviada ( fornecido pela operadora, e pode
conter informao textual tambm);
Date: data e hora do envio da mensagem SMS pela origem;
Size: tamanho da mensagem (em bytes);
Mode: codificao utilizada no envio da mensagem;
Message: corpo da mensagem enviada.
OBS: Este evento s enviado caso exista um contexto de recebimento de ligaes SMS ajustado no dialplan;
caso contrrio, as mensagem SMS so mantidas no SIM card, evitando assim a perda destas mensagens.

Interface gateway (AGI)


Para facilitar a utilizao do channel da Khomp, so fornecidos comandos AGI para determinadas funes,
listados abaixo:

17-03-2009

29

Recursos adicionais

README channel 2.3


KSEND SMS
um comando AGI para envio de mensagens SMS atravs do channel, utilizando codificao ISO-8859-1. O
comando tm a seguinte sintaxe:
KSEND SMS <recurso> <destino> <mensagem>

Onde os campos tm o seguinte significado.


<recurso> define o canal a ser alocado (para maiores informaes, consultar o item "recurso" da
documentao da aplicao "KSendSMS");
<destino> o telefone de destino, para onde a mensagem ser enviada;
<mensagem> contm o corpo da mensagem a ser enviada, sem aspas;
O cdigo de retorno deste comando, em caso de sucesso, :
200 result=1

Em caso de falha, o retorno :


200 result=0 (<cdigo-de-erro>)

Onde <cdigo-de-erro> um cdigo definido pela API K3L, por exemplo:


200 result=0 (kgccUnallocatedNumber)

Caso o nmero de destino seja inexistente. Para maiores detalhes, favor consultar o captulo seguinte,
"Cdigos e significados".

17-03-2009

30

Recursos adicionais

README channel 2.3

Utilizao de patches adicionais


Para alguns recursos disponibilizados pelo channel - como no caso da deteco e reportao de atendimento
por caixa postal e secretria eletrnica - pode ser necessrio o uso de patches para o Asterisk, que visam
extender as capacidades deste software para atender melhor s necessidades do channel da Khomp.
Estes patches encontram-se na distribuio do cdigo-fonte do channel da Khomp, em um diretrio
denominado patches, onde cada diretrio contm patches para uma ou mais verses do Asterisk, e arquivos
de documentao explicando suas funcionalidades.
Para aplicar estes patches, deve-se seguir estes procedimentos bsicos:

Descompactar o cdigo-fonte do Asterisk:


$ tar -zxvf asterisk-1.x.y.tar.gz

Alternar o diretrio corrente para o diretrio base do cdigo-fonte do Asterisk:


$ cd asterisk-1.x.y

Executar o comando patch, repassando o patch em questo como base:


$ patch -p0 < patch-xyzw.diff

Recompilar o Asterisk e, caso indicado na documentao, o channel da Khomp tambm.

17-03-2009

31

Utilizao de patches adicionais

README channel 2.3

Cdigos e significados
Este captulo apresenta os cdigos utilizados no channel da Khomp, e seus significados:

Estados de canais
Refletem o estado do canal relativo placa. No caso de links E1, o estado pode ter uma ou mais das seguintes
opes:
kecsFree: o canal est livre;
kecsBusy: o canal no est livre (ou ocupado, ou em falha);
kecsOutgoing: o canal possui uma ligao de sada;
kecsIncoming: o canal possui uma ligao de entrada;
kecsLocked: o canal est bloqueado;
kecsOutgoingLock: o canal est bloqueado para chamadas saintes;
kecsLocalFail: o canal possui uma falha local (nesta ponta);
kecsIncomingLock: o canal est bloqueado para chamadas entrantes;
kecsRemoteLock: h um bloqueio remoto (na outra ponta) neste canal.
No caso de um canal FXS, o estado definido por um destes valores:
kfxsOnHook: o telefone conectado neste canal est no gancho ou desconectado;
kfxsOffHook: o telefone conectado neste canal est fora do gancho;
kfxsRinging: o canal est sendo chamado;
kfxsFail: o canal est em falha devido a problemas de comunicao entre a central e a placa.
No caso de um canal GSM, o estado tambm definido por um dos valores a seguir:
kgsmIdle: o canal est livre e disponvel para realizar chamadas;
kgsmCallInProgress: o canal est ocupado em uma ligao;
kgsmSMSInProgress: o canal est ocupado enviando/recebendo mensagens SMS;
kgsmModemError: ocorreu um erro na comunicao com o modem do canal;
kgsmSIMCardError: o SIM card no est presente ou no foi inserido/detectado corretamente;
kgsmNetworkError: ocorreu um erro ao comunicar-se com a rede;
kgsmNotReady: o modem est sendo inicializado no canal.
E no caso de um canal FXO, os estados sero os seguintes:
kfcsDisabled: o canal est desabilitado;
kfcsEnabled: o canal est habilitado.

Estados de ligao
Define o estado de cada canal relativo ao software, que pode ser:

17-03-2009

32

Cdigos e significados

README channel 2.3


kcsFree: o canal est livre;
kcsIncoming: o canal est recebendo uma chamada;
kcsOutgoing: o canal est realizando uma chamada;
kcsFail: o canal est em falha.

17-03-2009

33

Cdigos e significados