Este documento aborda informações sobre o Endpoint da Khomp como um todo, desde opções disponíveis de configuração, os applications disponibilizados, os possíveis comandos de CLI, entre outros.
Para procedimentos sobre a instalação, favor consultar o README do Endpoint.
Configurar o Endpoint da Khomp é uma tarefa que consiste de três etapas:
Estas etapas são descritas mais detalhadamente abaixo.
Esta etapa é realizada de maneira semi-automatizada através do programa khompwizard, um assistente que configura os parâmetros básicos das placas do sistema. Esse assistente inicializa os arquivos de configuração através de informações obtidas do usuário, quando estas forem necessárias, inicializando as configurações menos utilizadas com os valores padrões.
Normalmente, este programa é executado automaticamente após a instalação do sistema. Entretanto, pode ser necessário executá-lo manualmente caso uma atualização esteja sendo realizada, ou se novas placas foram adicionadas no sistema após a instalação dos drivers da placa.
Caso seja necessária a configuração de parâmetros avançados da placa e/ou da sinalização, o programa k3lconfig permite acessar todas as configurações disponíveis de cada placa instalada. Para maiores informações sobre este programa, consulte a documentação do mesmo. Para soluções de problemas de sincronismo, consulte a seção Solução de problemas sobre o procedimento de configuração manual das placas.
A configuração padrão do sistema costuma atender à maior parte das necessidades. Entretanto, as configurações do Endpoint da Khomp podem ser modificadas através do arquivo de configuração '/usr/local/freeswitch/conf/autoload_configs/khomp.conf.xml'.
A lista de opções é a seguinte:
Define as configurações gerais de todos os canais da Khomp.
Sintaxe: <param name="..." value="..."/>
Define os grupos para serem usados na alocação de canal.
Neste caso, as opções são usadas para definir nomes para strings de alocação de canais. O formato segue o padrão <param name="nome grupo" value="string alocação"/>, onde as strings de alocação de canais são as mesmas utilizadas no application bridge, e nome do grupo é um nome arbitrário escolhido pelo usuário.
<param name="pstn" value="b0c0 + b0c5"/>
Este grupo, por sua vez, poderia ser usado no application bridge como <action application="bridge" data="Khomp/Gpstn/..."/>.
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:
<param name="pstn" value="b0c0-20:from-pstn"/>
Este grupo, por sua vez, poderia ser usado no application bridge como <action application="bridge" data="Khomp/Gpstn/..."/>, e todas as ligações vindas destes canais seriam tratadas no contexto from-pstn.
Define configurações de cadências para o Endpoint.
Neste caso, as opções são nomes de cadências e um ou dois pares de números, que definem os intervalos de tom e silêncio a ser utilizado nas cadências. Para maiores detalhes, favor consultar o arquivo de configuração.
Define números de origem para a placa KFXS.
Neste caso, as opções são seqüências de prefixos de ramais e números seriais das placas, que definem os números base dos endereços de origem, e a ordem numérica das placas. O formato das opções é:
<param name="prefixo" value="serial1, serial2, ...."/>
Por exemplo, para definir que as placas K0374 e K2352 devem ser numeradas seqüencialmente, partido do ramal 200, basta escrever:
<param name="200" value="374, 2352"/>
Para maiores detalhes, favor consultar o arquivo de configuração.
Define hotlines para a placa KFXS.
Neste caso, as opções são seqüências de ramais e números de destino, definindo os ramais listados nesta seção para serem tratados como "hotlines". Para cada ramal listado, o número de destino especificado será discado quando o ramal for retirado do gancho. Exemplo:
<param name="100" value="1234"/> <param name="200" value="4321"/>
No primeiro exemplo, o ramal de número 100 irá telefonar para número 1234 ao ser retirado do gancho; no segundo, o ramal de número 200 irá telefonar para o número 4321 ao ser retirado do gancho.
Permite definir configurações específicas por ramal FXS.
Neste caso, as configurações são números de ramais (baseado nos definidos na seção <fxs-branches>), e as opções e seus valores. As opções disponíveis são:
Cada opção é separada uma da outra por um pipe "|" ou uma barra "/" e definidas após dois pontos ":", exemplo:
<param name="200" value="input-volume:1|context:master-branch" />
Para maiores informações sobre a sintaxe e exemplos, favor consultar o arquivo de configuração.
Para maiores informações, consultar o arquivo de configuração 'khomp.conf.xml'.
Quando as ligações são recebidas nas placas e dispositivos Khomp, estas são encaminhadas pelo Endpoint da Khomp para contextos específicos dentro do plano de discagem do FreeSWITCH®. Estes contextos podem ser alterados através do arquivo de configurações khomp.conf.xml, disponível no diretório de configuração do FreeSWITCH (por padrão, "/usr/local/freeswitch/conf/autoload_configs").
Para maiores detalhes sobre os contextos específicos, consultar a seção de Configuração do Endpoint.
Abaixo, encontram-se informações de como configurar os contextos de entrada de chamadas:
Para placas E1, as ligações de entrada por padrão chegam em um contexto pré-definido conforme a opção context-digital:
<param name="context-digital" value="khomp-DD-LL"/>
Este contexto padrão define que as ligações serão redirecionadas de acordo com o número da placa e número do link: DD é o número dispositivo (com dois dígitos), e LL é o número do link (também com dois dígitos).
Entretanto, é possível configurar outros contextos de entrada, com formatos diferenciados. Pode-se utilizar a opção CCC, que significa o número do canal na placa (com três dígitos), e SSSS, que representa o número serial da placa (com quatro dígitos).
Exemplos de configuração no arquivo khomp.conf.xml:
<!-- número seqüencial da placa e do link (ex: khomp-01-00) --> <param name="context-digital" value="khomp-DD-LL"/>
<!-- número serial da placa e seqüencial do link (ex: khomp-3049-00) --> <param name="context-digital" value="khomp-SSSS-LL"/>
<!-- número seqüencial da placa e do canal (ex: khomp-00-001) --> <param name="context-digital" value="khomp-DD-CCC"/>
<!-- recebe todas as chamadas em um só contexto (khomp-digital) --> <param name="context-digital" value="khomp-digital"/>
Abaixo um exemplo de contexto no plano de discagem:
<!-- Este contexto presente em seu arquivo de dialplan, irá manipular chamadas de entrada no link 0 (primeiro link) da placa 0. --> <context name="khomp-00-00"> . . . </context>
Outro exemplo, utilizando o mesmo formato:
<!-- Este contexto presente em seu arquivo de dialplan, irá manipular chamadas de entrada no link 1 (segundo link) da placa 0. --> <context name="khomp-00-01> . . . </context>
Um exemplo completo, com algumas ações simples:
<context name="khomp-00-00"> <extension name="exemplo_1"> <condition field="destination_number" expression="^1234$"> <action application="bridge" data="Khomp/b0L1/2345"/> </condition> </extension> <extension name="exemplo_2"> <condition field="destination_number" expression="^23(\d{2})$"> <action application="bridge" data="sofia/${use_profile}/11$1@${sip_from_host}"/> </condition> </extension> </context>
<context name="khomp-00-01"> <extension name="exemplo_3"> <condition field="destination_number" expression="^1111$"> <action application="bridge" data="Khomp/b0L0/2345"/> </condition> </extension> </context>
Este plano de discagem define o recebimento de chamadas na placa 0 e no link 0, redirecionando chamadas para o número 1234 feitas para o link 1 da placa 0, pro ramal/telefone 2345, e redirecionando qualquer número de quatro dígitos começado com 23 para telefones SIP de quatro dígitos começados com 11 mais os dois últimos dígitos recebidos.
Também há mais uma extensão definida, onde as ligações recebidas no link 1 da placa 0 para o número 1111, são redirecionadas para o link 0 da placa 0, para o telefone/ramal 2345.
Da mesma forma que no contexto de placas E1, as ligações de entrada são encaminhadas pelo Endpoint para o FreeSWITCH.
O contexto é pré-definido da seguinte forma, conforme o arquivo khomp.conf.xml:
<param name="context-gsm" value="khomp-DD-CC"/> ;placas GSM
<param name="context-fxs" value="khomp-DD-CC"/> ; placas FXS
<param name="context-fxo" value="khomp-DD-CC"/> ; placas FXO
Nestes casos, DD é o número dispositivo (com dois dígitos), e CC é o número do canal da placa. Pode-se utilizar também SSSS, que representa o número serial da placa.
Em ligações originadas a partir de um ramal FXS, o Endpoint driver procura uma extensão válida (dos dígitos discados) após o dígito # ou após o timeout (configurável pela opção fxs-digit-timeout, no arquivo khomp.conf.xml). Essa busca é realizada no contexto específico do ramal (definido na seção <fxs-options> do arquivo de configuração khomp.conf.xml), caso não seja configurado, a busca é realizada no contexto definido na opção context-fxs;
Mensagens SMS são recebidas pelo Endpoint da Khomp e encaminhadas para o FreeSWITCH como uma ligação normal, mas sem áudio, que possui algumas variáveis ajustadas com informações recebidas na mensagem - para maiores informações sobre estas variáveis, consulte a documentação das variáveis do Endpoint. Este contexto também pode ser alterado, de mesma forma que o contextos acima.
Esta ligação entra no seguinte contexto, conforme o arquivo khomp.conf.xml:
<param name="context-gsm-sms" value="khomp-sms-DD-CC"/>
Onde DD é o número dispositivo (com dois dígitos), e CC é o número do canal (também com dois dígitos). Por exemplo:
<context name="khomp-sms-00-01"> <extension name="sms"> <condition field="destination_number" expression="^s$"> <action application="log" data="DEBUG KSmsType=${KSmsType}"/> <action application="log" data="DEBUG KSmsBody=${KSmsBody}"/> </condition> </extension> </context>
Para estas placas, as ligações de entrada possuem um contexto pré-definido, conforme exemplo abaixo:
<param name="context-pr" value="khomp-DD-CC"/>
Neste caso, DD é o número do dispositivo (com dois dígitos), e CC é o número do canal da placa.
A seção groups, no arquivo de configuração khomp.conf.xml, pode ser utilizado para definir contextos específicos para determinados grupos de canais.
Esta seção é detalhada na seção Configuração do Endpoint.
O aplicativo (ou application) bridge é responsável por gerar chamadas no FreeSWITCH a partir de um dialplan. Este aplicativo pode ser utilizado para gerar chamadas a partir de diversos tipos de Endpoints, sendo que cada Endpoint segue um formato específico para definir tanto as opções quanto os canais de comunicações a serem utilizados.
Quando utilizado para canais da Khomp, a string de bridge pode ter dois, três ou quatro campos separados por uma barra (/). Algumas strings de exemplo:
<action application="bridge" data="Khomp/B2L0/32625644"/> <action application="bridge" data="Khomp/*B2L0/32625644"/> <action application="bridge" data="Khomp/S0411/99991234"/> <action application="bridge" data="Khomp/Gpstn/99991234"/> <action application="bridge" data="Khomp/*Gpstn/99991234"/> <action application="bridge" data="Khomp/B2C58/32625644/category=4:orig=4855553232"/> <action application="bridge" data="Khomp/b0c9"/> <action application="bridge" data="Khomp/b0c1+b0c14"/> <action application="bridge" data="Khomp/r304"/>
Nos cinco primeiros exemplos, temos três campos sendo especificados; no sexto, quatros campos são utilizados; e por fim, nos três últimos exemplos, apenas dois são utilizados.
Sobre os campos utilizados, segue a descrição:
OBS: A string de bridge com somente dois campos é específica à ligações para uma placa KFXS, onde o destino está atrelado automaticamente ao canal alocado, ou ao ramal especificado.
A política de alocação de canais, no módulo da Khomp, pode ser especificado na própria string de bridge ou através de grupos, no arquivo de configuração khomp.conf.xml. Para especificar placas, canais e links a serem alocados existe a seguinte sintaxe disponível (considerando X, Y e Z como números quaisquer):
Para buscar por ramais de placas KFXS de acordo com o número do ramal, pode ser utilizada a seguinte sintaxe (considerando X e Y números de ramais válidos):
É interessante notar que apenas a capitalização da letra 'B', 'S' ou 'R' define a ordem de busca dos canais; se minúscula, crescente, e se maiúscula, decrescente.
Já para a alocação de canais através de grupos, existe a seguinte sintaxe disponível:
Existem casos onde é necessário buscar canais mais de um determinado dispositivo, ou determinado grupo de ramais. Para isto, existe uma extensão disponível na string de alocação, que diz respeito ao uso do símbolo de soma (+) para concatenar várias strings de ligação, da seguinte forma:
<action application="bridge" data="Khomp/B1L0+B2L0/32332933"/> <action application="bridge" data="Khomp/*B2+B3+B4/99887766"/> <action application="bridge" data="Khomp/S0411+B1L0/99887766"/> <action application="bridge" data="Khomp/Gpstn1+Gpstn2/99991234"/> <action application="bridge" data="Khomp/*gOperadora1+gOperadora2/98891234"/>
Esta extensão está disponível tanto no application bridge quanto na especificação de grupos, e pode ser utilizada para agrupar qualquer string de alocação válida à outra. O processamento das strings de alocação se dá da esquerda para a direita - exceto quanto utilizando a alocação cíclica, onde todos os canais especificados são verificados simultaneamente.
Uma variação da alocação de canais é através de uma escolha cíclica e/ou justa, que consiste em escolher o canal que completou - até o momento - o menor número de ligações saintes. Essa forma é caracterizada por um asterisco (*) antes da string de alocação de canais (conforme pode ser verificado acima, no segundo e quinto exemplos).
Quando iniciada com um asterisco (*), as outras formas de alocação subseqüentes (crescente, decrescente, etc) são utilizadas para decidir, entre os canais com menor número de ligações saintes, qual será verificado primeiro para realizar a chamada.
<action application="bridge" data="Khomp/b0/99887766/orig=restricted"/>
Segue lista de variáveis disponíveis no Endpoint:
Abaixo, segue uma explanação sobre como utilizar as variáveis do Endpoint da Khomp disponíveis no dialplan, tanto para comunicar quanto para receber informações:
Quando ativada, faz com que o Endpoint da Khomp derrube chamadas a cobrar através de duplo atendimento (disponível para sinalizações 'R2 Digital' e FXO), através da informação disponível no protocolo RDSI e R2/MFC, ou através da detecção do áudio de chamada a cobrar (disponível para qualquer sinalização digital por link E1, e para sinalização GSM).
Esta variável é útil para derrubar chamadas a cobrar para determinados ramais, e deve ser ajustado obrigatoriamente antes de realizar qualquer tipo de atendimento - aplicações como playback e bridge devem ser executadas sempre após ajustar esta variável, por exemplo.
Para melhor funcionalidade, é recomendado também que nenhum estado de chamada (ringback) seja enviado antes desta variável ser ajustada, então aplicações devem ser executadas apenas após o ajuste correto desta variável.
Esta variável pode ser ajustada localmente e globalmente, tanto para yes quanto para no. O ajuste da variável global para yes fará com que todas as chamadas a cobrar sejam derrubadas, a não ser que a chamada específica seja ajustada para no - isto permite a criação de um filtro global de chamadas a cobrar, com algumas poucas exceções.
Ativando a variável dentro do contexto default:
<context name="default">
<extension name="exemplo"> . . . <action aplication="set" data="KDropCollectCall=yes"/> . . . </extension>
</context>
Ativando a variável no contexto global, lembrando que a mesma deve ser configurada no arquivo vars.xml:
<X-PRE-PROCESS cmd="set" data="KDropCollectCall=yes"/>
Ao receber uma chamada, pode ser definida antes do envio de ringback pelo FreeSWITCH (ou seja, antes do FreeSWITCH executar as aplicações answer, ou bridge). Quando utilizada em sinalização R2/MFC, esta variável ajusta a condição de B para o valor numérico desejado.
Exemplo:
<!-- Condição "NUMBER CHANGED", avisa ao chamador que o número de B mudou. --> <action application="KR2SendCondition" data="3"/>
Ao receber uma chamada, é ajustada pelo Endpoint com a categoria recebida do número que originou a chamada. É ajustada na sinalização R2/MFC, e pode ser consultada em qualquer local do dialplan.
Exemplo:
<action application="log" data="DEBUG KR2GotCategory [${KR2GotCategory}]"/>
Variável ajustada pelo Endpoint, e disponível após o retorno de uma chamada realizada pelo FreeSWITCH. Contém a condição de B recebida ao realizar a chamada. Disponível apenas para sinalização R2/MFC.
Exemplo:
<action application="log" data="DEBUG KR2GotCondition [${KR2GotCondition}]"/>
Variável ajustada pelo Endpoint no contexto de entrada, a partir de informações recebidas pela rede RDSI através da funcionalidade User-to-User Information. Contém o número do descritor do protocolo utilizado pela outra ponta, e normalmente contém valor '0', mas este valor é dependente da aplicação utilizada.
Maiores informações, consultar a especificação ITU-T Q931 (mais precisamente, a tabela 4-26 da especificação).
Exemplo (trabalhando com o número do descritor do protocolo):
<action application="log" data="DEBUG KUserInfoDescriptor [${KUserInfoDescriptor}]"/>
Variável ajustada pelo Endpoint no contexto de entrada, a partir de informações recebidas pela rede RDSI através da funcionalidade User-to-User Information. Contém os dados propriamente ditos, que foram recebidos, em forma de uma 'string' de texto.
Maiores informações sobre este recurso, consultar a especificação ITU-T Q931.
Exemplo (trabalhando com os dados recebidos):
<action application="log" data="DEBUG KUserInfoData [${KUserInfoData}]"/>
É importante salientar que as variáveis são sensíveis à capitalização das letras (case sensitive).
Variável ajustada pelo Endpoint em ligações de saída, representando o tipo de atendimento realizado pela outra ponta. Pode conter os seguintes valores:
(*) Este tipo de atendimento é detectado por sinais em determinadas freqüências que são enviados antes da chamada entrar em uma caixa postal, e variam conforme a operadora. O algoritmo captura a maior parte das caixas postais, mas pode falhar se não existir um sinal claro, ou se o mesmo não estiver dentro dos padrões mais utilizados;
(**) A diferenciação entre estes dois tipos de atendimento depende de configuração específica utilizando o programa k3lanswerinfoconfig, sendo a detecção apenas baseada em heurísticas e nunca com precisão de 100%.
Lista de comandos disponíveis no console do FreeSWITCH para o Endpoint da Khomp:
Este capítulo trata de recursos adicionais do Endpoint, relacionados às funcionalidades especiais presentes em algumas sinalizações.
O Endpoint da Khomp, além de registrar um tipo de canal de comunicação "Khomp", registra também os seguintes itens:
Realiza o processo de transferência do canal atual para o ramal número' utilizando o protocolo de sinalização QSig (Single Step Call Transfer) para placas E1 configuradas com sinalização RDSI (ISDN), ou utiliza comando de FLASH para linhas FXO, LineSide, CAS_EL7 e E1LC.
A sintaxe segue:
<action application="KUserTransfer" data="número[,opções])"/>
Exemplo:
<action application="answer"/> <action application="KUserTransfer" data="2345"/>
Os campos têm o seguinte significado:
Esta aplicação tem a função de enviar mensagens SMS através das placas KGSM da Khomp, utilizando os módulos e SIM cards presentes na placa para tal. A sintaxe da aplicação é a seguinte:
<action application="KSendSMS" data="recurso|destino|mensagem" />
Podendo cada campo ser resumido em:
Após o envio da mensagem, as variáveis KSmsDelivered e KSmsErrorCode conterão o resultado do envio da mensagem. Para maiores informações sobre estas, favor consultar a seção sobre as variáveis utilizadas no Endpoint.
Exemplos de uso desta aplicação seguem abaixo:
<action application="log" data="DEBUG Enviando SMS..." /> <action application="KSendSMS" data="b0c1|99887766|Mensagem de teste" />
<action application="log" data="DEBUG Enviando SMS..." /> <action application="KSendSMS" data="b0|99887766|Mensagem de teste" /> <action application="log" data="DEBUG Enviou? ${KSmsDelivered}" /> <action application="log" data="DEBUG Codigo: ${KSmsErrorCode}" /> <action application="log" data="DEBUG Descr.: ${KSmsErrorName}" />
<action application="log" data="DEBUG Enviando SMS..." /> <action application="KSendSMS" data="b0+b1|99887766|Mensagem de teste" />
<action application="log" data="DEBUG Enviando SMS..." /> <action application="KSendSMS" data="b0|99887766!|Mensagem de teste" />
Esta aplicação tem a função de habilitar ou desabilitar o cancelador de eco do canal.
<action application="KEchoCanceller" data="ação[,opções])"/>
Onde:
Exemplo de uso desta aplicação:
<action application="KEchoCanceller" data="off"/>
Esta aplicação tem a função de habilitar ou desabilitar o controle automático de ganho no canal.
<action application="KAutoGainControl" data="ação[,opções])"/>
Onde:
Exemplo de uso desta aplicação:
<action application="KAutoGainControl" data="on"/>
Esta aplicação tem a função de habilitar ou desabilitar a supressão de DTMF do canal. A sintaxe da aplicação é a seguinte:
<action applicatin="KDTMFSuppression" value="ação[,opções])"/>
Onde:
É importante notar que quando desabilitada a supressão de DTMF, os DTMFs serão passados inband e não serão mais reportados ao FreeSWITCH. Dessa forma o FreeSWITCH não reconhecerá os DTMFs, o que pode ocasionar em mau funcionamento de aplicações como por exemplo, URAs.
Exemplo de uso desta aplicação:
<action applicatin="KDTMFSuppression" value="off"/>
Esta aplicação tem a função de ajustar o volume de entrade e saída de canais da Khomp, sendo a sua sintaxe a seguinte:
<action application="KSetVolume" data="<volume>"/> <action application="KSetVolume" data="<output-volume>|<input-volume>"/>
Onde os campos possuem o seguinte significado:
Esta aplicação tem a função de ajustar um canal da Khomp para o recebimento de sinal de FAX/modem, otimizando o canal de comunicação para o tráfego de dados. Sintaxe:
<action application="KAdjustForFax" data=""/>
Esta aplicação não recebe parâmetros. Exemplo de utilização:
<action application="KAdjustForFax" data=""/>
Esta aplicação tem a função de enviar fax utilizando canais digitais ou FXO da Khomp em ligações pré-estabelecidas, sendo a sua sintaxe a seguinte:
<action application="KSendFax" data="<arquivo>[:<arquivo2>[:...]][|<faxid>]"/>
Esta aplicação necessita de uma licença adquirida à parte para ser utilizada em canais digitais. Os campos possuem os seguintes significados:
Exemplo de uso desta aplicação:
<action application="KSendFax" data="/tmp/fax.tif:/home/root/fax2.tif,1234"/>
Esta aplicação tem a função de receber fax utilizando canais digitais ou FXO da Khomp, sendo a sua sintaxe a seguinte:
<action application="KReceiveFax" data="<arquivo>[|<faxid>]/>
Esta aplicação necessita de uma licença adquirida à parte para ser utilizada em canais digitais. Os campos possuem os seguintes significados:
Exemplo de uso desta aplicação:
<action application="answer" /> <action application="KReceiveFax" data="/tmp/fax.tif"/>
Este canal de comunicação é utilizado para receber mensagens SMS e criar ligações entrantes no FreeSWITCH para cada mensagem recebida. Este canal não possui qualquer tipo de tratamento ou processamento de áudio, e é chamado com cinco variáveis ajustadas:
O processamento do dialplan do FreeSWITCH pode ser utilizado para guardar esta mensagem em um banco de dados, executar alguma aplicação, entre outros. Entretanto, a única ação aceita por este channel é desligamento (hangup) - ou seja, esta ligação entrante não pode ser considerada uma ligação comum.
Este canal de comunicação é utilizado para receber ligações em placas de gravação passiva (família KPR e KFXO-HI), criando ligações entrantes no FreeSWITCH para cada chamada recebida. Este canal permite apenas o recebimento de áudio capturado do link, não permitindo tanto o envio de mensagens de áudio quanto o de sinalizações de controle.
O processamento do dialplan do FreeSWITCH pode ser utilizado para gravar dados sobre esta ligação em um banco de dados, executar alguma aplicação especial e/ou algum application de gravação (como o record), entre outros. Entretanto, a única ação aceita por este channel é desligamento (hangup) - ou seja, esta ligação entrante não pode ser considerada uma ligação comum.
Este capítulo apresenta os códigos presentes no Endpoint da Khomp e seus significados, utilizados nos comandos de console:
Refletem o estado do canal relativo à placa. No caso de links E1, o estado pode ter uma ou mais das seguintes opções:
No caso de um canal FXS, o estado é definido por um destes valores:
No caso de um canal GSM, o estado também é definido por um dos valores a seguir:
E no caso de um canal FXO, os estados serão os seguintes:
Define o estado de cada canal relativo ao software, que pode ser::
Reflete diretamente o estado de chamada controlado pelo FreeSWITCH, que pode se
Os seguintes códigos numéricos são reportados:
1 Unassigned number 8 Operator determined barring 10 Call barred 21 SMS transfer rejected 27 Destination out of service 28 Unidentified subscriber 29 Facility rejected 30 Unknown subscriber 38 Network out of order 41 Temporary failure 42 Congestion 47 Resources unavailable 50 Facility not subscribed 69 Facility not implemented 81 Invalid SMS transfer reference value 95 Invalid message 96 Invalid mandatory information 97 Message type non existent 98 Message not compatible with SMS protection state 99 Information element non existent 111 Protocol error 127 Interworking 128 Telematic interworking not supported 129 SMS type zero not supported 130 Cannot replace SMS 143 Unspecified TPPID error 144 Alphabet not supported 145 Message class not supported 159 Unspecified TPDCS error 160 Command cannot be actioned 161 Command unsupported 175 Unspecified TP command error 176 TPDU not supported 192 SC busy 193 No SC subscription 194 SC system failure 195 Invalid SME address 196 Destination SME barred 197 SM rejected duplicate SM 198 TPVPF not supported 199 TPVP not supported 208 SIM SMS storage full 209 No SMS storage capability in SIM 210 Error in SMS 211 Memory capatity exceeded 213 SIM data download error 255 Unspecified error 300 Phone failure 301 SMS service reserved 302 Operation not allowed 303 Operation not supported 304 Invalid PDU mode parameter 305 Invalid text mode parameter 310 SIM not inserted 311 SIM PIN necessary 312 Phone SIM PIN necessary 313 SIM failure 314 SIM busy 315 SIM wrong 320 Memory failure 321 Invalid memory index 322 Memory full 330 SMSC address unknown 331 No network service 332 Network timeout 500 Unknown error 512 Network busy 513 Invalid destination address 514 Invalid message body length 515 Phone is not in service 516 Invalid preferred memory storage 517 User terminated
1 Unallocated number 3 No route to destination 6 Channel unacceptable 8 Operator determined barring 16 Normal call clear 17 User busy 18 No user responding 19 No answer from user 21 Call rejected 22 Number changed 26 Non Selected user clear 27 Destination out of order 28 Invalid number format 29 Facility rejected 30 Response status enquiry 31 Normal, unspecified 34 No circuit channel available 38 Network out of order 41 Temporary failure 42 Switch congestion 43 Access information discarded 44 Requested channel unavailable 47 Resource unavailable 49 QoS unavailable 50 Request facility not subscribed 55 Call barred with UG 57 Bearer capability not authorized 58 Bearer capability not available 63 Service not available 65 Bearer capability not implemented 69 Request facility not implemented 70 Only restricted bearer capability available 79 Service not implemented 81 Invalid call reference value 82 User not member of UG 88 Incompatible destination 91 Invalid transit network selected 95 Invalid message 96 Missing mandatory information element 97 Message type not implemented 98 Message incompatible with state 99 Information element not implemented 100 Invalid information element 101 Message incompatible with state (2) 102 Recovery on timer expiry 111 Protocol error 127 Interworking
0 Phone failure 1 No connection to phone 2 Phone adaptor link reserved 3 Operation not allowed 4 Operation not supported 5 Phone SIM PIN required 6 Phone FSIM PIN required 7 Phone FSIM PUK required 10 SIM not inserted 11 SIM PIN required 12 SIM PUK required 13 SIM failure 14 SIM busy 15 SIM wrong 16 Incorrect password 17 SIM PIN2 required 18 SIM PUK2 required 20 Memory full 21 Invalid index 22 Not found 23 Memory failure 24 Text string too long 25 Invalid character in text string 26 Dial string too long 27 Invalid character in dial string 30 No network service 31 Network timeout 32 Network not allowed 33 Command aborted 34 Number parameter instead of text parameter 35 Text parameter instead of number parameter 36 Numeric parameter out of bounds 37 Text string too short 40 Network PIN required 41 Network PUK required 42 Network subset PIN required 43 Network subset PUK required 44 Network service provider PIN required 45 Network service provider PUK required 46 Corporate PIN required 47 Corporate PUK required 60 SIM Service option not supported 100 Unknown 103 Illegal MS #3 106 Illegal MS #6 107 GPRS service not allowed #7 111 PLMN not allowed #11 112 Location area not allowed #12 113 Roaming not allowed #13 132 Service option not supported #32 133 Registration service option not subscribed #33 134 Service option temporary out of order #34 147 Long context activation 148 Unspecified GPRS error 149 PDP authentication failure 150 Invalid mobile class 151 GPRS disconnection TMR active 256 Too many active calls 257 Call rejected 258 Unanswered call pending 259 Unknown calling error 260 No phone number recognized 261 Call state not idle 262 Call in progress 263 Dial state error 264 Unlock code required 265 Network busy 266 Invalid phone number 267 Number entry already started 268 Cancelled by user 269 Number entry could not be started 280 Data lost 281 Invalid message body length 282 Inactive socket 283 Socket already open
Nesta seção, erros e suas soluções mais comuns são apresentados.
Durante a instalação do Endpoint da Khomp, podem ocorrer as seguintes mensagens:
K3L: WARNING: Unable to find a module for [...]
ou
install: ****** THE KERNEL MODULE HAS NOT BEEN INSTALLED: ******* install: install: ** Please, untar the file kpdriver*.tar.gz located in: ** install: ** '/usr/src/khomp/' ** install: ** then check the README.txt ** install: ** for knowing how to proceed with the installation. **
Neste caso, será necessário compilar os drivers manualmente para o seu sistema. Prossiga para o item abaixo para maiores informações.
Basta seguir ao diretório /usr/src/khomp, descompactar o arquivo "kpdriver_2.0.0XX.tar.gz", e acompanhar procedimentos descritos no arquivo README.txt.
Após realizar a compilação e a instalação do módulo, basta carregá-lo no sistema, configurar as placas, e iniciar o servidor de processos da Khomp.
Para carregar o driver de kernel, é necessário executar o seguinte comando:
# /etc/init.d/khompdrv start
Para configurar as placas, por sua vez, necessário executar o comando:
# khompwizard
Isto executará um assistente de configuração, que irá perguntar a sinalização utilizada no sistema, bem como outros parâmetros de utilização das placas.
Caso seja necessário configurar outros parâmetros adicionais, pode-se utilizar o seguinte comando:
# k3lconfig
Este configurador, por sua vez, mostra todas as opções possíveis de configuração da placa. Os parâmetros que não forem configurados assumem os valores padrão automaticamente, e são compatíveis com a maior parte dos sistemas. Maiores detalhes sobre este programa podem ser obtidos na seção de número '2'.
<!-- <load module="mod_khomp" /> -->
Quando a placa da Khomp estiver devidamente configurada e os módulos da khomp carregados (explicado acima), lembre-se de descomentar esta linha no arquivo.
Por fim, para carregar o servidor de processos, basta executar o seguinte comando:
# kserver start
Após realizar estes procedimentos, o Endpoint já estará operacional, e o FreeSWITCH já pode ser carregado.
Para configurar parâmetros especiais de sincronismo e/ou sinalização, é possível utilizar o programa "k3lconfig": basta selecionar a placa desejada, e as opções das placas serão apresentadas, divididas em seções e subseções para facilitar o acesso. Não é necessário efetuar a configuração de todos os parâmetros: os valores padrão são assumidos, caso não sejam configurados.
Para ajustar a sinalização do link, basta - depois de selecionar a placa - entrar na seção "Opções de sinalização", e em seguida, em "Sinalização da linha". Para escolher uma sinalização específica, basta utilizar as teclas de direcionamento (setas) até selecioná-la, pressionar 'espaço', e confirmar a opção pressionando 'Enter' sobre o botão "Confirmar".
Por fim, para salvar as configurações modificadas, basta sair do programa: ele irá mostrar uma janela, com opções para salvar ou não as alterações realizadas.
É importante notar que não é necessário alterar/ativar as seguintes opções:
Estas opções são controladas pelo Endpoint, e devem estar desabilitadas no 'k3lconfig'.
Se a carga dos módulos de kernel ou a inicialização dos serviços da Khomp não for realizada automaticamente na inicialização do sistema, é possível realizar esta instalação manualmente, criando um link para os scripts /etc/init.d/khompdrv e /etc/init.d/kserver no diretório de inicialização do sistema.
Na caso da distribuição Debian, o script de carga dos módulos de kernel seria linkado dentro do diretório /etc/rcS.d/, enquanto o script de inicialização dos serviços seria linkado dentro dos diretórios /etc/rc2.d, /etc/rc3.d, /etc/rc4.d, /etc/rc5.d, da seguinte forma:
# ln -s /etc/init.d/khompdrv /etc/rcS.d/S19khompdrv # ln -s /etc/init.d/kserver /etc/rc2.d/S20kserver # ln -s /etc/init.d/kserver /etc/rc3.d/S20kserver # ln -s /etc/init.d/kserver /etc/rc4.d/S20kserver # ln -s /etc/init.d/kserver /etc/rc5.d/S20kserver
É interessante verificar as normas da sua distribuição para inicializar os serviços de acordo com o que é esperado pela inicialização da mesma.
Nesta seção, encontram-se informações úteis sobre o Endpoint e componentes relacionados.
Os diretórios criados/modificados nesta instalação são:
/etc/init.d/ -- Scripts de inicialização; /etc/khomp/ -- Arquivos de firmware e configurações; /usr/local/freeswitch/conf/ -- Configurações do FreeSWITCH e Endpoint; /usr/doc/khomp/ -- Documentação das placas, do mod_khomp e dos utilitários; /usr/sbin/ -- Utilitários e servidor de processos; /usr/lib/ -- Bibliotecas compartilhadas da K3L; /usr/local/freeswitch/mod/ -- Módulo 'mod_khomp.so'; /var/log/khomp2.1/ -- Diretório de logs da K3L e Endpoint
O script /etc/init.d/khompdrv é responsável por carregar os módulos kpci9030.ko e kpex8311.ko no kernel, que deve ser realizada automaticamente na inicialização do sistema. Em caso de problemas, verifique a seção Solução de problemas.
Para mais detalhes: http://www.khomp.com.br