A grande maioria dos PBX-IP prontos é projetada para empresas com uma equipe de dez ou mais pessoas. De fato, na Rússia existem muitas empresas com dois a cinco funcionários, e elas também precisam, de alguma forma, organizar as comunicações telefônicas. A funcionalidade dos PBX-IP prontos é redundante para eles e o custo é muito alto. Você pode criar sua própria central telefônica usando um computador comum e o Asterisk. Você pode se conectar a um provedor de serviços de VoIP e usar o serviço "PBX em nuvem". E você pode seguir o outro caminho - pegue um dispositivo barato com o Asterisk já pré-instalado, como o Yeastar TG100 , e melhore um pouco sua funcionalidade. Para aqueles que não estão procurando maneiras fáceis, bem-vindo ao gato.
O Yeastar TG100 é um gateway VoIP GSM para um cartão SIM e é usado, geralmente, para conectar uma linha celular a um IP-PBX usando o protocolo SIP. Vamos tentar usar o Yeastar TG100 não com o IP-PBX, mas em vez disso. Por que escolhemos o gateway GSM como um assunto de teste? Não é segredo que muitas empresas no início de suas atividades usam um número de celular comum para se comunicar com o mundo. No processo de crescimento, as necessidades de comunicação aumentam, mas também quero manter o número antigo - nesse sentido, a opção de usar um gateway VoIP GSM parece melhor que o Asterisk em um computador ou em um PBX IP virtual.Por que exatamente Yeastar? Em primeiro lugar, em nossa opinião, esses são os gateways VoIP GSM da mais alta qualidade em nosso mercado. Em segundo lugar, esses gateways oferecem a capacidade de acessar o Asterisk instalado e modificar os arquivos de configuração (pelos quais os engenheiros devem dizer um agradecimento especial). Em terceiro lugar, o próprio fabricante alega que os gateways GSM Yeastar VoIP suportam o "servidor SIP para registrar telefones IP", o que geralmente é enganoso para os usuários finais que pensam que podem usar o gateway como um PBX IP completo. Este artigo pode ser do interesse de apenas esses usuários.Finalmente, por que escolhemos o Yeastar TG100 mais jovem? Tudo é simples aqui - já que estamos falando de trocas telefônicas automáticas para os menores, selecionamos o gateway mais barato. Se desejar, em vez do TG100, você pode usar o TG200 (para dois cartões SIM), o TG400 (para quatro) e até o TG800 (para oito) - não haverá alterações fundamentais nas configurações.O que queremos obter?
Primeiro, determinaremos qual conjunto mínimo de funções nosso futuro IP-PBX deve ter.- Intercom. Telefones IP ou softphones de usuários registrados no gateway devem poder fazer e transferir chamadas
- Chamadas recebidas. A chamada recebida deve ir para o menu interativo de voz, que oferecerá ao chamador várias opções para conectar-se aos funcionários da empresa
- SIP-. GSM- – , , , VoIP-
- . – SIP GSM, , . – GSM-, – SIP
?
Vamos tentar minimizar a configuração do gateway através dos arquivos de configuração, usando as ferramentas de configuração padrão ao máximo, ou seja, a interface da Web. Por exemplo, com ele, podemos criar o número de contas SIP necessárias para conectar usuários ao gateway de telefone IP. Vá para a seção Gateway - Linhas VoIP e clique em Adicionar linha VoIP .
Tipo de linha: conta VoIPTipo: SIPNome: qualquer nomeConta: número de telefone internoSenha: senha complexaRepetimos essa operação quantas vezes for necessário para obter telefones. Infelizmente, mesmo após a criação de todas as contas SIP, a comunicação interna não funcionará. Para habilitá-la, precisaremos trabalhar com arquivos de configuração.Conectamos nosso Yeastar TG100 a um provedor de serviços VoIP, pois a interface da web oferece todas as possibilidades para isso. Na mesma seção, Gateway - Linhas VoIP , clique em Adicionar linha VoIP novamente e selecione “Linha VoIP” no campo Tipo de linha. Cada operadora de telecomunicações possui seus próprios requisitos de registro, no entanto, os campos disponíveis são suficientes para conectar-se com êxito à maioria deles.
Tipo de linha: de VoIP linhatipo: o SIPNome: arbitrária nomedo host / IP:O endereço IP ou nome de domínio do servidor SIP, bem como sua porta.Domínio: endereço IP ou nome de domínio do servidor SIPUsuário : SIP ID emitido pelo operadorNome de identificação: SIP ID emitido pelo operadorSenha: senha fornecida pelo operadorDe De (guia Avançado): SIP ID emitida pelo operadorCrie um menu de voz interativo via Web a interface, é claro, não funcionará. Mas, para ele, em qualquer caso, você precisa de uma saudação de voz, para baixar a qual podemos usar a interface da Web. Na seção Sistema - Arquivos de áudio, clique em Baixar arquivo. O arquivo deve estar no formato wav e seu tamanho não deve exceder 1,8 Mb. A codificação a seguir é permitida:gsm 6.10 8kHz, Mono, 1Kb / salaw / ulaw 8kHz, Mono, 1Kb / spcm 8kHz, Mono, 16Kb / sÉ aqui que a interface da Web termina. Vamos configurar o roteamento interno, de saída e de entrada.Conectando ao Yeastar TG100
Para conectar, usaremos o protocolo SSH, que deve primeiro ser ativado no gateway. Na seção Sistema - Configurações de rede - Configurações da LAN , ative a opção Ativar SSH , salve e aplique as alterações.
Use seu cliente SSH favorito para conectar-se ao gateway. Por padrão, a porta de conexão é 8022, o login é root e a senha é ys123456. Ao se conectar, você entrará no ambiente do sistema operacional Linux.Os arquivos de configuração do Asterisk estão localizados no local usual - / etc / asterisk; no entanto, você não pode alterar nada diretamente neles; caso contrário, após qualquer aplicação das configurações na interface da Web, todas as suas configurações nos arquivos de configuração serão perdidas. Para adicionar ou alterar as configurações dos arquivos de configuração do Asterisk, é fornecido um diretório especial - / persistent / custom-cfg. Ele contém o arquivo gncustom.conf que contém os nomes de todos os arquivos de configuração do asterisco que você pode modificar ou adicionar algo novo a eles.cat /persistent/custom-cfg/gncustom.conf :
[modifyfile]
/etc/asterisk/extensions.conf
/etc/asterisk/sip.conf
/etc/asterisk/users.conf
/etc/asterisk/iax.conf
/etc/asterisk/queues.conf
/etc/asterisk/features.conf
/etc/asterisk/voicemail.conf
/etc/asterisk/meetme.conf
/etc/asterisk/rc_org.conf
/etc/asterisk/rtp.conf
/etc/asterisk/http.conf
/etc/asterisk/musiconhold.conf
/etc/asterisk/followme.conf
/etc/asterisk/logger.conf
/etc/asterisk/manager.conf
/etc/asterisk/chan_dahdi.conf
/etc/asterisk/digital-channel.conf
[replacefile]
/etc/asterisk/dahdi-channels.conf
Assim, os arquivos na seção [modifyfile] são arquivos nos quais são permitidas alterações ou adições às configurações existentes; arquivos na seção [replaceefile] - arquivos que foram completamente substituídos pelas suas configurações.Para alterar as configurações no arquivo de configuração do asterisco, é necessário conhecer três parâmetros:- O nome do arquivo de configuração do Asterisk localizado na pasta / etc / asterisk
- Nome da seção indicado entre colchetes [seção] na qual a opção correspondente será alterada
- Nome da própria opção
Em seguida, um arquivo com o nome do formato <name> _custom.conf é criado no diretório / persistent / custom-cfg. Onde <name> é o nome do arquivo de configuração no diretório / etc / asterisk sem o final de ".conf". Por exemplo, se você quiser fazer alterações no arquivo /etc/asterisk/users.conf, o arquivo com as alterações será chamado users_custom.conf. A seção entre colchetes é indicada no arquivo com alterações, bem como no arquivo original no qual você deseja fazer uma alteração, e a linha abaixo altera a opção com o novo valor após o sinal de igual. Um exemplo:[new-context]
parameter1=value1
parameter2=value2
Se uma seção for especificada no arquivo de alterações nas configurações que não está no arquivo de configuração original, ela será simplesmente adicionada.Depois de fazer alterações nos arquivos de configuração, você deverá aplicá-las. A maneira mais fácil de fazer isso é na interface da Web - em qualquer seção de configurações, clique em Salvar e, em seguida, clique em Aplicar .Chamadas internas
Anteriormente, usando a interface baseada na Web, criamos contas SIP, sejam 401, 402 e 403. A configuração desses dispositivos SIP está no arquivo /etc/asterisk/users.conf. Cada dispositivo usa seu próprio contexto de plano de discagem - o parâmetro context. Para 401, é Voip-Account-401, para 402 é Voip-Account-402, para 403 é Voip-Account-403.No arquivo de plano definido /etc/asterisk/extensions.conf, podemos ver a seguinte entrada:[Voip-Account-401]
[Voip-Account-402]
[Voip-Account-403]
Em essência, isso significa que cada dispositivo que criamos está em seu próprio e completamente vazio contexto de plano de discagem. Isso explica o fato de que as chamadas internas por padrão no gateway não funcionam e isso deve ser corrigido.- Vamos criar um contexto especial para o plano de discagem, onde processaremos as chamadas de saída de nossos telefones SIP. O arquivo do plano de discagem original é chamado extensions.conf - portanto, crie um arquivo chamado extensions_custom.conf no diretório / persistent / custom-cfg com o seguinte conteúdo:
[from-internal]
exten => _4XX,1,NoOp(Internal Call)
exten => _4XX,n,Dial(${trunk-${EXTEN}},30,Ttr)
exten => _4XX,n,Hangup()
A essência dessa entrada é que qualquer chamada para um número de três dígitos começando com o número 4 ligará para o dispositivo com o número correspondente criado anteriormente na interface da web do gateway.
- Também precisamos permitir que nossos telefones usem esse contexto de plano de discagem ao fazer chamadas. Para fazer isso, adicione as seguintes linhas no mesmo arquivo extensions_custom.conf abaixo:
[Voip-Account-401]
include => from-internal
[Voip-Account-402]
include => from-internal
[Voip-Account-403]
include => from-internal
- Aplique as alterações usando a interface da web
- Examinamos o arquivo /etc/asterisk/extensions.conf e garantimos que as alterações que fizemos nele aparecessem
- Verificamos na prática - tentamos fazer uma ligação de um telefone interno para outro
Chamadas recebidas
Todas as chamadas recebidas via linha GSM e através do tronco SIP, enviaremos para o menu de voz interativo com a seguinte estrutura:- Um arquivo de som baixado anteriormente com uma saudação de voz é reproduzido. O arquivo que enviamos está localizado na pasta / var / lib / asterisk / sounds / record
- Estamos aguardando do assinante a discagem do número. Quando você digita o número "1", é chamado o assinante com o número 401. Quando você digita o número "2", a chamada é enviada ao grupo de discagem, no qual os telefones 401, 402, 403 tocam alternadamente.
- Se o assinante não discar nada, a chamada também será para o mesmo grupo de discagem, mas os telefones nela não tocarão sucessivamente, mas ao mesmo tempo
Para implementar essa funcionalidade, adicione o seguinte ao arquivo extensions_custom.conf:[arttel-ivr]
exten => _.,1,NoOp(Custom IVR by ArtTel)
exten => _.,n,Set(CDR(userfield)=SIP_TRUNK->IP)
exten => _.,n,Answer()
exten => _.,n,Set(TIMEOUT(digit)=2)
exten => _.,n,Background(record/arttel_ivr_alaw)
exten => _.,n,WaitExten(3)
exten => t,1,NoOp(Goto by Timeout)
exten => t,n,Macro(arttel-ringgroup,ringall,402-403-401,15,2)
exten => t,n,Hangup()
exten => 1,1,NoOp(Goto by pressed 1)
exten => 1,n,Dial(${trunk-401},30,T)
exten => 1,n,Hangup()
exten => 2,1,NoOp(Goto by pressed 2)
exten => 2,n,Macro(arttel-ringgroup,linear,402-403-401,15,2)
exten => 2,n,Hangup()
[macro-arttel-ringgroup]
exten => s,1,Set(RG_Type=${ARG1})
exten => s,n,Set(RG_Nums=${ARG2})
exten => s,n,NoOp(Macro RingGroup type: ${RG_Type} for numbers: $RG_Nums)
exten => s,n,GotoIf($[ "${RG_Type}" = "linear" ]?linear,1:ringall,1)
exten => s,n,Hangup()
exten => ringall,1,Set(COUNT=1)
exten => ringall,n,Set(REPEAT_COUNT=1)
exten => ringall,n,Set(Repeat=${ARG4})
exten => ringall,n,Set(TimeDial=${ARG3})
exten => ringall,n(loop),Set(RG_Dial=${RG_Dial}&${trunk-${CUT(RG_Nums,-,${COUNT})}})
exten => ringall,n,NoOp(RG_Dial=${RG_Dial})
exten => ringall,n,Set(COUNT=$[${COUNT} + 1])
exten => ringall,n,GotoIf(${CUT(RG_Nums,-,${COUNT})}?loop)
exten => ringall,n(repeat),Dial(${RG_Dial:1},${TimeDial},T)
exten => ringall,n,Set(REPEAT_COUNT=$[${REPEAT_COUNT} + 1])
exten => ringall,n,GotoIf($[ ${REPEAT_COUNT} <= ${Repeat} ]?repeat)
exten => ringall,n,Hangup()
exten => linear,1,Set(COUNT=1)
exten => linear,n,Set(REPEAT_COUNT=1)
exten => linear,n,Set(Repeat=${ARG4})
exten => linear,n,Set(TimeDial=${ARG3})
exten => linear,n(loop),Dial(${trunk-${CUT(RG_Nums,-,${COUNT})}},${TimeDial},T)
exten => linear,n,Set(COUNT=$[${COUNT} + 1])
exten => linear,n,GotoIf(${CUT(RG_Nums,-,${COUNT})}?loop)
exten => linear,n,Set(COUNT=1)
exten => linear,n,Set(REPEAT_COUNT=$[${REPEAT_COUNT} + 1])
exten => linear,n,GotoIf($[ ${REPEAT_COUNT} <= ${Repeat} ]?loop)
exten => linear,n,Hangup()
Nosso contexto de saudação de voz foi criado, agora é necessário enviar todas as chamadas recebidas, tanto do canal GSM quanto do tronco SIP. Para fazer isso, crie o arquivo users_custom.conf na pasta / persistent / custom-cfg com o seguinte conteúdo:[gsm_1]
context=arttel-ivr
[trunk-arttel_telecom]
context=arttel-ivr
Salvamos e aceitamos as alterações feitas na interface da Web.Chamadas efetuadas
A última coisa que precisamos fazer é configurar a lógica das chamadas efetuadas. Ela será a próxima:- As chamadas para todos os números de celular a partir de 89 ... serão emitidas via canal GSM
- As chamadas na Rússia, cujos números consistem em 10 caracteres, e começam com 83 ..., 84 ... ou 88 ... serão emitidas através do provedor SIP
- Chamadas para números internacionais a partir de 810 ... também emitiremos pelo canal GSM
Para fazer isso, adicione o seguinte à seção [from-internal] no arquivo extensions_custom.conf que já criamos:
exten => _89XX.,1,NoOp(Outbound dial to Mobile)
exten => _89XX.,n,Set(CDR(userfield)=IP->MOBILE)
exten => _89XX.,n,Set(STRATEGY=0)
exten => _89XX.,n,Macro(trunkdial-failover-0.4,1,,${EXTEN:0},trunk-GSM1,)
exten => _89XX.,n,Hangup()
exten => _8[348]XXXXXXXXX,1,NoOp(Outbound dial to Russia)
exten => _8[348]XXXXXXXXX,n,Set(CDR(userfield)=IP->SIP_TRUNK)
exten => _8[348]XXXXXXXXX,n,Set(STRATEGY=0)
exten => _8[348]XXXXXXXXX,n,Macro(trunkdial-failover-0.4,1,,${EXTEN:0},trunk-arttel_telecom,)
exten => _8[348]XXXXXXXXX,n,Hangup()
exten => _810XX.,1,NoOp(Outbound dial to International)
exten => _810XX.,n,Set(CDR(userfield)=IP->MOBILE)
exten => _810XX.,n,Set(STRATEGY=0)
exten => _810XX.,n,Macro(trunkdial-failover-0.4,1,,${EXTEN:0},trunk-GSM1,)
exten => _810XX.,n,Hangup()
Quais regras são responsáveis por qual direção não é difícil de entender pelo padrão de número do ramal: _89XX. - números de celular, _8 [348] XXXXXXXXX - chamadas na Rússia, _810XX. - chamadas para destinos internacionais. A macro trunkdial-failover-0.4 é responsável pelo envio de chamadas através de um tronco específico. O primeiro argumento indica o número de linhas usadas para chamadas feitas. O último argumento lista os troncos pelos quais uma chamada de saída pode ser feita. Por exemplo, se estivéssemos trabalhando com um Yeastar TG400 de gateway de quatro portas em vez de um Yeastar TG100 de porta única, a linha:exten => _89XX.,n,Macro(trunkdial-failover-0.4,1,,${EXTEN:0},trunk-GSM1,)
deve ser substituído por:exten => _89XX.,n,Macro(trunkdial-failover-0.4,4,,${EXTEN:0},trunk-GSM1,trunk-GSM2,trunk-GSM3,trunk-GSM4,)
Salvamos e aplicamos as alterações que fizemos.Conclusão
Como resultado das mudanças, obtivemos uma solução totalmente funcional, pronta para atender com toda a calma o escritório de 2 a 10 pessoas. Sim, ele não suporta funções adicionais, como gravar e ouvir conversas, estacionamento de chamadas, chamadas em conferência, correio de voz e outras. Mas, na verdade, para as menores empresas, todas essas funções não são procuradas. Mas esta solução é compacta, com baixo consumo de energia e suporte para a linha GSM. E se você tiver tempo, desejo e imaginação, o gateway VoIP GSM Yeastar TG100 pode ser complementado com muitas funções mais interessantes.