205
Asterisk inProprietário A telefonia Hoje! 2010 A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 1 As Licenças Creative Commons permitem expandir a quantidade de obras disponibilizadas livremente e estimular a criação de novas obras com base nas originais, de uma forma eficaz e muito flexível, recorrendo a um conjunto de licenças padrão que garantem a proteção e liberdade - com alguns direitos reservados. As Licenças Creative Commons situam-se entre os direitos de autor (todos os direitos reservados) e o domínio público (nenhum direito reservado). Têm âmbito mundial, são perpétuas e gratuitas. Através das Licenças Creative Commons, o autor de uma obra define as condições sob as quais essa obra é partilhada, de forma proactiva e construtiva, com terceiros, sendo que todas as licenças requerem que seja dado crédito ao autor da obra, da forma por ele especificada.

Asterisk in proprietario angelo b. delphini

  • Upload
    foslog

  • View
    5.388

  • Download
    71

Embed Size (px)

Citation preview

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 1

As Licenças Creative Commons permitem expandir a quantidade de obras disponibilizadas livremente e estimular a criação de novas obras com base nas originais, de uma forma eficaz e muito flexível, recorrendo a um conjunto de licenças padrão que garantem a proteção e liberdade - com alguns direitos reservados.

As Licenças Creative Commons situam-se entre os direitos de autor (todos os direitos reservados) e o domínio público (nenhum direito reservado). Têm âmbito mundial, são perpétuas e gratuitas. Através das Licenças Creative Commons, o autor de uma obra define as condições sob as quais essa obra é partilhada, de forma proactiva e construtiva, com terceiros, sendo que todas as licenças requerem que seja dado crédito ao autor da obra, da forma por ele especificada.

Asterisk in

A verdadeira arte do conhecimento é compartilhar o conhecimento!

Asterisk sem lágrimas – A telefonia Hoje! É um trabalho para auxiliar os profissionais da área de TI que estão iniciando em “Telefonia VoIP”. Este material é a reunião de várias informações disponibilizadas pela Internet, artigos e livros.

Minha intenção não é plagiar, mas sim oferecer um material onde você possa estudar de maneira simples e eficiente.

Bom estudo!

Angelo B. Delphini.

VER: 00.01.08

DATE: 30/Jul/2012

nProprietário – A telefonia Hoje!

A verdadeira arte do conhecimento é compartilhar o conhecimento!

A telefonia Hoje! É um trabalho para auxiliar os profissionais da área de TI que estão iniciando em “Telefonia VoIP”. Este material é a reunião de várias informações disponibilizadas pela Internet,

Minha intenção não é plagiar, mas sim oferecer um material onde você possa estudar de maneira simples e

A telefonia Hoje! 2010

Página 2

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 3

História da telefonia A invenção do telefone é popularmente atribuída ao escocês Alexander Graham Bell em 1876 por ter ele sido o primeiro a patentear o invento que iria revolucionar a forma com que as pessoas se comunicam. No entanto Bell só conseguiu manter a glória de ter sido o pai do telefone porque o verdadeiro inventor não teve condições financeiras de renovar a patente. Até hoje esse fato não é de conhecimento de todos, mas o primeiro a conseguir estabelecer uma comunicação de voz entre dois equipamentos elétricos foi o italiano António Meucci entre 1854 e 1855.

Meucci migrou da Itália para Cuba devido às perseguições que sofria por conta de suas ideias liberais. Observando o comportamento da voz humana, concluiu que a mesma poderia ser transmitida através de circuitos elétricos e entre 1854 e 1855 desenvolveu um “telégrafo sonoro” – como ele mesmo chamava – que comunicava o quarto de sua esposa doente com o seu laboratório. A figura 1.1 mostra o projeto desenvolvido pelo italiano.

Figura 1.1: Protótipo do equipamento desenvolvido por António Meucci.

Esse invento foi publicado em 1861 por um jornal nova-iorquino mantido por italianos e em 1871 (aproximadamente cinco anos antes de Bell) foi solicitada a patente de um “Teletrofone”. Como o pedido não foi renovado até 1874 devido aos custos envolvidos, Graham Bell teve o caminho livre para conseguir registrar o seu protótipo.

Assim, a patente foi mantida devido à morte de Meucci em 1889 e por conta de outros tropeços burocráticos até que em 2002 o Congresso Americano o reconheceu como verdadeiro inventor do telefone.

No entanto, teve seus méritos com esse projeto, pois foi ele quem conseguiu aperfeiçoar e trazer notoriedade ao invento. Juntamente com outros pesquisadores a rede de telefonia começou a se difundir e em Portugal as primeiras experiências de telefone iniciaram-se em 24

Asterisk in

A verdadeira arte do conhecimento é compartilhar o conhecimento!

de Novembro de 1877, ligando Carcavelos à Central do Cabo em Lisboa. A primeira rede telefónica pública foi inaugurada em Lisboa a 26 de Abril de 1882 pela Telephone Company of Europe Ltd1882. A concessão foi transferida para a 1887 que a manteve até 1968.

O primeiro serviço de telefone Setembro de 1937 a APT inaugurou a primeira estação automática na Estrela em Lisboa. Nesse ano a rede da APT tinha 48 000 assinantes.

Nessa época eram necessários pontos centralizadosorigem e o destino: eram os primeiros PBXs (como era uma central telefónica nesta época.

Figura 1.2: Comutação manual de

Com a disseminação do uso do telefone a sua adoção comercial, a necessidade de agilidade e novos recursos envolvendo telefonia vieram à tona. Em 1889 foi desenvolvida a primeira central telefónica automática (ampliado e melhorado até atingir o gravação, música em espera e atendimento automático vieram a ser incorporados às centrais telefónicas com o avanço da tecnologia. A figura 1.3 mostra uma central PABX.

nProprietário – A telefonia Hoje!

A verdadeira arte do conhecimento é compartilhar o conhecimento!

de Novembro de 1877, ligando Carcavelos à Central do Cabo em Lisboa. A primeira rede pública foi inaugurada em Lisboa a 26 de Abril de 1882 pela Edison Gower Bell

Telephone Company of Europe Ltd que tinha a concessão atribuída desde 13 de Janeiro de 1882. A concessão foi transferida para a The Anglo Portuguese Telephone Company (APT)1887 que a manteve até 1968.

O primeiro serviço de telefone automático foi inaugurado em Portugal em 1930 e em 25 de a APT inaugurou a primeira estação automática na Estrela em Lisboa. Nesse

ano a rede da APT tinha 48 000 assinantes.

Nessa época eram necessários pontos centralizados que fizessem a comutação manual entre a origem e o destino: eram os primeiros PBXs (Private Branch Exchange), a figura 1.2 mostra como era uma central telefónica nesta época.

Figura 1.2: Comutação manual de chamadas feitas por telefonistas.

minação do uso do telefone a sua adoção comercial, a necessidade de agilidade e novos recursos envolvendo telefonia vieram à tona. Em 1889 foi desenvolvida a primeira central telefónica automática (PABX – Private Automatic Branch Exchange) tendo seu ampliado e melhorado até atingir o nível que conhecemos hoje. Novos recursos como gravação, música em espera e atendimento automático vieram a ser incorporados às centrais telefónicas com o avanço da tecnologia. A figura 1.3 mostra uma central PABX.

A telefonia Hoje! 2010

Página 4

de Novembro de 1877, ligando Carcavelos à Central do Cabo em Lisboa. A primeira rede Edison Gower Bell

a a concessão atribuída desde 13 de Janeiro de The Anglo Portuguese Telephone Company (APT) em

Portugal em 1930 e em 25 de a APT inaugurou a primeira estação automática na Estrela em Lisboa. Nesse

que fizessem a comutação manual entre a ), a figura 1.2 mostra

por telefonistas.

minação do uso do telefone a sua adoção comercial, a necessidade de agilidade e novos recursos envolvendo telefonia vieram à tona. Em 1889 foi desenvolvida a primeira

) tendo seu projeto que conhecemos hoje. Novos recursos como

gravação, música em espera e atendimento automático vieram a ser incorporados às centrais telefónicas com o avanço da tecnologia. A figura 1.3 mostra uma central PABX.

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 5

Figura 1.3: Central PABX

Telefonia analógica

A telefonia analógica se baseia no simples princípio onde temos uma fonte de tensão e a ponta que a recebe.

A ponta que gera a tensão e consequentemente o tom de marcação é conhecida como porta FXS (Foreign Exchange Station) ou porta de extensão e esta encontra-se sempre do lado onde o serviço está sendo oferecido – usualmente a operadora para o telefone ou o PABX para a extensão. A ponta que recebe a tensão e o tom é a chamada porta FXO (Foreign Exchange Office) ou porta de tronco (trunk). Para haver o correto funcionamento do sistema e evitar danos aos equipamentos envolvidos é fundamental que seja sempre ligada uma porta FXO a uma porta FXS, ou seja, nunca uma porta FXS deve ser ligada à outra, pois ambas irão gerar tensão, o que pode ocasionar a queima de uma ou das duas portas. Também não se deve conectar uma porta FXO com outra, já que ambas apenas recebem o tom e sendo assim essa conexão irá se anular.

A corrente gerada pela porta FXS para fazer com que o telefone toque é de 90 volts, o suficiente para alimentar os componentes eletrónicos de um telefone analógico simples para que faça vibrar o dispositivo de emissão sonora. Vale lembrar que ao trabalhar com uma linha “viva” é necessário tomar os devidos cuidados.

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 6

Logo FXS e FXO são as portas usadas por linhas de telefonia analógica (também conhecidas por POTS – Sistema de Telefonia Tradicional).

FXS - Foreign eXchange Subscriber. É a interface que fornece a linha analógica ao assinante. Em outras palavras, é o “plug na parede” que fornece o tom de marcação, corrente de energia e som.

FXO - Foreign eXchange Office. É a interface que recebe a linha analógica. É o plug no telefone ou aparelho de fax, ou o(s) plug(s) no seu sistema de telefonia analógica. Indica se o telefone está no gancho/fora do gancho (circuito fechado). Como a porta FXO está ligada a um dispositivo, tal como fax ou telefone, esse dispositivo é normalmente chamado de ‘dispositivo FXO’.

FXO e FXS estão sempre em pares, de modo semelhante a um plug macho / fêmea. Sem um PBX, um telefone fica conectado diretamente à porta FXS fornecida por uma companhia telefónica.

Figura 1.4: Esquema de telefonia PSTN x Telefone

Se você tiver um PBX, as linhas fornecidas pela companhia telefónica estarão conectadas a um PBX, assim como os telefones. Portanto, o PBX deve ter tanto as portas FXO (para conectar com as portas FXS fornecidas pelas companhias telefónicas) quanto portas FXS (para conectar os aparelhos de telefone e fax).

Figura 1.5: Esquema de telefonia PSTN x PBX x Telefone

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 7

FXS & FXO & VoIP Você vai se deparar com os termos FXS e FXO quando decidir comprar equipamentos que permitam a conexão de linhas analógicas ao sistema de telefonia VoIP, telefones analógicos ao sistema de telefonia VoIP ou PBXs tradicionais ao provedor de serviços VoIP, ou um ao outro via Internet.

O Gateway FXO

Figura 1.6: Telefonia VoIP com Gateway FXO

Para conectar linhas telefónicas analógicas a um IP PBX, você precisa de um Gateway FXO. Isso permite que você conecte a porta FXS à porta do Gateway, o que transforma uma linha telefónica analógica em uma ligação VoIP.

O Gateway FXS

Figura 1.7: Telefonia VoIP com Gateway FXS

O Gateway FXS é usado para conectar uma ou mais linhas de um PBX convencional a um sistema de telefonia VoIP ou a um provedor. É preciso um Gateway FXS para conectar as portas FXO (que normalmente estão conectadas à companhia telefónica) à Internet ou a um sistema VoIP.

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 8

Adaptador FXS ATA ou adaptador ATA

Figura 1.8: Telefonia VoIP FXS ATA

O adaptador FXS é usado para conectar o telefone ou faxe analógico a um sistema de telefonia VoIP ou a um provedor VoIP. É necessário porque é preciso conectar a porta FXO do telefone ou aparelho de Faxe ao adaptador.

Conexão Procedimentos FXS/ FXO – funcionamento técnico Se quiser saber mais detalhes técnicos sobre o funcionamento das portas FXS/ FXO, esta é a sequência exata:

Ao realizar uma chamada: 1. Tire o telefone do gancho (dispositivo FXO). A porta FXS detecta que o telefone está fora do gancho. 2. Faça a marcação do número de telefone, que é transmitido à porta FXS em Tom Duplo de Multifrequência (DTMF).

Ligação interna 1. A porta FXS recebe a ligação, e então envia um impulso tônico (som) ao dispositivo FXO anexado. 2. O telefone toca. 3. Assim que alguém atende, pode responder a chamada.

Finalizando uma ligação – normalmente a porta FXS conta com qualquer dispositivo FXO conectado para finalizar a ligação.

Nota: A linha de telefonia analógica transmite aproximadamente uma potência de 90 volts à porta FXS. É por isso que alguns sentem um ‘leve’ choque ao tocar numa linha telefónica conectada. Isso permite que a ligação continue em caso de interrupção de energia.

Fonte: www.3cx.com

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 9

A maior parte da voz é transmitida entre 250 e 3000Hz e ainda conseguimos capturar vibrações no ar na faixa de 20 a 20000Hz. Para que haja uma qualidade o mais perto possível do real e sem causar uma sobrecarga no sistema a faixa escolhida para transmissão é de 300 a 3500Hz, o que traz uma perda de qualidade quando é tocada uma música, por exemplo, utilizando esse meio ou quando as nuances da voz atingem frequências muito altas ou baixas.

Atualmente a maioria dos sistemas de telefonia trabalha com a marcação por tom enviando DTMF (Dual-Tone Multi Frequency), isso significa que são combinadas duas frequências cada vez que um dos dígitos do teclado do telefone pressionado, após um determinado tempo sem receber as frequências o PABX irá interpretar que a marcação chegou ao final e irá tentar encontrar uma rota para o destino. Veja na figura 1.9 os dígitos e as frequências que os formam.

Figura 1.9: Os dígitos e suas respectivas frequências.

A maioria dos telefones não explora a última coluna, no entanto o protocolo elétrico definido entre as pontas define esses dígitos para funções internas de controlo das chamadas.

Telefonia digital

Como na comunicação em canais analógicos é possível estabelecer somente uma chamada por vez para cada par de fios metálicos, a malha telefónica tendia ao colapso, pois não haveria mais infraestrutura suficiente para manter todos conectados. Imagine quantos pares deveriam ser ligados entre os pontos de presença de uma companhia telefónica, por exemplo, para que não gerasse lentidão no sistema e viabilizasse a comunicação entre duas cidades. Observe a figura 1.10.

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 10

Figura 1.10: Rede de Telefonia analógica com infraestrutura sobre carregada

Para resolver essa e outras limitações da telefonia analógica, surgiu um novo conceito de telefonia que é amplamente utilizado hoje: a telefonia digital. Nesse novo modelo, a comunicação é estabelecida através de pacotes contendo as informações do áudio que são lidos e reproduzidos na outra ponta, ou seja, deixa-se de transmitir a onda sonora para transportar apenas suas informações que são reconstruídas sem qualquer perda de sua natureza no destino. Veremos mais adiante em CODECs como ocorre o processo de amostragem e digitalização do áudio.

Os links sobre os quais trafegam os pacotes de telefonia digital mais utilizados atualmente são: • E1: link de 2Mbps dividido em 32 canais de 64Kbps. Desses, 30 são destinados à voz, 1

a fechamento de loop para controlo do link e 1 para sinalização. É o tipo de canal digital mais utilizado no mundo, exceto nos EUA e Japão.

• T1: link de 1.544Mbps dividido em 24 canais de 64Kbps onde todos são utilizados para voz, os 0,008Mbps restantes são utilizados para enquadramento de bits. São encontrados somente nos EUA e Japão (no Japão o padrão é chamado de J1 que é muito semelhante ao T1).

• T2, T3, T4: são múltiplos T1s. Onde o T2 é um conjunto de 4 T1s, T3 de 7 T2s e T4 de 6 T3s.

Para cada chamada se estabelece um canal de 64Kbps para transportar voz, bastando um protocolo para informar os dados essenciais da chamada como origem, destino, início e fim. Os protocolos hoje encontrados são:

• MFC/R2: esse protocolo utiliza a sinalização CAS (Channel Associated Signalling – Sinalização de Canal Associado), isso quer dizer que a voz e a sinalização da chamada são trafegadas pelo mesmo canal.

É um protocolo mais antigo que seu concorrente ISDN, usado hoje somente no Brasil, devido seu parque de telefonia ser antigo.

No R2 (como é popularmente conhecido no Brasil) os dígitos do número A (origem), de B (destino) e controlo da chamada são passados um a um, tornando esse protocolo um

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 11

pouco lento, como o tempo estimado de cerca de 5 segundos até o estabelecimento de uma chamada. A figura 1.11 elucida o funcionamento do R2.

Figura 1.11: Fluxograma do protocolo R2

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 12

Nota-se, até a comunicação se estabelecer efetivamente com o atendimento, são enviadas uma série de dígitos e confirmações. Dependendo das características físicas do meio e da capacidade de processamento dos sinais nas duas pontas, a demora para conseguir um status da chamada (tom de chamando ou ocupado) pode variar, mas sempre será uma conexão um tanto morosa.

• ISDN: nesse protocolo é utilizado a sinalização CCS (Common Channel Signaling – Sinalização de Canal Comum), ou seja, toda a sinalização é enviada por um único canal – o canal 16 – restando os demais canais para trafegar apenas a voz.

Esse protocolo é o mais moderno, sendo muito encontrado em países desenvolvidos. O padrão PRI (Primary Rate Interface) é o mais difundido entre os padrões que o ISDN descreve, pois nesse padrão são utilizados os 30 canais de voz do E1. Existe também o padrão BRI, no qual são utilizados somente dois canais de voz que trafegam sobre um par metálico. Porém raramente são encontrados fora dos Estados Unidos e Japão.

Uma das principais características positivas do ISDN é enviar todas as informações da chamada a ser estabelecida de uma única vez, o que diminui muito o tempo de estabelecimento da chamada, sendo somente o tempo dos dados chegarem à operadora e retornarem com o status informando se a chamada pôde ser completada ou não. Veja a figura 1.12 que ilustra esse comportamento e compare com a figura 1.11.

Figura 1.12: Esquema do protocolo ISDN

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 13

O VoIP Como já é de conhecimento geral, VoIP vem da sigla em inglês Voice over Internet Protocol, em português: Voz sobre o Protocolo de Internet (IP), ou seja, estabelecer uma chamada de voz entre dois pontos utilizando como meio a rede de dados.

Com a ampliação, massificação e, principalmente, com o aumento na qualidade dos serviços das redes de dados, a exploração dos conceitos de VoIP popularizou-se tornando a comunicação entre dois pontos (talvez remotos) mais eficiente e muito mais barata. Isso acontece pois deixa de ser necessário ter em todos os momentos duas estruturas separadas para telefonia e dados, uma vez que é utilizada uma infraestrutura única para trafegar os diferentes serviços. Isso se reflete no custo de chamadas de longa distancia nacional e internacional, já que a conexão permanente está previamente estabelecida só aumentando o fluxo de informação trafegando por ela, mas fundamentalmente o processo permanece o mesmo.

Novas alternativas surgiram inclusive para o uso residencial, sem a necessidade de equipamentos robustos. Hoje em dia é possível conversar com pessoas ao redor do mundo a um custo muito inferior do que era praticado até alguns anos atrás. Dois exemplos muito famosos e utilizados são os recursos de voz presentes nos comunicadores instantâneos e as operadoras VoIP.

Um dos mais famosos recursos nas comunicações de voz “domésticas” foi o Skype. Trazendo uma qualidade bastante interessante e sem ter gastos com contas nacionais e internacionais altíssimas é possível com um headset e uma conexão de Internet relativamente simples, falar com uma pessoa que esteja conectada à rede em qualquer lugar do mundo sem pagar nada a mais por isso. Ou ainda, comprar créditos a um valor mais acessível que o minuto de uma chamada delonga distancia praticado por uma operadora convencional para falar praticamente com qualquer lugar do mundo. Surgiram, inclusive, soluções para integração de PBXs IP com o Skype e que fizesse o uso desses benefícios. Infelizmente com a aquisição da Skype pela Microsoft este projeto foi descontinuado.

As operadoras VoIP também se adequaram ao mercado doméstico com planos direcionados para esse público além do corporativo. Em Portugal, as operadoras disponibilizam de chamadas nacionais gratuitas. Com um dispositivo ATA ou qualquer tipo de Gateway, e até mesmo um telefone IP que possibilite a conexão com esse tipo de provedor de serviço, é possível estabelecer chamadas pela Internet a um custo normalmente mais baixo que o

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 14

serviço tradicional de telefonia. É possível até mesmo contratar uma numeração do exterior para receber e fazer chamadas utilizando esses recursos.

Visão geral sobre protocolos VoIP As chamadas sobre a rede de dados são estabelecidas e têm sua média transportada por protocolos especialmente desenvolvidos para esse fim. Os mais famosos são o SIP e o H.323, porém iremos apresentar também o IAX que é um protocolo desenvolvido pela empresa fabricante do Asterisk – a Digium – e vem ganhando bastante espaço devido ao crescimento desse PBX IP.

SIP (Session Initiation Protocol – Protocolo de Inicialização de Sessão) Foi desenvolvido pelo IETF e encontra-se na sua segunda versão que está definida na RFC 3261 publicada no ano de 2002. Esse protocolo encaixa-se na camada de aplicação do modelo de referência OSI e é responsável por estabelecer, alterar e finalizar sessões multimídia, entre elas, as chamadas VoIP.

Como o próprio nome indica, o protocolo SIP não transporta qualquer tipo de média em seus pacotes. Ele é responsável apenas pelo gerenciamento da sessão. Para chamadas de voz é utilizado o SDP (Session Description Protocol) para informar os dados da média entre as pontas e o RTP (Realtime Transport Protocol) para efetivamente trafegar o áudio. Normalmente quando se fala em SIP em um ambiente VoIP subentende-se o conjunto [VoIP={SIP+SDP+RTP}], porque um não faz sentido sem o outro nesse contexto.

Em sua estrutura, o protocolo SIP se parece com o protocolo http, sendo também um protocolo baseado em texto e funcional como cliente/servidor, ou seja, implementa métodos de requisição e resposta na comunicação. Em SIP o cliente é chamado de UAC (User Agent Client) e o servidor de UAS (User Agent Server).

Os métodos de requisição em SIP são: • INVITE: início de uma sessão; • ACK: acklogement, confirmação de resposta; • BYE: fim de uma sessão; • CANCEL: cancelamento de uma requisição pendente; • OPTIONS: descrição das funções suportadas; • REGISTER: requisição de registro.

As respostas são divididas em classes: • 1XX: informativos, por exemplo 180 Ringing; • 2XX: confirmação, exemplo 200 Ok; • 3XX: redireccionamento, 302 Moved Temp; • 4XX: falha na execução do comando, 401 Unauthorized; • 5XX: erros no servidor. Geralmente esses erros são gerados pela própria aplicação e

não retornados pelo servidor como os demais, 504 Timeout;

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 15

• 6XX: erros globais, 600 Busy Everywhere.

Utilizando o SIP existem basicamente três tipos de plataformas que gerenciam as chamadas: • SIP Proxy; • SIP Redirect; • SIPB2BUA.

No modo Proxy toda a sinalização SIP é gerenciada pelo servidor e a média passa diretamente entre as pontas sem qualquer intervenção do SIP Proxy. Servidores desse tipo geralmente são utilizados em operadoras VoIP por conseguirem realizar a gestão de uma gama de números maior de chamadas e utilizadores. No entanto não têm qualquer recurso de um PABX que trabalhe com áudio como: música em espera, IVR ou Voice-mail; caso seja necessário utilizar este tipo de recurso é necessário que este seja integrado a um PBX IP, como o Asterisk, por exemplo.

Atualmente existe no mercado alguns aplicativos Open Source bastante utilizados como SIP Server, entre eles os mais famosos são as duas vertentes do descontinuado aplicativo OpenSER: Kamailio e OpenSIPS: dois softwares bastante robustos e flexíveis dentro do seu nicho de mercado.

Outra forma de utilizar o protocolo é com um servidor SIP Redirect. Este servidor armazena informações sobre a localização dos clientes e encaminha tais dados para a própria origem entre em contato diretamente com o destino. Geralmente este recurso é utilizado quando o destino que se deseja alcançar está em um domínio diferente do da origem, servindo como um servidor de localização.

O modo que é utilizado pelos PBXs IP (inclusive o Asterisk) e mais popular é o B2BUA (Back-to-Back User Agent). Ou seja, o servidor irá concentrar o gerenciamento da sinalização e da média criando assim, dois canais de comunicação para cada chamada estabelecida: uma da origem até o servidor e outra do servidor ao destino. Veja o exemplo na figura 1.13.

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 16

Figura 1.13: Exemplo do protocolo SIP no modo B2BUA.

Com a capacidade de gerenciamento da média, a gama de recursos do PBX IP se torna imensa. É possível fazer atendimentos automáticos, inclusive com controlo de horários, voice-mail, gravação, transcodificação entre CODECs e protocolos, entre outros. Como a figura 1.14 ilustra o funcionamento de um serviço utilizando o SIP no modo B2BUA, podemos perceber que a única diferença entre esse modo e o SIP Proxy é o fluxo da média sendo intermediado pelo servidor.

Figura 1.14: Exemplo do fluxo no protocolo SIP com o modo B2BUA.

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 17

Uma das maiores dificuldades ao trabalharmos com SIP é em relação à travessia de NAT. Como é utilizada uma porta para sinalização (5060 UDP) e uma faixa para o RTP transportar a média (por padrão do Asterisk de 10000 a 20000 UDP), muitas portas têm de ser abertas na firewall, o que pode ser uma falha na segurança, e algumas personalizações devem ser feitas nas configurações exclusivamente para tentar evitar problemas como ligações mudas e outros problemas que acontecem em cenários desse tipo.

H.323 O H.323 é um dos protocolos mais maduros, robustos e utilizados nos equipamentos que utilizam VoIP por ser um dos mais antigos e desenvolvido especificamente com a finalidade de comunicações multimédias. Ele é o protocolo padrão utilizado em Gateways de Voz sobre IP das marcas Cisco, Polycom e Siemens, por exemplo, além de estar presente na maioria das centrais telefónicas que possibilitam o uso de VoIP, porém vem sendo substituído pelo SIP devido à flexibilidade deste.

O H.323 trabalha na camada 2 do modelo OSI e por isso é totalmente independente dos assuntos relacionados à rede. Esse ponto pode ser visto como um ponto positivo ou negativo dependendo do ambiente que se tem.

Hoje em dia o uso mais comum do protocolo H.323 está relacionado com videoconferência, onde o seu desempenho ainda é muito bom.

IAX (Inter Asterisk eXchange Protocol) É um dos mais novos protocolos utilizados em VoIP. Foi desenvolvido pela Digium, empresa desenvolvedora do Asterisk, com o objetivo de estabelecer a comunicação entre dois servidores também Asterisk. Por esse motivo esse protocolo tem seu uso restrito a plataformas que têm como base o Asterisk. Em consequência, existem poucos aplicativos e equipamentos que têm esse protocolo nativo, pois a maioria das empresas ainda não considera que seja comercialmente interessante desenvolver produtos para uma utilização tão específica.

Pode-se dizer que o IAX foi desenvolvido pensando em superar algumas dificuldades que existiam no entroncamento entre dois servidores utilizando o SIP, principalmente na travessia de NAT e consumo de banda. Atualmente o IAX encontra-se na versão 2 e recebeu sua definição na RFC 5456.

A facilidade do IAX em atravessar NAT está no facto de que este trabalha somente com uma porta (4569 UDP) para transporte de toda sinalização e média das chamadas. Portanto muito menos configurações e considerações nas resoluções de problemas são necessárias.

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 18

Diferentemente do SIP o IAX não é um protocolo em modo texto, portanto seus pacotes não podem ser capturados, abertos e lidos por analisadores de protocolos, como o Wireshark por exemplo. Objetivo principal de ser desenvolvido dessa maneira é para formar pacotes menores e ser menos custoso para a rede.

Para economizar ainda mais banda em um entroncamento utilizando o protocolo IAX é possível configurá-lo no modo trunk. Nesse modo de operação, parte-se do princípio de que todas as ligações que saem para um mesmo destino podem ser empacotadas em um único pacote IP, sem que seja necessário enviar um pacote para cada chamada contendo cabeçalhos com informações iguais. Ou seja, têm-se menos pacotes, mas pacotes maiores. Além de economizar banda, os ativos de rede conseguem trabalhar com mais facilidade já que chegam menos requisições redundantes para serem gerenciadas.

Por exemplo: analisando um sentindo de cada chamada utilizando o CODEC G.711u (ulaw) e o protocolo IAX sem o modo trunk há um consumo de 82.1Kbps, sendo aproximadamente 65.9Kbps de áudio e 16Kbps de overhead. Se forem submetidas duas chamadas simultâneas, tem-se 82.1+82.1Kbps ou um consumo de aproximadamente 164Kbps para esse sentido. Operando no modo trunk o cenário seria diferente pois para uma chamada o consumo de banda ficaria praticamente o mesmo: 82.1Kbps; porém a cada chamada adicional é acrescentado somente os 65.9Kbps de média, resultando em 82.1+65.9Kbps para duas chamadas simultâneas, ou seja, cerca de 148Kbps.

Outra vantagem do IAX sobre o SIP é o jitter buffer. O jitter buffer tem objetivo de agrupar uma sequência de pacotes para encaminhá-los com uma variação menor de atraso do que foram recebidos. Com isso a comunicação vai soar mais natural do que se esse tratamento não fosse feito. Nas versões mais novas do Asterisk já existe um jitter buffer para o SIP também, porém ele ainda não é tão maduro e eficiente como o disponível no IAX.

Visão geral sobre CODECs A voz humana é uma onda senoidal contínua e o meio de dados só consegue transmitir sinais discretos, representados ao mais baixo nível por zeros e uns. O processo que faz essa conversão entre os diferentes tipos de sinais é chamado de digitalização do áudio e como será feita a retirada das amostras de áudio e como elas serão comprimidas ou não são tarefas definidas pelos CODECs.

O número de amostras que o CODEC irá retirar do áudio contínuo é chamado de taxa de amostragem. Essa taxa influencia diretamente na qualidade do áudio e no tamanho do pacote gerado. Segundo o Teorema de Nyquist:

“…a frequência de amostragem de um sinal analógico para que esse possa ser reconstruído com o mínimo de perda de informação deve ser igual ou maior a duas vezes a maior frequência do espectro desse sinal…”;

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 19

Como as linhas telefónicas não conseguem transmitir mais que 4000Hz, a taxa de amostragem para esse meio será de 8000 amostras por segundo.

Os CODECs fazem uso de técnicas de compressão, diferem quanto ao número de bits para representar as amostras e trabalham somente na região que o ouvido humano percebe as nuances da voz com maior precisão, dessa forma, dados menos percetíveis para o entendimento geral da conversa são menos amostrados e há maior economia da banda.

O CODEC padrão da telefonia analógica é o G.711, que é subdividido em duas leis: lei a (a-law) e lei µ (µ-law). Elas diferem somente na forma como as amostragens são tiradas, porém ambas usam 8bits por amostra a uma frequência de 8000 amostras por segundo o que dá um uso de banda de 64Kbps para cada chamada utilizando esse CODEC. Em Portugal, especificamente, é adotada a lei a, porém em outros países, como os EUA, é usada µ. Falaremos mais adiante sobre a importância dessa informação.

A figura 1.15 apresenta um quadro com o comparativo do consumo de banda (BW) entre os CODECs.

Figura 1.15: Tabela de largura de banda (BW) real para alguns CODECs (usando Ethernet)

Como o G.711 não faz qualquer compressão de voz, o processamento que ele necessita é muito pequeno e a qualidade do áudio é muito boa, no entanto o pacote gerado é grande. Os CODECs que têm uma taxa de amostragem alta e fazem mais compressão desses dados exigem mais processamento (como no GSM e G729). Os que fazem pouca compressão, utilizam pouco processamento e geram pacotes pequenos têm uma taxa de amostragem menor e a qualidade do áudio acaba ficando comprometida (como no iLBC e LPC10).

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 20

Resumo de Conceito de Telefonia Foram apresentados conceitos sobre telefonia desde o princípio e sua evolução durante o tempo até chegar ao que é utilizado hoje. Durante essa linha do tempo foram vistos conceitos de telefonia analógica, sendo a base para conhecer portas FXS e FXO muito utilizadas em extensões e entroncamentos com a operadora. Em seguida passamos pelos links digitais juntamente com os protocolos mais utilizados em Portugal. Chegando finalmente o foco deste material: o VoIP. Sobre o VoIP podemos ver como é o seu funcionamento e podemos conhecer o protocolo SIP, que vem crescendo e se difundindo em diversas plataformas e foi base de comparação para seu concorrente mais antigo e robusto e que vem entrando em desuso devido às suas limitações. Por fim chegamos ao estudo dos CODECs. Como trabalham, qual sua finalidade no mundo VoIP, as diferenças e principais características de cada um.

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 21

Considerações pré-instalação Como em qualquer projeto em TI, existem alguns requisitos que devem ser observados antes de efetivamente colocar a mão na massa e montar um PBX IP baseado em Asterisk. Não vamos nos ater às metodologias de gerenciamento de projetos por não ser o foco deste material de estudo, mas montar um plano e segui-lo da melhor forma possível é uma das fontes para ser bem-sucedido no projeto de telefonia.

Outro desafio que se enfrenta ao se implementar uma solução VoIP é que estamos sempre concorrendo com um sistema muito maduro e geralmente estável de telefonia convencional. Portanto instalar um sistema novo deverá apresentar bons resultados para evitar comparações e reclamações to tipo “o VoIP nunca funciona”, “quando utilizávamos o outro sistema era melhor” ou reclamações de qualidade da voz que minam o projeto, a imagem da tecnologia e do profissional que está à frente da solução.

Para tentar evitar esse tipo de problema, trazer qualidade e valor ao projeto é necessário que alguns cuidados sejam tomados já no princípio.

Dimensionamento do hardware Fazer um levantamento do hardware ideal para o ambiente que será implantado é um dos principais pilares para evitar complicações durante a utilização do serviço.

Recomenda-se que seja utilizada uma máquina com arquitetura projetada para servidores e de uma marca ou com componentes que você confie para garantir um uptime alto de hardware. Os principais pontos suscetíveis a falhas em computadores são a fonte de energia e o disco rígido; portanto, devido a criticidade do serviço de telefonia é sempre importante pensar em redundância pelo menos para esses dois componentes, utilizando fontes de energia redundantes e RAID de discos.

Caso haja necessidade é possível trabalhar também com servidores em redundância, de forma que quando um parar de funcionar o outro assuma seu lugar automaticamente. Ambientes como esse são chamados de clusters de alta disponibilidade ou HA (High Availability). Existem ferramentas para GNU/Linux que fazem esse processo.

Diversos serviços no GNU/Linux precisam gravar logs e informações temporárias em disco enquanto tarefas estão sendo executadas e caso isso não seja possível devido a um disco rígido cheio, os problemas começam a aparecer. O Asterisk é bastante sensível para armazenar seus ficheiros temporários. Para eliminar esse tipo de problema alguns fatores são cruciais:

• Gravação de chamadas: se for feita a gravação de chamadas é necessário tomar um cuidado ainda maior e estimar o número de gravações e o tamanho que cada um terá

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 22

em média, assim como qual será o período que os ficheiros de áudio ficarão armazenados em disco antes de serem movidos para outro local ou eliminados.

• Caixas de mensagens (Voice-mail): deve-se atentar também ao número de mensagens que serão armazenadas no servidor, seu tamanho e o tempo que ficarão disponíveis. Quanto ao consumo da CPU e memória, também deve ser dispensada especial atenção, porque se o hardware trabalhar em seu limite não dispondo de tempo para processar toda a sinalização e áudio que será gerado, haverá problemas desde quedas de chamadas até baixa qualidade nas mesmas. Desta forma, devem ser analisados os seguintes itens:

o Transcodificação de CODECs e protocolos: CODECs que utilizam maior compressão exigem maior processamento, portanto é necessário analisar qual o CODEC que será trabalhado e em qual situação dentro do ambiente. Assim como fazer a tradução de um protocolo para outro demanda mais recursos que trabalhar somente com um tipo.

o Aplicativos “pesados”: aplicativos como os de conferência, quando executados com muitos participantes são mais caras computacionalmente por terem que fazer a gestão de diversos canais, muitas vezes com diferentes origens. Ou seja, deve-se analisar o uso desses aplicativos quando forem essenciais e com muito volume de participações.

o Integrações e aplicativos de terceiros: é preferível que seja utilizado um servidor apenas para executar o Asterisk, porém frequentemente é desejado integra-lo a outros aplicativos no mesmo servidor. Desde que o consumo dos recursos exigidos pelo programa seja conhecido não haverá maiores problemas, mas não deve ser desconsiderado.

Sempre que for utilizado Hardware conectado aos slots PCI é exigida uma observação da velocidade do barramento e no controlo de compartilhamento dos IRQs. Perdas de desempenho pelas placas podem acarretar picotes, eco e outros problemas envolvendo a qualidade do áudio e sinalização das chamadas. Deve-se prestar atenção também quanto ao consumo de processamento para cancelamento de eco exigido pela placa que será utilizada, algumas utilizam o processador do servidor e outras têm seus próprios DSPs para realizar os processos.

Considerações sobre a estrutura de rede O VoIP é muito sensível às intempéries que acontecem na rede. Consequentemente, falhas podem ser percebidas facilmente pelos utilizadores. Em ambientes no qual a telefonia irá compartilhar os recursos da rede com o restante do tráfego já existente para comunicação de dados, os cuidados com QoS são essenciais.

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 23

Existe a necessidade de se reservar recursos exclusivamente para voz e também priorizar esses pacotes em relação a outros. Perder ou atrasar pacotes de voz acarretam em perda de informação porque é utilizado o protocolo UDP (sem confiabilidade e sem retransmissão). Esse fato é diretamente percebido pelo utilizador como voz metalizada ou picotes, diferentemente de quando esse problema ocorre com outros serviços como acesso à Internet ou emails.

Para garantir que não ocorra concorrência entre os dispositivos IP como Gateways de telefonia, telefones IP, ATAs e os demais serviços que estão trafegando no meio, é recomendável que sejam separadas VLANs para esses equipamentos.

Desde o cabeamento até os ativos de rede e políticas de acesso devem sofrer revisões quando estiver em etapa de dimensionamento da estrutura. Nessa etapa o tamanho dos pacotes gerados por cada CODEC deve ser analisado para ver o que é compatível com o que está disponível. Lembrando que cada chamada tem dois canais, ou seja, se utilizar o CODEC G.711, por exemplo, que utiliza 64Kbps teremos para cada chamada pelo menos 128Kbps somente para a passagem de áudio sem considerar os cabeçalhos.

Os switches gerenciáveis de camada 3 são a melhor opção para configurar os parâmetros de priorização e garantia de banda para os pacotes de voz. Hubs devem ser eliminados da rede por replicarem os pacotes que entram em uma porta para todas as outras; imagine o tráfego gerado se todas as portas estiverem fazendo chamadas e os pacotes sendo replicados entre elas.

Quando forem utilizados provedores VoIP ou entroncamentos entre servidores em diferentes locais, o tamanho do link de Internet que será utilizado deve ser dimensionado, novamente, observando o consumo de banda dos CODECs multiplicado pelo número de chamadas simultâneas para evitar problemas de lentidão. O link deve ser dimensionado para que seja suficientemente grande para suportar a média de chamadas simultâneas que irão trafegar durante o horário de maior movimento e mais uma folga para suportar os picos.

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 24

GNU/Linux com Asterisk O Asterisk pode ser utilizado em qualquer distribuição GNU/Linux ou BSD sem necessidade de adaptações, sinta-se a vontade para escolher o sistema operacional que você tem mais familiaridade e tenha bom desempenho em servidores. A melhor distribuição com certeza será a que você tiver melhor facilidade para manter.

Para ter maior controlo e segurança quando os serviços estiverem sendo executados o é importante que o sistema de ficheiros (File System) esteja particionado de acordo com o sistema que você irá montar.

Com um bom particionamento, caso ocorra algum erro em uma das partições fica mais fácil recuperar os dados que estão armazenados em outras delas, isolando a falha para causar o menor dano possível em seu PBX IP.

Outro benefício é o controlo do volume dos dados que serão gravados em cada uma das partições. Ou seja, você sabe exatamente quanto pode gravar em cada divisão sem atrapalhar o que é escrito em outra. No entanto é necessário que seja feita uma boa administração das partições para que não ocorram paradas por que o sistema não está conseguindo gravar dados necessários por não haver mais espaço disponível.

Para o Asterisk, é recomendável separar uma fatia do disco para as configurações, ou seja, para a pasta “/etc”. Essa fatia não precisa ser mito grande, pois apesar de existirem vários ficheiros nela, em média, não são grandes ficheiros em se tratando do tamanho dos kilobytes, uma vez que se tratam basicamente de textos. Outra fatia deve ser reservada aos módulos “/usr”. Para evitar a disseminação de erros que surgirem no núcleo do seu sistema, essa fatia deve ser ampla o suficiente para armazenar todos os módulos com certa flexibilidade para serem instalados mais tarde caso seja necessário. Lembre-se de que alguns aplicativos com instalações padrão via gerenciadores de pacotes podem gerar logs também nessa partição.

Pelo menos mais uma partição para os ficheiros gerados pelo PBX IP deve ser criada, o “/var”. Nela serão armazenadas as gravações, voice-mails e logs de todo o servidor, ou seja, muitos ficheiros, – e às vezes com tamanhos consideráveis - portanto a maior porção do disco deve ser reservada para ela. Tenha sempre à mão as pastas utilizadas pelo Asterisk por padrão orientar as suas ações nessa etapa. Outras partições podem ser geradas conforme necessário, por exemplo, uma partição reservada para o “/boot”, outra para o “/home” e outra para o “/tmp” sempre são interessantes.

Além das questões de particionamento, é importante atentar para o desempenho do seu sistema operativo. Para isso, evite instalar softwares que não são fundamentais para o funcionamento dos aplicativos que forem executadas e também aquelas muito pesadas e que

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 25

possam consumir partes importantes da CPU e memória. Um exemplo comum é a interface gráfica; muitos preferem utilizá-la para agilizar a manutenção e o monitoramento do sistema. Mas visto que tudo o que se pode fazer na interface gráfica está disponível também em linha de comando sem consumir tanto processamento e memória, é preferível usar apenas o modo de texto quando em ambiente de produção.

Mão na massa – 03.01 Descrição: iremos instalar o nosso ambiente de estudo com o Virtual Box da Oracle Sun. Objetivo: Instalar e configurar ambiente de virtualização. Tempo Máximo: 15 minutos. Instruções: vamos preparar nosso laboratório de estudos, para isto é necessário que você instale em seu computador o Oracle Virtual Box e o MagicDisc os endereços estão abaixo:

• Virtualbox: (http://www.virtualbox.org/) • MagicISO Virtual: (http://www.magiciso.com/tutorials/miso-magicdisc-overview.htm)

Pode se utilizar o MagicISO Virtual para emular a imagem ISO do CD/DVD, ou se preferir grave a imagem em uma média. Após realizar a descarga dos ficheiros, instale o Virtual Box e o MagicISO Virtual usando o método Next – Next - Finish. Agora vamos criar a nossa VM.

1. Inicie o Virtual box, irá ser mostrado no ecrã uma janela igual a imagem abaixo. Click em Novo.

Figura 3.1: Oracle Virtual Box

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 26

2. É apresentado o assistente de criação da VM, click em Próximo.

Figura 3.2: Oracle Virtual Box

3. Preencha o nome da VM, irei chamar de MyTraceLog. Selecione em seguida o Sistema Operativo “Linux Versão Red Hat (64 bit)”.

Figura 3.3: Oracle Virtual Box

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 27

4. Preencha a quantidade de memória RAM que irá ser alocada para a VM. Por exemplo, 4096 MB (4 GB).

Figura 3.4: Oracle Virtual Box

5. Nesta tela será criado o disco rígido virtual. Mantenha marcado as opções Disco Rígido de arranque, em selecione Criar novo disco rígido.

Figura 3.5: Oracle Virtual Box

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 28

6. É apresentado o assistente de criação do disco virtual, click em Próximo.

Figura 3.6: Oracle Virtual Box

7. Mantenha a opção Armazenamento dinamicamente expansível marcada.

Figura 3.7: Oracle Virtual Box

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 29

8. Defina o tamanho do disco virtual. Por exemplo, 100,00 GB. Como foi marcado a opção Armazenamento dinamicamente expansível na tela anterior, não se preocupe, não irar ocupar 100,00 GB de imediato, será alocado conforme a necessidade. Está definição é apenas para definir quanto o disco virtual pode crescer, logo é interessante definir um valor bem alto.

Figura 3.8: Oracle Virtual Box

9. Ultima tela antes da criação do disco virtual, é apresentado um sumário, click em Finalizar.

Figura 3.9: Oracle Virtual Box

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 30

10. Com o disco virtual criado, é apresentando um sumário com informações da VM, click em Finalizar e sua VM será criada.

Figura 3.10: Oracle Virtual Box

11. Podemos ver a VM MyTraceLog criada.

Figura 3.11: Oracle Virtual Box

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 31

12. Irei apresentar algumas configurações interessantes para melhorar o desempenho da VM: Click com o botão direito do rato em cima da VM MyTraceLog, em seguida, Configurações...

Figura 3.12: Oracle Virtual Box

13. Click em Sistema, em seguida no separador Processador. É possível definir o número de CPUs quer será utilizada, como por exemplo 4.

Figura 3.13: Oracle Virtual Box

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 32

14. Em Monitor, no separador Vídeo é configurado a quantidade de memória de vídeo. 32 MB é um valor suficiente.

Figura 3.14: Oracle Virtual Box

15. Em Armazenamento podemos carregar o CD/DVD na VM. Click em “Controladora IDE”, “Vazio”, depois em “Unidade CD/DVD”. No meu caso é a unidade L: da máquina hospedeira. Para usar essa unidade na VM insira a média na unidade de CD/DVD ou carregue a imagem pelo MagicISO Virtual. Você pode ainda carregar diretamente o ficheiro com extensão ISO. No menu selecione “Escolher um ficheiro de CD/DVD Virtual...” E selecionar o ficheiro ISO do Seu Sistema Operativo.

Figura 3.15: Oracle Virtual Box

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 33

16. Por padrão a placa de rede vem configurado como NAT. Porém, é mais interessante configurar a placa como “Placa em modo Bridge”. Caso você esteja em uma rede local, qualquer máquina pode se comunicar com a VM, não só a máquina hospedeira. No modo NAT isso não é possível.

Figura 3.16: Oracle Virtual Box

17. Como configuramos a rede em modo Bridge não é mais necessário a conexão Exclusiva de Hospedeiro, então podemos remover a mesma. Click em “Ficheiro> Preferências...”

Figura 3.17: Oracle Virtual Box

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 34

18. Click em Rede, e remova executando um com um click no ícone com sinal de menos.

Figura 3.18: Oracle Virtual Box

19. Será mostrada uma confirmação, click em OK.

Figura 3.19: Oracle Virtual Box

Neste ponto nossa VM está pronta para instalar o Sistema Operativo CentOS 5.7.

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 35

Por que o CentOS? Quero falar dos motivos por que prefiro utilizar o CentOS GNU/Linux (Community ENTerprise Operating System) como a distribuição preferencial de trabalho, mas antes disso quero deixar claro que não sou radical e também utilizo outras distribuições. Por muito tempo utilizei Conectiva, hoje em dia utilizo o OpenSuse no meu desktop de trabalho. Já utilizei também outras distribuições, sempre de acordo com as necessidades de cada situação.

Voltando ao CentOS GNU/Linux, uma das características que mais me chamou a atenção foi o longo tempo que será mantido - na versão 5 por exemplo será até 2012 - isso significa que depois de instalado e configurado um servidor, pode-se passar um longo período de tempo apenas preocupado com atualizações menores, sem ter que realizar atualizações de versões após curtos períodos de tempo como, por exemplo ocorre no Fedora GNU/Linux, que muitas vezes exige a configuração de vários serviços novamente.

Para quem nunca ouviu falar do CentOS GNU/Linux ele é feito a partir das fontes do Red Hat AS, e tem como objetivo ser “100% binário compatível” com a distribuição original, isso é especialmente útil quando se necessita instalar alguns softwares que são homologados apenas para certas distribuições.

Como toda distribuição que utiliza o gestor de pacotes RPM, existem numerosos repositórios para complementar os pacotes que vem na distribuição original, um dos mais completos é o de Dag Wieers, que também participa ativamente na lista de discussão do CentOS BR e está sempre aberto a adicionar algum pacote que seja solicitado.

Em resumo: o CentOS GNU/Linux é uma distribuição extremamente útil em ambientes corporativos, especialmente em servidores que necessitem de alta estabilidade e pouco downtime de manutenção, além é claro, do conhecido suporte proporcionado pela comunidade Open Source.

Sobre o CentOS BR GNU/Linux O CentOS BR nasceu com o propósito de propagar e divulgar o Linux CentOS no Brasil, Portugal e outros países que falam o português, sempre focando em conteúdo atualizado. Eles contam com uma equipa responsável pela edição e inserção de notícias e informações em geral. O site é atualizado sempre que possível com notícias do mundo CentOS e Open Source.

Sobre o CentOS GNU/Linux "CentOS é uma distribuição Linux de classe Enterprise derivada de códigos fonte gratuitamente distribuídos pela Red Hat Enterprise Linux e mantida pelo CentOS Project”.

A numeração das versões é baseada na numeração do Red Hat Enterprise GNU/Linux. Por exemplo, o CentOS GNU/Linux 5 é baseado no Red Hat Enterprise GNU/Linux 5. A diferença básica entre um e outro é o fornecimento de suporte pago na aquisição de um Red Hat Enterprise GNU/Linux. Funcionalmente, podem-se considerar os sistemas clones.

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 36

CentOS GNU/Linux proporciona um grande acesso aos softwares padrão da indústria, incluindo total compatibilidade com os pacotes de softwares preparados especificamente para os sistemas da Red Hat Enterprise GNU/Linux. Isso lhe dá o mesmo nível de segurança e suporte através de updates que outras soluções Linux Enterprise, porém sem custo.

Suporta tanto ambiente de servidores para aplicações de missão crítica quanto ambiente de estações de trabalho e ainda possui uma versão Live CD.

CentOS GNU/Linux possui numerosas vantagens, incluindo: uma comunidade ativa e crescente, um rápido desenvolvimento e teste de pacotes, uma extensa rede depósitos contendo seus ficheiros em formato ISO, desenvolvedores acessíveis, múltiplos canais de suporte, incluindo suporte em português e suporte comercial através de parceiros.

Fonte: Trecho retirado de: wiki do CentOS GNU/Linux

Site Oficial CentOS GNU/Linux (Inglês) - “http://www.centos.org/” CentOS GNU/Linux (Português) - “http://centosbr.org/”

Neste documento, você encontra os passos para instalar a distribuição Linux CentOS 5.7. O objetivo é contribuir para que os utilizadores iniciantes tenham uma base para instalar o sistema rapidamente. Pode ser uma referência para instalação de outras distribuições como a Red Hat GNU/Linux ou a Fedora GNU/Linux, que são muito parecidas com o CentOS GNU/Linux.

Recomendações Recomendo leitura com prática dos seguintes livros; Programação Avançada em Linux – Gleicon da Silveira Moraes Shell Script Profissional – Aurélio Marinho Jargas Comandos do Linux “Guia de Consulta Rápida” - Roberto G. A. Veiga Todos os livros acima são da editora Novatec “www.novatec.com.br”.

Instalando o CentOS GNU/Linux Você pode adquirir uma ISO da distribuição neste link “http://isoredirect.centos.org/centos/5/isos/” quando da elaboração deste material de estudo, no site encontrava-se a versão CentOS 5.7 i386 e a CentOS 5.7 x86_64.

Antes de você instalar o CentOS GNU/Linux, deve verificar a compatibilidade do seu sistema. Para isso você pode pesquisar no google, ou ainda, solicitar ajuda no fórum do VOL (Viva o Linux – Porque nós amamos a liberdade!).

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 37

Mão na massa – 03.02 Descrição: iremos instalar o sistema operativo CentOS 5.7 e realizar alguns procedimentos de atualização. Objetivo: Instalar o Sistema Operativo CentOS 5.7. Tempo Máximo: 40 minutos. Instruções: instalar o CentOS 5.7 em uma VM do Virtual Box.

CentOS 5.67 (http://www.centos.org/modules/tinycontent/index.php?id=30).

O CentOS 5.7 possui vários tipos de imagens disponíveis para baixar de seus repositórios ISOs, procure por CentOS-5.7-x86_64-bin-DVD.torrent, ou CentOS-5.7-i386-bin-DVD.torrent que são imagens de DVD. Baixe as imagens utilizando um cliente Torrent. Quando terminar de baixar as imagens x86_64, teremos 2 ficheiros do tipo ISO:

CentOS-5.7-x86_64-bin-DVD-1of2.iso (3,95 GB) CentOS-5.7-x86_64-bin-DVD-2of2.iso (639 MB)

É na imagem i386, após baixar teremos 1 ficheiro do tipo ISSO:

CentOS-5.7-i386-bin-DVD.iso (3.96 GB)

O MagicISO Virtual é utilizado para emular as imagens, ou podes ainda gravar as imagens em médias. Tudo pronto? Vamos começar:

20. Inicie o Virtual Box, click com o botão direito do rato em cima da VM MyTraceLog, em seguida, Configurações...

Figura 3.20: CentOS 5.7

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 38

21. Em Armazenamento podemos carregar o CD/DVD na VM. Click em Vazio, depois em selecione uma unidade de CD/DVD. No meu caso é a unidade L: da máquina hospedeira.

Figura 3.21: CentOS 5.7

Aqui você tem a opção de carregar a imagem do Sistema Operativo pelo item “Selecione um ficheiro de CD/DVD Virtual...” procure a imagem do tipo ISO e pronto.

Carregue a imagem CentOS-5.7-x86_64-bin-DVD-1of2.iso pelo MagicISO Virtual ou insira a média no drive. Ou ainda com o MagicISO

No ícone do MagicISO Virtual clique com o lado direito do rato:

Figura 3.22: CentOS 5.7

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 39

22. Vai aparecer o menu do MagicISO Virtual, vá para o item do menu Virtual CD/DVD-rom, colocando o rato sobre este item vai aparecer a unidade virtual neste caso “G: No Media”,

Figura 3.23: CentOS 5.7

23. Colocando o rato sobre o item “G: No Media”, ira aparecer o item “Mount”, observe que logo abaixo existe o “Unmount”, igualmente no Unix é aqui que você vai montar e desmontar a imagem ISO no seu CD/DVD Virtual.

Figura 3.24: CentOS 5.7

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 40

24. Com um click no item “Mount”, ira aparecer a caixa padrão do Microsoft Windows de busca de ficheiros, selecione o ficheiro do tipo imagem ISO que você quer e click em Abrir.

Figura 3.25: CentOS 5.7

25. E pronto nosso CD ou DVD está carregado na nossa unidade Virtual pronto para ser utilizado.

Figura 3.26: CentOS 5.7

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 41

26. Selecione a VM MyTraceLog e click no ícone Iniciar.

Figura 3.27: CentOS 5.7

27. Vamos instalar o nosso servidor CentOS somente no modo texto ou CLI (Command Line Interface). Para isso acontecer na janela de boot do instalador, digite “linux text”.

Figura 3.28: Boot do Instalador

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 42

28. Logo depois de iniciar a instalação, o gestor perguntará se você deseja verificar o disco. Esse processo é demorado. Caso você tenha verificado com checksum a imagem e tenha certeza da qualidade da sua média, você pode pular essa etapa.

Figura 3.29: Média Teste

29. A próxima etapa em diante já é gerida pelo aplicativo “Anaconda”, que já lhe dá as boas vindas ao CentOS GNU/Linux. E em seguida solicita o idioma que o ambiente utilizará, tanto para o ambiente de trabalho como para o layout do teclado.

Figura 3.30: Boas vindas

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 43

30. Em Language Selection, selecione Portuguese (Portugal), lembrando que a sua navegação neste modo é realizado com as teclas “TAB”, “Espaço” “ENTER”.

Figura 3.31: Seleção do idioma

31. Na Seleção do Teclado, selecione pt-latin1. E muito importante conhecer o verdadeiro layout de seu teclado, principalmente os dos portáteis. Neste momento o aplicativo “Anaconda” ira procurar por instalações anteriores do CentOS GNU/Linux.

Figura 3.32: Seleção do teclado

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 44

32. Você recebera um aviso na janela de que foi encontrado um hard disc sem formatação e o mesmo vai ser formatado para o padrão do sistema de ficheiros do CentOS. Aceite no “SIM”.

Figura 3.33: Aviso do Hard Disk

33. Em Tipo de Particionamento selecione Apagar todas partições nos discos selecionados e criar layout padrão. Logo abaixo tem o item Que disco(s) você deseja utilizar para esta instalação? Deixe a unidade que ele encontrou selecionado, vá com o “TAB” ate o botão “OK” e prossiga.

Figura 3.34: Tipo de particionamento

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 45

34. Logo após, você receberá um Aviso no ecrã a informar que TODOS OS DADOS NA UNIDADE SERÁ PERDIDA, novamente, com as setas de direções, vão para o botão “SIM” e pressione “ENTER”.

Figura 3.35: Aviso

35. Agora vem uma informação na janela com o título Rever o Layout do Particionamento. O aplicativo “Anaconda” esta a perguntar se você quer rever e modificar o layout do particionamento. Vá com as teclas de direções para o botão “NÃO”. E novamente pressione “ENTER”.

Figura 3.36: Rever a Disposição das Partições

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 46

36. O ecrã de Configurar interface de rede ira surgir perguntando se quer configurar a rede agora vá ao botão “SIM”.

Figura 3.37: Aviso para configuração da eth0

37. Com isto vem o ecrã Configuração de rede para eth0 neste momento iremos configurar a placa de rede manual para a utilização durante a instalação e acesso remoto logo após a instalação do CentOS GNU/Linux.

Figura 3.38: Configuração da eth0

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 47

Vamos deixar nesta janela selecionados os itens; [*] Ativar na Inicialização; [*] Habilitar suporte para Ipv4; Iremos deixar desabilitado o suporte para Ipv6.

38. A próximo janela é a Configuração de Ipv4 para eth0 neste ecrã já vem default o item [*] Configuração de IP dinâmico (DHCP), mude para Configuração de IP manual e utilize as configurações da sua rede.

Exemplo; IP: 192.168.1.250 MASK: 255.255.255.0 GW: 192.168.1.254 DNS2: 208.67.222.222 DNS3: 208.67.220.220 SEARCH: google.com

Figura 3.39: IPv4 configuração da eth0

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 48

Figura 3.40: Outras configurações da eth0

39. Na janela de Configuração do nome de host selecione [*] manualmente para o nome do host e coloque o nome que você deseja, para dar seguimento neste material irei colocar “serverfull” tudo minúsculo, e mais uma vez de ok no botão “OK”.

Figura 3.41: Configuração do nome da máquina

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 49

40. Nesta janela Seleção de Fuso Horário deixe tudo como esta [*] O relógio do sistema utiliza o UTC e Europa/Lisbon, de ok no botão “OK”.

Figura 3.42: Seleção do Fuso - Horária

41. Na janela da palavra passe do Root (Administrador) digite duas vezes a sua palavra passe, eu recomendo que troque algumas letras por números. Eu vou utilizar a palavra passe “12345678” para fins didáticos.

Figura 3.43: Senha do Root “Super Utilizador”

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 50

42. Vamos agora selecionar no ecrã Seleção de pacotes o conjunto de programas aplicáveis para o nosso servidor iremos selecionar somente os itens como os dos ecrãs, segundo as imagens a seguir;

Figura 3.44: Seleção de pacotes

43. No ecrã Package Group Selection vamos deixar selecionados somente os seguintes pacotes (package);

Figura 3.45: Seleção de grupos de pacotes (01)

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 51

Figura 3.46: Seleção de grupos de pacotes (02)

Figura 3.47: Seleção de grupos de pacotes (03)

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 52

Figura 3.48: Seleção de grupos de pacotes (04)

Figura 3.49: Seleção de grupos de pacotes (05)

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 53

Figura 3.50: Seleção de grupos de pacotes (06)

Figura 3.51: Seleção de grupos de pacotes (07)

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 54

Figura 3.52: Seleção de grupos de pacotes (08)

44. Realizado este procedimento siga com a instalação acionando o botão “OK”. O sistema (Anaconda) ira ver as dependências de pacotes e logo depois aparecerá o ecrã Instalação prestes a começar faça o acionamento do botão “OK”.

Figura 3.53: Verificação de dependências

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 55

Figura 3.54: Instalação prestes a começar

45. Logo após isto ira dar sequência de todo o processo de instalação do nosso CentOS GNU/Linux.

Figura 3.55: Instalação de pacotes

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 56

46. Pronto neste ecrã Concluído remova o seu médio de instalação e acione o botão “REINICIALIZAR” como esta com default basta dar “ENTER”.

Figura 3.56: Completa

47. Na primeira vez que o seu sistema inicializar o sistema ira aparecer ao ecrã Agente de Configuração pedindo para configurar o servidor, entre em “Serviços do Sistema” desabilite o “IP6tables”.

Figura 3.57: Agente de configuração

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 57

48. Desabilite “ip6tables” e “iptables”

Figura 3.58: Serviços

49. Após habilite “vsftpd” depois vá em “OK” e depois em “SAIR”.

Figura 3.59: Serviços

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 58

Figura 3.60: Agente de configuração

50. Para utilizar o seu servidor faça o login com “root” e a password que você colocou no meu caso “12345678”. Obs.: tudo minúsculo.

Figura 3.61: Login no Sistema Operativo CentOS 5.7

Referências http://www.fortenetwork.com.br - soluções de Segurança das Informações, Auditoria em Sistemas de TI e Infraestrutura de Tecnologia da Informação e Comunicação. http://www.linuxinfo.com.br - http://www.linuxajuda.com.br -

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 59

Mão na massa – 03.03 Descrição: iremos realizar a instalação e integração de aplicativos que auxilia na Administração de Asterisk. Objetivo: Instalar corretamente o PuTTY, WinSCP e Notepad++ bem como a integração entre eles. Tempo Máximo: 20 minutos. Instruções: vamos preparar nosso ambiente de trabalho. Instale o putty 0.61 http://the.earth.li/~sgtatham/putty/latest/x86/putty-0.61-installer.exe

51. Ao executar o ficheiro “putty-0.61-installer.exe” terá está janela de boas vindas, padrão de instalação Microsoft®, siga com o botão “Next”.

Figura 3.62: Boas vindas

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 60

52. A próxima janela e o destino da instalação vamos aceitar o padrão, clique no botão “Next”.

Figura 3.63:

53. A próxima janela solicita aceitação do nome da pasta no cardápio, aceitamos o padrão e clicamos no botão “Next”.

Figura 3.64:

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 61

54. A próxima janela solicita configurações adicionais, iremos aceitar o padrão, clique no botão “Next”.

Figura 3.65:

55. A próxima janela finalmente fornece informações sobre a instalação, aceitaremos com um click no botão “Install”.

Figura 3.66:

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 62

56. Está janela é apenas informativa sobre o progresso da instalação.

Figura 3.67:

57. A finalização da instalação, click no botão “Finish”.

Figura 3.68:

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 63

Instale o Notepad++ 5.9.3 http://download.tuxfamily.org/notepadplus/5.9.3/npp.5.9.3.Installer.exe

58. Ao executar o instalador está e a primeira janela de interação, escolha o idioma que quer utilizar no ambiente de trabalho do NotePad++ e click no botão “OK”.

Figura 3.69:

59. Agora a janela de boas vindas, click no botão “Próximo”.

Figura 3.70:

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 64

60. Agora a janela da licença, para dar sequência na instalação click no botão “Eu Concordo”.

Figura 3.71:

61. Nesta janela está sendo apresentado o local de instalação, iremos deixar o padrão, click no botão “Próximo”.

Figura 3.72:

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 65

62. Está janela serve para escolhermos os componentes da instalação, vamos aceitar o padrão, click em “Próximo”.

Figura 3.73:

63. Vamos deixar está janela com o padrão, clique no botão “Instalar”.

Figura 3.74:

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 66

64. Tela de progresso da instalação, sem ação para o utilizador.

Figura 3.75:

65. Aqui está a tela de conclusão da instalação do Notepad++.

Figura 3.76:

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 67

Instale o WinSCP 4.3.5 http://winscp.net/download/winscp435setup.exe

Idioma português http://winscp.net/translations/dll/pt.zip

66. Vamos executar o instalador do “WinSCP”, vamos deixar a linguagem padrão do instalador “English”, depois iremos realizar o procedimento de translation para “Português”.

Figura 3.77:

67. Está tela de boas vindas do instalador click no botão “Next”.·.

Figura 3.78:

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 68

68. Janela da licença de uso, click em “Next”.

Figura 3.79:

69. Aceitaremos o recomendado pelo instalador “Full upgrade”, logo click em “Next”.·.

Figura 3.80:

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 69

70. Informações sobre os procedimentos realizado pelo instalador, click em “Install”.

Figura 3.81:

71. Janela de informação do progresso da instalação, nenhuma ação para o utilizador.

Figura 3.82:

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 70

72. Janela de conclusão do instalador, click no botão “Finish”.

Figura 3.83:

73. Está é a janela de conexão com os servidores que serão administrados por você. Para criar uma conexão click no botão “New”.

Figura 3.84:

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 71

74. Está é a janela de informações necessárias para criação de uma conexão, em “Host name:” informe o caminho do servidor (Ex: 192.168.1.250). Em “Port number:” informe a porta que está sendo monitorada pelo “OpenSSH” no seu servidor, o padrão é “22” mas por motivo de segurança é altamente recomendado que altere está porta. Em “User name:” informe o utilizador ativo para conexões com o “OpenSSH”, por padrão é o “root” e com certeza é altamente recomendado que altere este utilizador de acesso a seu servidor, assim como também impedir que o utilizador “root” possa a cessar o mesmo via “OpenSSH”. Em “Password:” vai a palavra passe do utilizador ativo para a conexão do “OpenSSH”, por questão de segurança e recomendável utilizar palavras passes com nomenclatura “Hacker = H4ck3r” (A=4, E=3, I=1, O=0 e U e o único que sempre será maiúsculo).

Figura 3.85:

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 72

75. Após fornecer todas as informações, click no botão “Save...”, com isto a tela de “Save session as:” aparecera, coloque o nome que quiser na sessão de conexão, e se tiver certeza que será somente você que vai utilizar esta conexão então ative a caixa de seleção (tag) “Save passwort ...”

Figura 3.86:

76. Então será mostrada a janela de conexões novamente agora com a conexão que acabamos de criar.

Figura 3.87:

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 73

Integração das ferramentas. Para realizar os procedimentos tem que estar com sua máquina virtual em execução. Vamos primeiro realizar o procedimento de tradução para português do aplicativo WinSCP. Observe que em “Languages” temos apenas um idioma, “English – Inglês (USA)”.

Figura 3.88: Vamos copiar o ficheiro “WinSCP.pt”. Este ficheiro foi baixado e descompactado por você no inicio deste Mão na Massa 03.

Figura 3.89:

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 74

Uma vez com o ficheiro copiado, iremos colar ele no seguinte caminho: “C:\Arquivos de programas\WinSCP”

Figura 3.90:

O ficheiro após ser colado no caminho anterior deve ficar assim como está sendo mostrado na figura abaixo.

Figura 3.91:

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 75

Execute agora o WinSCP e clique no botão “Languages” perceba que agora temos também o idioma “Portuguese – Português (Brasil)”. Iremos selecionar o idioma português.

Figura 3.92:

Ai temos nossa janela de Conexões já em nosso idioma. Uma vez que sua máquina virtual está em execução, vamos conectar a ela, para isto click no botão “Login”.

Figura 3.93:

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 76

Assim que o aplicativo consegue conexão com nosso servidor vem a solicitação para aceitar a chave de criptografia ssh-rsa, você deve aceitar esta chave com um click no botão “Sim”.

Figura 3.94:

Está é a janela do ambiente de trabalho, ao lado esquerdo temos sua unidade local, no lado direito está sua unidade remota, ou seja, a unidade local de seu servidor. Está ferramenta e de extrema utilidade para enviar diversos tipos de ficheiros para nosso servidor. Observe na barra de ícones a seleção é para chamar o “putty”.

Figura 3.95:

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 77

Outra maneira de executar o PuTTY a partir do WinSCP e ir em “Comandos” e depois em “Abrir no PuTTY”.

Figura 3.96:

Como perceberam o PuTTY tem sua integração automática, sendo apenas necessário instalar o mesmo. Agora iremos realizar a integração do Notepad++ com o WinSCP. Para isto clique em “Opções” e depois em “Preferências”.

Figura 3.97:

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 78

Selecione “Editor” então remova o “Notepad”, selecionando o mesmo e depois procedendo com um click no botão “Excluir”.

Figura 3.98:

Ainda em “Editor” click no botão “Adicionar...”.

Figura 3.99:

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 79

Aqui iremos selecionar o item “Editor Externo” e proceder com um click no botão “Procurar”.

Figura 3.100:

Vá até a pasta onde está instalado o Notepad++ “C:\Arquivos de programas\Notepad++\notepad++.exe”. É selecione o ficheiro de execução do aplicativo “notepad++.exe”. Então click no botão “Abrir”.

Figura 3.101:

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 80

Iremos voltar a está janela com a ação anterior estando igual a está click no botão “OK”.

Figura 3.102:

Selecionando mais uma vez “Editor”, iremos selecionar Notepad++ e vamos colocar com prioridade de uso pelo WinSCP. Faremos isto com um click no botão “Acima” com o Notepad++ selecionado, uma vez que sua janela fique igual a esta click no botão “OK”.

Figura 3.103:

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 81

Observe que todos os ficheiros do tipo texto agora já se encontram o ícone do Notepad++. Vamos abrir com um duplo clique no ficheiro “host.conf”, iremos apenas ver se esta abrindo com o editor de nossa preferência.

Figura 3.104:

Aqui percebemos que abriu o ficheiro de texto de nome host.conf com o editor de nossa preferência, que neste caso é o Notepad++.

Figura 3.105:

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 82

Agora vamos testar se o PuTTY está funcionando, para isto click no ícone ou abra pelo menu comandos. A conexão é imediata e já vem a solicitação de aceitação da chave de criptografia ssh-rsa. Devemos aceitar com um click no botão “Sim”.

Figura 3.106:

Ai está nosso servidor solicitando a palavra passe do servidor.

Figura 3.107:

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 83

Ai estamos já no ambiente (CLI) de trabalho de nosso servidor.

Figura 3.108:

O desenvolver recomenda para que seja encerrado o aplicativo no botão “F10 Sair”. Isto porque nos procedimentos da ação do botão esta o encerramentos das chaves publicas.

Figura 3.109:

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 84

Mão na massa – 03.04 Descrição: iremos aprender a conhecer alguns comandos básicos de Linux e familiarizar-se com a forma de trabalhar com este sistema operativo. Objetivo: familiarizar-nos com a linha de comandos do GNU/Linux, também conhecida como CLI (Command Line Interfaces). Tempo Máximo: 15 minutos. Instruções: lista o conteúdo da pasta que se encontra. root@pbxip~# ls

Lista o conteúdo da pasta com as informações adicionais root@pbxip~# ls -l

Lista o conteúdo da pasta /etc com as informações adicionais root@pbxip~# ls –l /etc

Utilize o comando pwd para saber em que pasta está root@pbxip~# pwd

Criar uma pasta de trabalho “/tmp/trabalho” root@pbxip~# mkdir –p /tmp/trabalho

Entrar na pasta de trabalho “/tmp/trabalho” root@pbxip~# cd /tmp/trabalho

Da pasta /tmp/trabalho suba para a pasta /tmp de forma absoluta e relativa root@pbxip~# cd ..

Leia ajuda dos vários comandos root@pbxip~# man ls

Pasta padrão para trabalhar no CentOS root@pbxip~# cd /usr/local/src

Criando pasta para trabalho e à cessando a pasta root@pbxip~# mkdir repositorio root@pbxip~# cd repositorio

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 85

Copiar um ficheiro de uma locação para outra usando um tunnel por wget Habilitando o repositório RPMFORGE (i386el5) # wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.i386.rpm

(x86_64 el5) # wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm

Habilitando o repositório Fedora EPEL (i386 el5) # wget http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm

(x86_64 el5) # wget http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm

Habilitando o repositório REMI

# wget http://rpms.famillecollet.com/enterprise/remi-release-5.rpm

Instalando um pacote rpm, faça na ordem abaixo # rpm -Uvh rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm # rpm -qa | grep “rpmforge”

# rpm -ivh epel-release-5-4.noarch.rpm # rpm -qa | grep “epel-release”

# rpm -Uvh remi-release-5*.rpm # rpm -qa | grep “remi”

Atualizando seu banco de informações do Sistema Operativo # updatedb

Checando atualização necessária para o Sistema Operativo # yum check-update

Realizando atualizações necessárias do seu Sistema Operativo # yum update

Reiniciando seu Sistema Operativo # reboot

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 86

História do Asterisk

O Asterisk é um aplicativo para criar centrais telefônicas PBX IP que pode ser executada como um serviço em um servidor GNU/Linux, Mac OS X, ou BSD. Apesar de ser desenvolvido para trabalhar com plataformas Unix, existem versões que não recebem tanta atenção pelos desenvolvedores mas que trabalham sobre o Windows também. Aqui iremos trabalhar com os comandos do GNU/Linux e mais especificamente com os comandos da distribuição CentOS. Lembro que os conceitos são os mesmos independentes da plataforma utilizada necessitando apenas de pequenos alterações dependendo do ambiente que será utilizado.

O software foi desenvolvido inicialmente por Mark Spencer com o objetivo de montar um PBX IP que satisfizesse as necessidades de uma empresa de suporte que utilizava computadores com GNU/Linux na época, já que as soluções proprietárias custavam um valor muito além do que ele queria e podia pagar. Utilizando seus vastos conhecimentos em GNU/Linux e Linguagem C, Spencer começou o desenvolvimento da plataforma e alguns meses depois abriu o código-fonte e lançou o Software para que a comunidade Open Source pudesse ajudá-lo no desenvolver. O sucesso foi maior do que Spencer esperava e ele acabou abandonando a antiga empresa para fundar a Digium, focando exclusivamente no desenvolvimento do Asterisk, Hardwares especializados e suporte a nível corporativo. Desde então o Asterisk vem crescendo rapidamente em utilização e robustez, sendo atualmente um dos PBX IPs mais utilizado no mundo.

O Asterisk ganhou maior popularidade com a versão 1.2, que obteve mais estabilidade até aquele momento. Após algum tempo de desenvolvimento foi lançada a versão 1.4 que nos primeiros releases sofreu um pouco com questões de bugs que traziam instabilidade ao sistema. Por conta disso eram lançados releases em intervalos bem curtos causando certa desconfiança para os administradores que ficavam na dúvida se deviam ou não atualizar seus sistemas. Mas a partir da versão 1.4.11, a maioria dos problemas foram resolvidos e as migrações passaram a ser mais tranquilas. Com experiência nesse lançamento a atualização para a versão 1.6 foi melhor planejada; foram liberadas versões alfa e beta para a comunidade testar antes de ser confirmada a primeira versão estável do Asterisk 1.6. No entanto, para fazer a migração de um PBX IP sendo executado sobre a versão 1.4 para a 1.6 deve-se atentar para o facto de que houveram mudanças em parâmetros de alguns aplicativos que precisam ser atualizados.

O Asterisk tem todos os recursos de qualquer PABX do mercado, com a vantagem de ser um produto de código aberto, e pode ser utilizado em diversos ambientes, alterado e adequado às necessidades que o projeto a ser implantado demandar sem qualquer custo ou necessidade de licença.

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 87

Ele é capaz de trazer grande interoperabilidade entre várias plataformas, pois faz a conversão entre vários CODECs e protocolos padrão de mercado. Elimina a necessidade de grande parte dos módulos adicionais que devem ser incorporados às centrais telefônicas convencionais para que seja possível utilizar recursos um pouco mais avançados como: música em espera, correio de voz e IVR, pois isto já está previsto em seu código básico.

O mercado adotou a solução tão fortemente que já existem várias soluções (proprietárias e abertas) baseadas no aplicativo para as mais diversas atividades de negócios, agregando maior valor e confiabilidade quando se deseja implantar um projeto VoIP tomando como base o Asterisk. Gestores de filas de atendimento, tarifários e marcações automáticas, por exemplo, já são encontrados com total integração com a plataforma Asterisk.

Como praticamente todos os projetos Open Source, o Asterisk possui uma comunidade crescente, ativa e bastante disposta a ajudar aos demais integrantes com qualquer nível de conhecimento e enfrentando os mais diversos problemas. A troca de experiencias e conhecimentos nos fóruns, listas, sites, canais IRC e etc., é bastante dinâmica e muito proveitosa na maior parte do tempo. Qualquer um pode ajudar também a aperfeiçoar o software participando dos meios colaborativos fornecidos e moderados pela Digium, basta respeitar as políticas que são impostas por eles.

Em Portugal, o principal ponto de encontro de quem utiliza, se interessa ou apenas tem curiosidade sobre o Asterisk é a lista asteriskpt onde se encontra na URL: www.asterisk.pt. Muitos membros ativos têm grande experiência com Asterisk e ajudam bastante quando surgem problemas e você não sabe do que se trata. Da mesma forma, existem duas listas internacionais que também podem ser utilizadas como referência: a Asterisk-users e Asterisk-biz sendo a primeira para qualquer tipo de dúvida técnica e a segunda apenas para assuntos comerciais.

Antes de enviar uma pergunta na comunidade é importante consultar na Internet ou no histórico da lista se o seu problema já foi mencionado e se já houve alguma solução. Uma referência para comandos e configurações envolvendo o Asterisk que se encontra na Internet é o Wiki http://www.voip-info.org. Além de conter muitas informações sobre comandos e aplicações descritas com exemplos e experiências de quem já utilizou, diversas outras informações sobre equipamentos e tecnologias sobre VoIP são encontradas ali. Por se tratar de um Wiki, qualquer um pode se cadastrar e ajudar a incrementar o portal, tornando-o ainda mais completo.

Para comprovar conhecimentos no Asterisk, desde 2005 existe uma certificação aplicada pela Digium ao final dos treinamentos Asterisk Bootcamp ou Asterisk Advanced e geralmente também na conferência anual Astricon, a dCAP (Digium Certified Asterisk Professional). Essa certificação não necessita de renovação e, por enquanto, só possui um nível. Abrange os conceitos da tecnologia VoIP com foco em Asterisk, protocolos SIP, IAX, MGCP e H.323 além de aplicações e comandos do Asterisk. A prova é dividida entre partes práticas e teórica, onde os conhecimentos do profissional são testados nos mais diversos tópicos que envolvem a

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 88

plataforma. Para ser aprovado o candidato deve acertar 75% das respostas em cada uma das provas que utilizam as características da última versão estável dos pacotes.

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 89

O Asterisk e sua Flexibilidade O Asterisk foi desenvolvido para prover máxima flexibilidade, APIs específicas são definidas em volta de um avançado núcleo que é o PABX. Dessa forma, o núcleo faz a interação entre todas as APIs dos sistema para que seja possível executar de forma simultânea e integrada todas as funções que se espera do software.

Figura 4.1: Core do Asterisk

As APIs São definidas quatro APIs (Application Programming Interface ou Interface de programação da aplicação) básicas para dividir o funcionamento e entendimento do sistema. As APIs são conjuntos de módulos que podem ser carregados individualmente para que haja um maior controle de desenvolvimento e do que será utilizado na plataforma. Dessa forma, módulos com defeitos tendem a não refletir suas falhas para os demais a não ser os diretamente relacionados a ele. A modularidade permite que combinando as partes de diferentes módulos seja possível obter maior personalização do sistema.

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 90

Figura 4.2: As APIs

As APIs são: • API de Canal: essa API é responsável por identificar o tipo de canal de

comunicação (SIP, IAX, ISDN etc.) da chamada que chega ao sistema. Então, os módulos são carregados dinamicamente para abstrair as informações de mais baixo nível desse canal. No Asterisk, cada chamada é formada por dois canais independentes em questão de módulos, um da origem até o servidor e outra do servidor até o destino. Dessa forma, essa API permite obter independência nos protocolos, e pode trabalhar com mais de um canal em cada chamada.

• API de Aplicativos: a API de aplicação é responsável por carregar simultaneamente todos os módulos necessários para executar os aplicativos disponíveis no Asterisk. Alguns exemplos são: correio de voz através do aplicativo Voice-mail, DAC (Distribuição Automática de Chamadas) disponibilizada pelo aplicativo Queue e conferência pelo aplicativo MeetMe.

• API de Tradução de CODECs: nessa API são carregados os módulos que cuidam da codificação e decodificação de diversos formatos de áudio, como alaw, ulaw, GSM etc. É ela quem possibilita que tenhamos a facilidade de trabalhar com os mais diversos CODECs, com a opção de escolha de qual se encaixa melhor em cada cenário.

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 91

• API de Formato de Ficheiros: trabalha com leitura e escrita de diversos formatos de ficheiros para serem armazenados em disco. Por exemplo format_mp3 e format_wav.

O núcleo do sistema O núcleo do Asterisk é responsável por interconectar os protocolos, CODECs, formatos de ficheiros e aplicativos entre si para que possam ser executados os recursos desejados da forma mais customizável possível. As principais funções do núcleo do sistema estão descritas a seguir:

• Núcleo de Comutação: nessa parte do núcleo são feitas as comutações entre as pontas de uma chamada. No Asterisk essa comutação é feita de forma transparente, ou seja, o utilizador não sabe se está sendo feita a conversão de CODECs ou protocolos. Considere o Núcleo de Comutações como o ponto central e básico de qualquer PABX. No Asterisk não é diferente.

• Lançador de Aplicativos: é responsável em executar todos os aplicativos disponíveis no Asterisk, como Voice-mail, Playback etc.

• Tradutor de Aplicativos: essa parte do núcleo é onde são feitas as traduções de um CODEC para outro. O objetivo de tal tradução é permitir que o administrador ajuste o sistema a utilizar os recursos da melhor forma possível para o ambiente que ele possui. Esse processo, assim como a tradução de protocolos, é transparente para os utilizadores.

• Scheduler e gestor de I/O: faz a gestão do comportamento das tarefas em baixo nível e seu escalonamento no sistema para que seja mantido um bom desempenho sob qualquer carga.

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 92

Mão na massa – 04.01 Descrição: vamos aprender a atualizar o kernel do GNU/Linux. Objetivo: Familiarizar-nos com a linha de comandos do GNU/Linux. Tempo Máximo: 50 minutos. Instruções: verificar a versão do nosso kernel (anote a versão atual). # uname -r

• Verificar a versão do Sistema Operativo (anote a versão atual). # cat /etc/redhat-release

• Siga os procedimentos abaixo: # yum install yum-priorities # yum clean all # yum update glibc\* # yum update yum\* rpm\* python\* # yum update ecryptfs-utils\* # yum clean all # yum update kernel\* # updatedb # yum check-update # yum update # reboot

• Instalar ferramentas e utilitários para atender o Asterisk (dependências). # yum groupinstall “Development Tools” (para dahdi, libpri e asterisk) # yum groupinstall “Development Libraries” (para dahdi, libpri e asterisk) # yum groupinstall “FTP Server” (para suporte futuro) # yum install dialog* (para placas Khomp) # yum groupinstall “MySQL Database” (MySQL Server e seus componentes) # yum provides *libmysqlclient.so.* (para CDR do Asterisk) # yum install mysql-* (Dependências do MySQL) # yum install sox* (para converter áudio de uso no Asterisk) # yum install vim* # updatedb # yum check-update # yum update # reboot

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 93

• Definições do relógio do Servidor # hwclock --set --date “mm/dd/yyyy 00:00:00” # hwclock --hctosys

Figura 4.3: Ajustando o relógio

O primeiro comando, ajusta o relógio da placa mãe (HW = Hardware). O segundo comando, sincroniza o relógio do HW com o SYS (Sistema Operativo).

• Redefinindo a password do SGDB MySql Para alterar a password do utilizador “root” siga os seguintes passos: parar o serviço do MySQL (service mysqld stop, /etc/init.d/mysqld stop matando o processo – conforme sua distribuição) no CentOS, o comando é este: # service mysqld stop{start|stop|status|condrestart|restart}

[root@pbxip/]# service mysqld restart A desligar o MySQL: [ OK ] A iniciar o MySQL: [ OK ] [root@pbxip/]#

[root@pbxip/]# service mysqld stop A desligar o MySQL: [ OK ]

Para iniciar o mysql com a opção “--skip-grant-tables” [root@pbxip/]# service mysqld start --skip-grant-tables A iniciar o MySQL: [ OK ]

Alterar a password do utilizador root com o comando: [root@pbxip/]# mysqladmin -u root password '12345678'

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 94

Você vai ter que devolver os privilégios para o utilizador root: [root@pbxip/]# mysql -u root -p Enter password: (A SENHA QUE ACABOU DE CONFIGURAR)Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 3 Server version: 5.0.77 Source distribution Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.00 sec) mysql> EXIT Bye

[root@pbxip/]# service mysqld restart A desligar o MySQL: [ OK ] A iniciar o MySQL: [ OK ] [root@pbxip/]#

O parâmetro “–skip-grant-tables” desabilita no servidor o uso do sistema de privilégios. Com isso todos os utilizadores terão o acesso a todos os bancos de dados. Ao executar o comando “Flush privileges” o servidor retorna a utilizar o seu sistema de privilégios, mantendo a segurança original do serviço.

• Preparando o PHP e realizando os procedimentos de configurações para atender o Asterisk. # yum –y install e2fsprogs-devel keyutils-libs-devel krb5-devel libogg # yum –y install libsepol-devel libxml2-devel libtiff-devel gmp php-pear # yum –y install php-pear-DB php-gd php-mysql php-pdo php-cli php-xml # yum –y install php-mcrypt php-mbstring php-mhash php-ncurses kernel-devel # yum –y install ncurses-devel audiofile-devel libogg-devel libselinux-devel # yum –y install openssl-devel mysql-devel zlib-devel # yum –y install perl-DateManip sendmail-cf

Com estes comandos já deve estar tudo que precisamos para o servidor padrão Apache + PHP. Agora vamos configurar. Primeiro vamos já deixar configurado, para que no boot da máquina o Apache e o MySQL sejam iniciados, para tal utilizaremos o comando: # ntsysv ou setup Depois disso selecione as opções: [*] httpd [*] mysqld

Desta forma, sempre que a máquina for reiniciada os dois vão levantar-se.

• Agora vamos configurar o Apache. Primeiro inicie o Apache: # service httpd start

• Agora crie o ficheiro phpinfo.php para o testar o PHP com o seguinte conteúdo: # vim /var/www/html/phpinfo.php

<?php phpinfo(); // Mostra todas as informações, o padrão é INFO_ALL ?>

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 95

ou utilize o comando abaixo:

# echo "<?php phpinfo(); ?>" > /var/www/html/phpinfo.php

Então aceda o endereço: http://ip-do-servidor/phpinfo.php, e pronto, nem precisamos configurar nada, mas caso precise fazer alguma configuração específica, entre na pasta /etc/httpd/ e dentro dela existe as pastas conf e conf.d, que são onde ficam os ficheiros de configurações. O conf.d armazena a configuração dos módulos adicionados no Apache, e o conf é onde fica a própria configuração do servidor.

• Instalar o PHP-SourceGuardian

Para instalar o Servidor Wide x86-64: # cd /usr/lib64/php/modules # wget http://www.sourceguardian.com/ixeds/ixed4.lin.x86-64.tar.gz # tar vxzf ixed4.lin.x86-64.tar.gz # chmod +x ixed.*.*

Para instalar o Servidor Wide i386 # cd /usr/lib/php/modules/ # wget http://www.sourceguardian.com/ixeds/ixed4.lin.x86-32.tar.gz # tar vxzf ixed4.lin.x86-32.tar.gz # chmod +x ixed.*.*

Depois edite o ficheiro PHP.INI localizado em /etc/php.ini e realize as alterações se necessário: # vim /etc/php.ini short_open_tag = On ( linha 141 ) max_execution_time = 120 ( linha 312 ) memory_limit = 512M ( linha 314 ) error_reporting = E_COMPILE_ERROR ( linha 360 ) register_globals = On ( linha 457 ) upload_max_filesize = 12M ( linha 582 ) extension=ixed.5.3.lin ( incluir contexto linha 631 )

[root@pabxcentos modules]# service httpd restart A desligar o httpd: [ OK ] A iniciar o httpd: [ OK ] [root@pabxcentos modules]#

• Instalar o PhpMyAdmin # yum -y install phpMyAdmin.noarch

ou

# yum -y install phpmyadmin.noarch

ou ainda

# yum -y install phpmyadmin*

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 96

Edite o ficheiro phpmyadmin.conf

[root@pabxcentos /]# vim /etc/httpd/conf.d/phpmyadmin.conf

Deixe assim:

----------------------------------------------------------------------------- # # Inicio de configuração para acesso Web ao phpMyAdmin. # <Directory "/usr/share/phpmyadmin"> Order Deny,Allow Deny from all Allow from 127.0.0.1 192.168 </Directory> Alias /phpmyadmin /usr/share/phpmyadmin Alias /phpMyAdmin /usr/share/phpmyadmin Alias /mysqladmin /usr/share/phpmyadmin # #Fim de configurações das permissões de acesso Web ao phpMyAdmin. # -----------------------------------------------------------------------------

[root@pabxcentos /]# service httpd restart A desligar o httpd: [ OK ] A iniciar o httpd: [ OK ] [root@pabxcentos /]#

Ao aceder o PhpMyAdmin você terá uma surpresa (blowfish_secret), http://ip_do_servidor/phpmyadmin.

Figura 4.4: Erro Blowfish_secret

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 97

A necessidade da password blowfish é permitir que cada instalação do PhpMyAdmin, mesmo instalado com gestor de pacote, tenha uma password de segurança somente para está instalação.

Localizar o local para colocar esta password:

[root@pabxcentos /]# vim /usr/share/phpmyadmin/config.inc.php

Você vai encontrar uma linha assim:

$cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */

Deixe-a assim:

$cfg['blowfish_secret'] = ' #$*nova_password*S4P4TU*$# ';

Sempre coloco um comentário, no caso de querer trocar a password de segurança, então ficaria assim;

/* * Blowfish Secret */ $cfg['blowfish_secret'] = ' #$*nova_password*S4P4TU*$# ';

Reinicie o seu servidor com o seguinte comando:

[root@pabxcentos /]# service httpd restart A desligar o httpd: [ OK ] A iniciar o httpd: [ OK ] [root@pabxcentos /]#

Aceda novamente o PhpMyAdmin, http://ip_do_servidor/phpmyadmin

Figura 4.5: Login sem o erro Blowfish_secret

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 98

Lembre-se utilizamos Utilizador: root Password: 12345678

Mão na massa – 04.02 Descrição: vamos configurar o CDR no MySQL para nosso Servidor Asterisk. Objetivo: criar a base de dados no Banco de Dados MySQL para o CDR do Asterisk. Tempo Máximo: 15 minutos. Instruções: aceder o PhpMyAdmin (http://ip do seu servidor/phpmyadmin). Colocamos o utilizador: root e a password: 12345678.

Figura 4.6: Login phpMyAdmin

Em “Criar nova base de dados” digite “ippabx” e clique no botão “Criar”

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 99

Figura 4.7: localhost do phpMyAdmin Agora clique na base de dados “ippabx”

Figura 4.8: localhost do phpMyAdmin

Agora clique no menu, no item “Import”.

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 100

Figura 4.9: Import do ippabx

Agora clique no botão “Procurar...”

Figura 4.10: Import do ippabx

Agora entre no diretório “Asterisk 1.6 ou 1.8 BD_IPPABX” e selecione o ficheiro “ippabx.sql” fornecido pelo formador.

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 101

Figura 4.11: Import do ippabx

Agora clique no botão “Executar”

Figura 4.12: Import do ippabx

Aqui vemos que tudo foi executado com sucesso.

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 102

Figura 4.13: Import do ippabx

Clique no menu esquerdo sobre o nome da nossa base de dados que esta em azul. Veja que todas as tabelas de nossa Base de Dados foram criadas com sucesso. Depois clique no ícone da “Casa” (Home)

Figura 4.14: Tabelas da base de dados ippabx

Agora pode sair do phpMyAdmin, clicando no ícone “Exit”.

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 103

Figura 4.15: Saindo do phpMyAdmin

Mão na massa – 04.03 Descrição: iremos realizar a instalação do Asterisk bem como aplicativos auxiliares. Objetivo: Instalar corretamente o Asterisk e complementos. Tempo Máximo: 20 minutos. Instruções: após estar com o seu sistema operativo e infraestrutura de rede prontos, está na hora de começar a instalar e em seguida configurar o PBX IP. Existem quatro pacotes que compõem o projeto Asterisk:

o DAHDI: composto pelos pacotes dahdi-linux e dahdi-tools. Esse pacote fornece os módulos para que as placas da Digium possam ser carregadas no GNU/Linux e reconhecidas pelo Asterisk. Nesses pacotes encontram-se também o driver dahdi_dummy, ele é o responsável por gerar informações de temporização para alguns aplicativos do Asterisk quando não existirem placas fisicamente instaladas;

o Libpri: é uma biblioteca para uso das placas da Digium com sinalização ISDN;

o Asterisk: pacote que traz os códigos-fonte do Asterisk e todos os seus recursos padrão;

o Asterisk-addons: neste pacote são encontrados módulos adicionais para recursos extras do Asterisk, por exemplo, o módulo que reconhece ficheiro MP3.

Lembrando que neste momento nos laboratórios anteriores atendemos todas as dependências para instalar com sucesso o sistema Asterisk PBX IP. Demais dependências que sejam necessárias, serão instaladas automaticamente. As fontes dos pacotes acima listados podem ser encontradas na sessão de downloads do sítio oficial do Asterisk (http://www.asterisk.org).

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 104

Atualmente o Asterisk se encontra na versão 1.10, mas a versão 1.6 será a versão que iremos focar durante todo este material de estudo.

OBS: devido a constante mudanças realizadas na estrutura dos repositórios Open Source, é possível que alguns dos caminhos indicados nos tuneis wget não seja mais valido. Caso isto ocorra procure pelo nome do pacote no sítio oficial do projeto.

Instalar o LAME;

# cd /usr/local/src # wget http://downloads.sourceforge.net/project/lame/lame/3.98.4/lame-3.98.4.tar.gz?ts=1292626574&use_mirror=cdnetworks-us-1 # tar zxvf lame-3.98.4.tar.gz # cd lame-3.98.4 # ./configure # make # make install

Instalar o LIBPRI;

# cd /usr/local/src # wget http://downloads.asterisk.org/pub/telephony/libpri/releases/libpri-1.4.11.tar.gz # tar zxvf libpri-1.4.11.tar.gz # cd libpri-1.4.11 # make # make install

Instalar o DAHDI-LINUX;

# cd /usr/local/src # wget http://downloads.asterisk.org/pub/telephony/dahdi-linux/dahdi-linux-2.5.0.1.tar.gz # tar zxvf dahdi-linux-current.tar.gz # cd dahdi-linux-2.5.0.1 # make # make install

Instalar o DAHDI-TOOLS;

# cd /usr/local/src # wget http://downloads.asterisk.org/pub/telephony/dahdi-tools/dahdi-tools-2.5.0.1.tar.gz # tar zxvf dahdi-tools-current.tar.gz # cd dahdi-tools-2.5.0.1 # ./configure # make # make install

Para que inicie no boot (arranque) do Sistema Operativo (GNU/Linux CentOS):

# make config

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 105

Para iniciá-lo manualmente:

[root@pabxcentos dahdi-tools-2.5.0.1]# service dahdi start Loading DAHDI hardware modules: wct4xxp: [ OK ] wcte12xp: [ OK ] wct1xxp: [ OK ] wcte11xp: [ OK ] wctdm24xxp: [ OK ] wcfxo: [ OK ] wctdm: [ OK ] wcb4xxp: [ OK ] wctc4xxp: [ OK ] xpp_usb: [ OK ]

Running dahdi_cfg: [ OK ] [root@pabxcentos dahdi-tools-2.5.0.1]#

Instalar o Asterisk versão 1.6.2.20;

# cd /usr/local/src # wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-1.6.2.20.tar.gz # tar zxvf asterisk-1.6.2.20.tar.gz # cd asterisk-1.6.2.20 # ./configure # make menuselect

OBS: Será aberta uma nova janela para selecionar quais os módulos devem ou não ser instalados. Para instalar, a opção estará como [ * ], para não instalar [ ], caso o sistema exija alguma dependência que não está instalada, será mostrado XXX na frente do módulo. Na versão 1.6 vá até ”Save & Quit” após terminar as seleções. Nota que enquanto na versão 1.6 você utiliza a tecla “espaço” para realizar as seleções de módulos, na versão 1.4 você deve teclar X para o mesmo procedimento.

# make # make install # make samples # make progdocs # make config

Instalar o Asterisk addons para Asterisk versão 1.6.2.20;

# cd /usr/local/src # wget http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-addons-1.6.2.4.tar.gz # tar zxvf asterisk-addons-1.6.2.4.tar.gz # cd asterisk-addons-1.6.2.4 # ./configure # make menuselect

Applications [*] app_addon_sql_mysql [*] app_saycountpl Call Detail Recording [*] cdr_addon_mysql Resource Modules [*] res_config_mysql

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 106

Todos os itens acima necessitam da biblioteca cliente do MySQL, todos tem que estar com a opção abaixo do lado esquerdo como descrito a seguir:

Simple Mysql Interface MySQL CDR Backend MySQL RealTime Configuration Driver

Depends on: mysqlclient(E)Can use: N/A Conflicts with: N/A

Escolha em salvar e sair, prossiga com a instalação;

# make # make install # make samples

[root@pabxcentos src]# service asterisk start Starting asterisk: [ OK ] [root@pabxcentos src]#

IMPORTANTE: caso seja necessária a recompilação do Asterisk, é recomendável que você digite o comando make clean e make distclean antes do ./configure para limpar os códigos-fonte compilados e os ficheiros makefile gerados. Em seguida, repita o processos – exceto o make samples e o make config para não sobrescrever suas configurações. Esses comandos não irão remover os módulos instalados na pasta /usr/lib/Asterisk/modules.

Vamos configurar agora o ficheiro named.conf para que os anexos do correio de voz possa ser enviados para os destinatários, sem correr o risco de cair na lista de spam.

# echo "options {" >> /var/named/chroot/etc/named.conf # echo " directory \"/var/named\";" >> /var/named/chroot/etc/named.conf # echo " dump-file \"/var/named/data/cache_dump.db\";" >> /var/named/chroot/etc/named.conf # echo " statistics-file \"/var/named/data/named_stats.txt\";" >> /var/named/chroot/etc/named.conf # echo "};" >> /var/named/chroot/etc/named.conf # echo "include \"/etc/rndc.key\";" >> /var/named/chroot/etc/named.conf # cd /var/named/chroot/etc/ # chmod 640 named.conf # chgrp named named.conf # ln -s /var/named/chroot/etc/named.conf /etc/named.conf

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 107

Vamos desabilitar o SELinux e o Firewal para não termos problemas com os mesmos em nossas conexões locais (intranet). Lembre-se que para conexões, externas a sua rede (Internet) faz necessário firewall e vpn.

# echo "SELINUX=disabled" > /etc/selinux/config # iptables -P INPUT ACCEPT # iptables -P OUTPUT ACCEPT # iptables -P FORWARD ACCEPT # iptables -F # iptables -X # /etc/init.d/iptables save

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 108

Estrutura de pastas

O Asterisk trabalha com as pastas listadas a seguir quando feita a instalação padrão a partir dos códigos-fontes. É importante conhecê-los para saber onde procurar os módulos ou ficheiros utilizados e gerados pelo sistema, assim como para melhor dimensionar o particionamento do seu sistema operativo. Caso for alterada essa estrutura de pastas deve-se alterar no ficheiro “asterisk.conf” quais as pastas utilizadas que corresponde as originais.

• /etc/asterisk: é a pasta onde são encontradas todos os ficheiros de configurações do Asterisk. Veremos quais e suas devidas configurações mais adiante.

• /usr/lib/asterisk/modules: nessa pasta estão todos os módulos que englobam as APIs descritas anteriormente e que são carregados pelo Asterisk. Se não houver configurações no ficheiro “modules.conf” negando o carregamento de algum módulo, todos os módulos que estiverem na pasta “/usr/lib/asterisk/modules” serão carregados, por isso é preciso ter o cuidado de não manter backups de módulos para teste de outros. Caso o Asterisk sinta qualquer dificuldade ao carregar os módulos dessa pasta o serviço não irá iniciar. Caso o módulo já esteja em execução, este não irá parar mas ao ser reiniciado não funcionará.

• /var/lib/asterisk/: armazena o ficheiro do bando de dados do Asterisk, o AstDB (veremos seu uso mais adiante), e uma série de subpastas com ficheiros que podem ser usados para apoiar alguns aplicativos do PBX IP.

• /var/lib/asterisk/sounds: pasta padrão para armazenar os ficheiros de áudio utilizados pelos aplicativos do Asterisk. Por padrão, na compilação podem ser instalados os ficheiros de Áudio em inglês, espanhol, e francês. Também é possível colocar os áudios em português desde que se mantenham os mesmos nomes para os ficheiros. Isso porque alguns aplicativos possuem os áudios padrões para serem executados, instruções da administração da caixa de mensagens (correio de voz – Voice-mail) dos utilizadores, e outros recursos procurando por esses áudios com nomes padrão. Os ficheiros dessa pasta geralmente se encontram em formato GSM por terem a mesma qualidade de chamadas telefónicas convencionais e serem ficheiros menores que outros formatos.

• /var/lib/asterisk/moh: pasta onde ficam os áudios de músicas em espera. Para cada classe configurada no ficheiro “musiconhold.conf” podem ser criados novas pastas dentro desta.

• /var/lib/asterisk/agi-bin: armazena os scripts AGI. São utilizados para estender os recursos do Asterisk e facilitar a integração com outros aplicativos.

• /var/lib/asterisk/keys: para garantir maior segurança é possível utilizar chaves criptografadas para autenticar extensões ou outros sistemas que utilizam DUNDi por

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 109

exemplo. Nessa pasta são armazenadas essas chaves quando houver esse tipo de requisito em seu PBX IP.

• /var/lib/asterisk/images: é uma pasta pouco utilizada atualmente, pois serve apenas para armazenar imagens. No entanto, poucos dispositivos suportam a visualização de imagens. Porém, se no futuro esse uso se ampliar, a pasta para esse tipo de recurso já está previsto.

• /var/lib/asterisk/firmware: armazena os rmwares de dispositivos compatíveis com o Asterisk. Por padrão o rmware do IAX se encontra nele. Também raramente é utilizado; sua finalidade exata não está bem descrita.

• /var/spool/asterisk: nessa pasta são encontradas subpastas que armazenam ficheiros consumidos e gerados dinamicamente pelo sistema durante sua execução (voice-mail e gravações, por exemplo).

• /var/spool/asterisk/monitor: é onde são armazenadas por padrão as gravações geradas pelos aplicativos Monitor() e MixMonitor() quando o caminho completo não é passado como parâmetro.

• /var/spool/asterisk/voicemail: para cada caixa postal é gerada uma nova subpasta que irá conter as pastas e mensagens gravadas.

• /var/spool/asterisk/outgoing: essa pasta é constantemente monitorada pelo Asterisk para que, assim que for colocado nele um ficheiro com padrão predefinido – chamado de calle – contendo informações de marcação, essa chamada seja imediatamente executada. Quando a marcação for bem-sucedida ou esgotarem-se o número de tentativas o ficheiro é automaticamente removido da pasta. A utilização dessa pasta é bem ampla e varia de acordo com a necessidade de cada ambiente; pode ser feito, por exemplo, um aplicativo de callback e aplicativos de marcação utilizando esse recurso.

• /var/spool/asterisk/meetme: quando é feita a configuração para gravar uma conferência, é nessa pasta que os ficheiros gerados serão armazenados.

• /var/spool/asterisk/dictate: raramente utilizado, é onde o aplicativo dictate()irá procurar pelos ficheiros correspondentes quando necessário.

• /var/spool/asterisk/system: quando é utilizado o aplicativo system() para executar algum comando de dentro do plano de marcação direto no sistema operativo, é nessa pasta que são armazenadas as informações temporárias caso seja necessário.

• /var/spool/asterisk/tmp: guarda dados temporários gerados pelo Asterisk principalmente para fazer controlo de concorrência entre aplicativos de leitura e escrita em dados que estão sendo usados.

• /var/run: contém o ficheiro com o PID (Process ID – número que identifica o processo quando em execução) que é gerado quando o Asterisk é inicializado.

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 110

• /var/log/asterisk: armazena os logs gerados pelo Asterisk. As informações que serão escritas nos logs são configuradas no ficheiro logger.conf. Existe uma subpasta chamada /var/log/asterisk/cdr-csv onde fica armazenado o ficheiro master.csvque contém os registros dos bilhetes gerados no Asterisk. Esses bilhetes também podem ser personalizados e gerados em uma outra subpasta, a /var/spool/asterisk/cdr-custom.

Iniciando o Asterisk O Asterisk está pronto ser iniciado. Confirme digitando o comando:

# rasterisk –vvvvgci

O prompt do sistema operativo deverá mudar para *CLI>. As opções mais usadas com o comando # asterisk no GNU/Linux são as seguintes: (para mais informações digite # man asterisk no prompt):

• v: indica o nível de verbose que o Asterisk irá exibir após iniciado, múltiplos v indicarão maior verbose;

• c: inicia o Asterisk na consola. Para sair desse modo, o serviço do Asterisk deve ser paralisado;

• d: ativa o modo debug: • g: gera coredumps em caso de segmentation fault; • G<grupo>: grupo que iniciará o Asterisk; • r: conecta ao Asterisk que estiver sendo executado no servidor e não inicia

uma nova instância; • U<utilizador>: utilizador que iniciará o Asterisk; • x<comando>: conecta ao Asterisk que estiver sendo executado, executa o

comando passado como parâmetro, imprime o resultado na consola do GNU/Linux e fecha a conexão.

• Exemplo: # rasterisk –x “core show channels”

Para interromper o Asterisk que está em produção é possível escolher entre os seguintes comandos na linha de comando:

*CLI> core stop now: para o serviço do Asterisk de imediato; *CLI> core stop gracefully: não permite que sejam geradas novas chamadas e espera as que estão em andamento acabarem para parar o serviço; *CLI> core stop when conveniente: espera o momento em que não houverem mais chamadas para parar com o serviço. A diferença do gracefully é que este não rejeita novas chamadas.

O mesmo se aplica para os comandos core restart now, gracefully e when conveniente.

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 111

De preferência inicie e pare o serviço Asterisk sempre pelos comandos:

# service asterisk start # service asterisk restart # service asterisk stop# service asterisk status

Estes são satisfatórios para usar em testes, mas eles interrompem o serviço, então não são apropriados para um sistema em produção.

Mão na massa – 05.01 Descrição: realizar as primeiras configurações em nosso Servidor Asterisk. Objetivo: Backup de ficheiros do Asterisk. Tempo Máximo: 15 minutos. Instruções: O Asterisk é composto por uma série de ficheiros de configurações, onde cada qual configura uma particularidade do serviço. Por padrão, todos os ficheiros de configuração do Asterisk ficam em /etc/Asterisk, exceto os ficheiros de configuração dos drivers das placas Digium que ficam na pasta /etc/dahdi.

Os ficheiros são divididos em seções, que são declaradas entre parêntese reto ([<seção>]) e tudo o que estiver abaixo desta seção até o início de outra ou até o final do ficheiro estará relacionado a ela. Por exemplo:

[sessao1] par1=123 par2=456

[sessao2] par3=789

No exemplo acima, os parâmetros par1 e par2 pertencem à seção 1 e o parâmetro par3 pertence à seção 2. Alguns ficheiros possuem no início das configurações uma seção chamada [gereral]. Nos casos de ficheiros de configuração de canais, como os ficheiros sip.conf, iax.conf e chan_dahdi.conf, serão definidos nesta sessão os parâmetros utilizados em todas as outras seções se esse parâmetro não for sobrescrito nas sessões específicas de cada canal. Em outros ficheiros, como o features.conf essa sessão existe para definir um conjunto de parâmetros que são usados por aplicações específicas dentro do Asterisk.

Na tabela abaixo estão os principais ficheiros de configuração e o que é configurado em cada um deles:

Ficheiro Conteúdoasterisk.conf Define as pastas padrão e alguns parâmetros para

inicialização do Asterisk entre outros.

agentes.conf Ficheiro de configuração dos agentes das filas de atendimento.

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 112

cdr.conf Configurações sobre a gravação dos CDRs (Call Detail Records) – Bilhetes gerados peloAsterisk.

extensions.ael Ficheiro de configuração do plano de marcação escrito em AEL (Asterisk Extension Language), uma linguagem mais avançada específica para plano de marcação do Asterisk.

extensions.conf Ficheiro de configuração do plano de marcação.

features.conf Onde são configuradas algumas funcionalidades do IP PBX, como captura, estacionamento e transferência de chamadas.

iax.conf Ficheiro que contém as configurações de canais IAX, sejam eles extensões ou entroncamentos.

logger.conf Configurações referentes aos logs gerados pelo Asterisk.

manager.conf Configurações referentes à AMI (Asterisk Manager Interface), porta para integração de aplicações externas se conectarem ao Asterisk.

meetme.conf Configurações das salas de conferência.

modules.conf Ficheiro de configuração da aplicação que carrega os módulos.

musiconhold.conf Definições sobre música em espera.

queues.conf Configuração das filas de atendimento.

rtp.conf Configurações do protocolo RTP.

sip.conf Configuração dos canais SIP, tanto para as extensões, quanto para os entroncamentos.

voicemail.conf Definições das caixas do correio de voz.

Caso você deseje criar novos ficheiros para ter maior organização e controle do que está sendo configurado, pode fazer uso de desenvolvimento segmentado, em todos os ficheiros de configuração você pode utilizar esta técnica de desenvolvimento, com a inclusão de ficheiros, ou seja, a partir do ficheiro padrão podem ser incluídos outros ficheiros criados com qualquer nome.

Para realizar essas inclusões basta adicionar #include = nome_do_ficheiro.conf no ficheiro padrão. Vários includes podem ser declarados, assim como um ficheiro incluído declarar a inclusão de outro e assim por diante.

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 113

Então iremos ver com são feitas as primeiras configurações em um PBX IP Asterisk. Na instalação foram criados ficheiros de exemplo quando executamos o comando make samples, esses ficheiros podem servir de referência para as configurações que você for iniciar. Porém, para evitar que ocorram confusões e até mesmo acessos a extensões indevidas, procure sempre criar um backup dos ficheiros que veremos a seguir e comece criando novos ficheiros somente com as configurações que você fizer.

Preparar o Asterisk. Digite as linhas a seguir na consola do GNU/Linux (CLI):

[root@pbxip /]# mkdir /tmp/bkp [root@pbxip /]# cd /etc/ [root@pbxip /]# cp -a asterisk/ /tmp/bkp/ [root@pbxip /]# ls /tmp/bkp/asterisk/ [root@pbxip /]# cd /etc/asterisk/ [root@pbxip asterisk]# > extensions.conf [root@pbxip asterisk]# > extensions.ael [root@pbxip asterisk]# > sip.conf [root@pbxip asterisk]# > iax.conf [root@pbxip asterisk]# > users.conf [root@pbxip asterisk]# > queues.conf [root@pbxip asterisk]# > agents.conf [root@pbxip asterisk]# > voicemail.conf [root@pbxip asterisk]# > musiconhold.conf [root@pbxip asterisk]# > meetme.conf

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 114

Nosso cenário

Figura 6.1: Nosso cenário de estudo

1. Rede de Telefonia Pública. Conexão com as redes públicas de Telefonia Fixa e de Telefonia Celular.

2. Redes Multisserviços.Conexão com a Rede Multisserviços que interliga todas as instalações prediais da empresa nas diversas localidades. No caso de uso de redundâncias, podem ser contratadas outros prestadores de serviço para prover diversidade de circuitos.

3. PABX IP Principal. Equipamento responsável pelo fornecimento do serviço de comunicação por Voz. Pode ser um único equipamento que atende todas as localidades prediais a partir de um local central. Eventualmente pode ter um equipamento de contingência em outra localidade.

4. PABX IP Secundário ou Gateway. Equipamento utilizado como contingência do PABX IP principal, caso exista. Normalmente será apenas um Gateway para acesso a rede telefónica pública local. Em algumas localidades pode nem existir.

Fonte: http://www.teleco.com.br

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 115

5. Telefone IP. Terminal telefônico IP ou terminal telefônico analógico com adaptador para VoIP.

6. PC's ou Notebooks. Computadores desktop ou laptop, que também podem ser utilizados para telefonia IP com software do tipo softphone.

7. Rede Local.Compreende toda a infraestrutura da rede local (LAN): cabos de interligação, cabeamento estruturado, painel de distribuição e hub ou switch. Deve-se observar que as instalações com hub podem introduzir perdas devido a sua característica de comunicação "um-para-muitos". Recomenda-se, portanto, o uso de switches, que implementam a comunicação "ponto-a-ponto" entre todos os elementos da rede.

8. CPE. Equipamento de interface da rede corporativa com a rede multisserviços que implementa a rede WAN da empresa. Quando o número de localidades é grande, na localidade principal pode ser colocado adicionalmente um equipamento, switch de maior capacidade de processamento, como nó central para melhorar o tráfego entre as diversas localidades.

Alguns cuidados adicionais devem ser considerados no projeto da Rede VoIP: Dimensionamento: o dimensionamento do porte do PABX IP, da infraestrutura da(s) redes locais, dos CPE's e da banda da rede WAN são fatores críticos para o sucesso da rede.

Qualidade de Serviço: para que a Rede VoIP tenha uma qualidade de comunicação de Voz que seja, no mínimo, igual aos sistemas de Voz comutada, deve-se ter como prerrogativa de projeto um plano para garantir o QoS das informações de Voz, tanto na(s) rede(s) local(is) como nos CPE's e circuitos contratados das redes multisserviços.

Nível de Serviço: a disponibilidade geral da rede e o MTBF (falhas) devem ser objeto de estudo para garantir que tantos os equipamentos como os serviços contratados das redes multisserviços permitam manter a rede VoIP funcionando sempre. Os equipamentos devem ter suporte local e em regime ininterrupto, e os serviços de telecomunicações devem ser contratados com base num Acordo de Nível de Serviço (SLA) que atenda as necessidades da Rede VoIP.

Segurança: assim como nas redes de dados, a rede VoIP deve também ter os seus procedimentos de segurança definidos e implementados nos equipamentos de segurança existentes (firewall, proxy, etc.) ou em novos equipamentos destinados a esse fim.

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 116

PBX IP Tradicional

Figura 6.2: PBX IP Tradicional

O Asterisk permite conectividade em tempo real entre a rede pública de telefonia e redes VoIP. A rede pública de telefonia é frequentemente referida pela sua sigla em inglês PSTN (Public Switched Telephony Network).

PBX IP 100% VoIP

Figura 6.3: PBX IP 100% VoIP

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 117

Para ligar para os telefones normais, fixos ou moveis em qualquer lugar no mundo é necessário o uso de um ITSP - Internet Telephony Service Provider, estes provedores possuem aparelhos especiais (gateways) que são ligados nas redes telefônicas normais (PSTN) em muitos países, este serviço é chamado de "Terminação".

Conectando seu Servidor IP PABX a um destes ITSP você poderá ligar pela internet até o país desejado e lá realizar uma ligação local para o telefone de destino. Por isso as tarifas internacionais da Telefonia IP são tão baixas.

Os ITSP também fornecem números de telefone locais em muitos países, desta forma você pode ter um número de telefone e receber chamadas de telefones normais sem que a pessoa que está chamando pague tarifas internacionais.

PBX IP HIBRIDO: VoIP & PSNT

Figura 6.4: PBX IP Hibrido: VoIP & PSTN

Suponhamos que a Internet é nossa Terminação I seja responsável por todas as chamadas nacionais. Quando não temos tratamento de falhas, o que também chamado de redundância, onde caso a Terminação I para de operar por motivos que não nos interessam até então, os utilizadores não conseguirão completar chamadas nacionais.

O nosso PSTN é então nossa Terminação II, Neste cenário que estamos ilustrando temos um ITSP (nosso servidor VoIP) e um PSTN (nossa operadora telecom local).

Terminações que por sua vez encaminharão para a rede pública de telefonia (PSTN), todas as chamadas que por algum motivo deixou de ser atendida pela no telefonia IP (ITSP).

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 118

VoIP Gateway

Figura 6.5: VoIP Gateway

Um Servidor VoIP (Gateway VoIP) é um dispositivo que converte os sinais de voz para o protocolo IP, que por sua vez, os transmite através de redes de dados. São usados de duas formas:

1. Para converter linhas telefônicas/PSTN ao VoIP/IP: Nesse caso, um servidor VoIP permite o recebimento e a realização de chamadas pela rede de telefonia convencional. Em se tratando de empresas, é preferível continuar usando linhas telefônicas tradicionais porque podem garantir maior qualidade e disponibilidade.

2. Para conectar um sistema de telefonia convencional/PABX à rede IP: Nesse caso, o Gateway VoIP permite a realização de chamadas via VoIP. As chamadas podem ser realizadas por um provedor de serviço VoIP ou, no caso de uma empresa com vários escritórios, o custo das ligações internas pode ser reduzido com ligações via Internet. Os Gateways VoIP estão disponíveis como unidades externas ou cartões PCI.

A grande maioria dos dispositivos é de unidades externas. Um Servidor VoIP terá um conector para a rede IP e uma ou mais portas de conexão para as linhas telefônicas.

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 119

Servidor de Funcionalidades

Figura 6.6: Servidor de funcionalidades

O software Asterisk, é um software que transforma um computador num poderoso servidor de comunicações, pode ser usado como um IP PABX, também conhecido com Servidor IP/PABX, ou Gateway VoIP para possibilitar as empresas comunicar-se de novas formas, e tornarem-se mais acessíveis sem perder a compatibilidade com os sistemas clássicos de voz.

Esta poderosa ferramenta permite montar com custos reduzidos um ótimo servidor de funcionalidades de voz com altíssimos níveis de funcionalidade, suportando entre outras: - Vários operadores Voip - Utilização de Hardware dedicado ou softphones - Integração com dispositivos móveis - Voice-mail - Gateway voice-mail para correio electrónico - Suporte para Hardware de telefonia RDIS e analógico - IVR (URA) e AA (Atendimento Automático) - Música em espera

Resumo de Atendendo o Asterisk, GNU/Linux para Adm. Asterisk, Apresentação do Asterisk, Arquitetura do Asterisk, conhecendo o Asterisk e Asterisk Overview Foi apresentado a história do Asterisk, uma breve evolução do software ao longo do tempo e onde podem ser encontradas referências quando você estiver encontrando dificuldades para configuração ou problemas de operação. Vimos como é a arquitetura interna do aplicativo. Quais são e para que servem cada uma das APIs que compõem o sistema e as divisões que temos no núcleo do sistema. Sendo que a modularidade do sistema é o que possibilita toda a flexibilidade disponível por esse PBX IP. A árvore de pastas que o Asterisk utiliza deve ser conhecida para saber onde deve ser focado quando houver necessidade de manutenção de determinado módulo. Vimos o que é preciso ser feito em nosso ambiente de rede para poder receber chamadas VoIP com qualidade, trazendo maiores chances de sucesso em seu projeto.

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 120

Garantir banda suficiente para incorporar transmissão de voz sobre a rede de dados, utilizar priorização de pacotes e VLANs quando possível são questões que devem ser analisadas para obter qualidade nas transmissões de voz. Da mesma forma o servidor que irá fornecer o serviço de voz sobre IP deve ser dimensionado de acordo com a operação que será exigida do mesmo. Devem ser consideradas os aplicativos que irão executar, os CODECs e protocolos que serão utilizados para poder adequar o Hardware de forma correta. O particionamento que será feito é essencial para garantir maior segurança e tranquilidade ao administrador, facilitando a manutenção do servidor. Com o ambiente todo preparado foram apresentados os pacotes que compõem o sistema: DAHDI, Libpri, Asterisk e Asterisk-addons. Lembrando que o DAHDIfornece os drivers para as placas, libpri é a biblioteca para sinalização ISDN, Asterisk é o pacote principal e Asterisk-addons são recursos adicionais que podem ser acrescidas ao seu PBX IP. Atenção especial deve ser dispensada ao módulo dahdi_dummy que fornece o timing para aplicativos como MeetMe() (conferencia) quando não houver placas da Digium instaladas. Por fim, passamos por alguns ficheiros de configuração) o que contém cada um deles) e como é a estrutura básica dos mesmos. De agora em diante iremos focar nas configurações desses ficheiros. Vamos aprender como configurar extensões SIP, IAX e FXS, o plano de marcação, entroncamento com a PSTN através de links digitais, analógicos e VoIP e conhecer os principais comandos de terminal que nos ajudarão a administrar o PBX IP.

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 121

Neste momento, veremos como são feitas as primeiras configurações em um PBX IP Asterisk. Na instalação foram criados ficheiros de exemplos quando executamos o comando # make samples, esses ficheiros podem servir de referência para as configurações que você for iniciar. Porém, para evitar que ocorram confusões e até mesmo acessos a extensões indevidas, procure criar backups dos ficheiros que veremos a seguir e comece criando novos ficheiros somente com as configurações que você implementar.

O protocolo SIP Lembrando que já vimos quais são as principais mensagens e os modos de funcionamento desse protocolo. É importante que se familiarize com esses conceitos para facilitar a resolução de problemas e também para ter uma melhor visão do que é ou não possível fazer em seus próximos projetos.

Devido a sua ampla adoção, o protocolo SIP possui diversos dispositivos que podem ser utilizados como principal ferramenta de comunicação de voz. Esses equipamentos seriam softphones – (softwares que emulam um telefone no computador – Figura 7.1), ATAs – Analog Tlephony adapter (Figura 7.2), aparelho que converte uma extensão analógica TDM para uma extensão VoIP. Normalmente possui uma ou duas portas, Gateways (Figura 7.4), que são ATAscom mais portas, como se fossem um switch ou telefones VoIP (Figura 7.5).

Figura 7.1: Softphone X-Lite para Windows

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 122

Figura 7.2: ATA PAP2 da Cisco System – LinkSys

Figura 7.3: Exemplo de uso da ATA PAP2 da Cisco System – LinkSys

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 123

Figura 7.4: Gateway VoIP FXS - Grandstream GXW 4008.

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 124

Figura 7.5: Telefone VoIP - Grandstream GXV3140.

Existem diversas marcas que praticam preços bastante variados. Pesquise nas listas ou converse com outros Administradores de Sistemas Asterisk para saber quais são suas experiências com cada marca e em qual ambiente eles foram usados, já que normalmente isso ajuda a achar equipamentos com melhor custo/benefício.

Segue um quadro comparativo entre esses dispositivos para servir como base de comparação (sem levar em conta fabricantes ou modelos):

Equipamento Prós ContrasSoftphones Baixo custo de aquisição, pois

existem diversas opções free com boa qualidade. Basta comprar o headset.

Depende da qualidade da máquina para compartilhar os recursos. Maior dificuldade de adaptação dos utilizadores.

ATA Custo por porta relativamente baixo.

Para ambientes que terão muitas extensões torna-se oneroso configurar muitos equipamentos, ou seja, uso restrito ou residencial.

Gateways FXS Menos custo por porta quando forem necessários extensões analógicas. Menos

Caso ele falhe, diversas extensões ficaram sem comunicação.

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 125

equipamento para proceder com a gestão.

Telefone IP Aparelhos com boa qualidade e aparência.

Custo de aquisição impede que sejam adquiridos muitos.

Geralmente esses equipamentos possuem interfaces gráficas amigáveis e fáceis de configurar. Exceto os softphones em versões gratuitas, os demais podem ser provisionados; isso que dizer que as configurações são buscadas por TFTP, HTTP ou FTP em um único local. Podemos gerar ficheiros comuns para serem usados por vários equipamentos e os específicos com configurações direcionadas para cada um, não sendo necessário configurar individualmente todos eles.

Mão na massa – 07.01 Descrição: realizar as primeiras configurações em nosso Servidor Asterisk. Objetivo: Criar utilizadores SIP. Tempo Máximo: 15 minutos. Instruções: A configuração das extensões que utilizarem o protocolo SIP é feita no ficheiro /etc/asterisk/sip.conf. Cada extensão terá uma sessão no ficheiro, nessa seção poderão ser definidos os parâmetros específicos de cada extensão. Os parâmetros mais utilizados na sessão general do sip.conf estão informados na tabela abaixo (os parâmetros que não forem definidos receberão o seu valor padrão).

Parâmetro Descrição Padrãoallow=<codec> Habilita um codec, usado abaixo do

“disallow”. -

disallow=all Desabilita todos os codecs, liberar cada codec com o parâmetro “allow”.

-

allowguest=yes/no Permite ou rejeita chamadas de “guests”, peers não configurados.

Yes

bindaddr=<IP> IP que o Asterisk ira escutar requisições SIP.

0.0.0.0 (todas as

interfaces)

bindport=<porta> Porta que o Asterisk irá escutar requisições SIP.

5060

callerid=<texto> Informação do número de origem quando nada vier especificado.

asterisk

canreinvite=yes/no/nonat/update

Definição referente ao fluxo de média entre dois clientes SIP (direto entre eles ou pelo Asterisk.

yes(direto)

compactheaders=yes/no Define se o Asterisk deve enviar as mensagens SIP em modo abreviado (compacto).

no

contexto=<nome contexto> Define o contexto padrão quando esse -

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 126

parâmetro não for especificado na extensão.

domain=<domínios> Lista de domínios que o Asterisk é responsável.

-

dtmfmode=inband/info/rfc2833 Configura qual o modo de DTMF que será interpretado

rfc2833

externip=<ip>/<hostname> Endereço que será colocado nas mensagens SIP quando atrás de NAT. Usando quando conectando a hosts externos.

-

Localnet=<ip>/<máscara> Informação que indica as redes da rede interna. Importante configurar quando estiver atrás de NAT.

-

fromdomain=<domínio> Seta o valor que será colocado no campo FROM em mensagens SIP. Usando quando conectando a hosts externos.

-

nat=yes/no Indica se o servidor está atrás de NAT. Usando quando conectando a hosts externos.

no

qualify=yes/no/tempo(ms) Verifica se o cliente está acessível. Semelhante a pings enviados a cada 60 segundos.

no

srvlookup=yes/no Executa consultas em DNS SRV. yes

tos=<valor> Seta valores de QoS. -

Alguns desses parâmetros podem ser usados também nas configurações de cada peer, assim como existem alguns específicos para configurações dos clientes que não se aplicam na seção [gerenal] do sip.conf, os mais comuns são:

Parâmetro Descrição Padrãoaccountcode=<texto> Seta o valor accountcode para ser usado

no CDR. -

call-limit=<numero> Configura o número de chamadas simultâneas que o peer poderá efetuar.

-

callgroup=<numero> Define o grupo de chamadas ao qual pertence a extensão.

-

pickupgroup=<numero> Define o grupo de captura ao qual pertence a extensão.

-

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 127

host=dynamic/<hostname>/<ip> Define qual o endereço ou hostname será aceito para essa extensão se registrar.

dynamic

secret=<palavra_passe> Palavra passe que será configurada no dispositivo IP para registrar na conta.

-

type=user/peer/friend Configura se a extensão poderá somente fazer (user), somente receber (peer) ou fazer e receber (friend) chamadas.

-

username=<username> Utilizador configurado no dispositivo IP. -

Criar as extensões SIP. Edite o ficheiro /etc/asterisk/sip.conf e adicione as linhas a seguir:

[root@pbxip asterisk]# vim sip.conf

[general] context=default allowoverlap=no udpbindaddr=0.0.0.0 bindport=5060 bindaddr=0.0.0.0 tcpenable=no tcpbindaddr=0.0.0.0 srvlookup=yes maxexpiry=600 defaultexpiry=300 disallow=all allow=gsm allow=ulaw allow=alaw language=pt dtmfmode=rfc2833

;---------------OUTBOUND SIP REGISTRATIONS ------------------------ ; Asterisk can register as a SIP user agent to a SIP proxy (provider) ; Format for the register statement is: ;register=>[peer?][transport://]user[@domain][:secret[:authuser]]@host[:port][/extension][~e;xpiry] ; ; register=>user_sapo:[email protected]:5060/contexto_sapo ; ;---------------SIP DOMAIN SUPPORT--------------------------------- ; ; domain=sip.seu_dominio.pt ; domain=seu_ip_publico “208.67.222.222“ ; domain=seu_ip_local “192.168.0.254“ ; ;---------------AUTENTICATION-------------------------------------- ;

[authentication]

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 128

[basic-options](!) ; a template dtmfmode=rfc2833 context=from-office type=friend

[natted-phone](!,basic-options) ; another template inheriting basic-options nat=yes directmedia=no host=dynamic

[public-phone](!,basic-options) ; another template inheriting basic-options nat=no directmedia=yes

[my-codecs](!) ; a template for my preferred codecs disallow=all allow=alaw allow=ulaw allow=gsm allow=ilbc allow=g729 allow=g723

[ulaw-phone](!) ; and another one for ulaw-only disallow=all allow=ulaw

[grupoexterno](!) type=friend qualify=yes nat=yes host=dynamic disallow=all allow=gsm allow=ulaw allow=alaw context=externo canreinvite=no musicclass=moh qualify=1000 dtmfmode=rfc2833 language=pt call-limit=1

[grupointerno](!) type=friend qualify=yes nat=yes host=dynamic disallow=all allow=gsm allow=ulaw allow=alaw context=interno canreinvite=no musicclass=moh qualify=1000 dtmfmode=rfc2833

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 129

language=pt call-limit=1

[pap2](!) type=friend qualify=yes nat=yes host=dynamic disallow=all allow=gsm allow=ulaw allow=alaw context=externo canreinvite=no musicclass=moh qualify=1000 dtmfmode=rfc2833 language=pt call-limit=1

;[contexto_sapo] ;username=user_sapo ;type=peer ;secret=senha_sapo ;reinvite=no ;canreinvite=no ;qualify=yes ;port=5060 ;nat=yes ;insecure=very ;host=sapo.pt ;fromuser=user_sapo ;fromdomain=sapo.pt ;externrefresh=15 ;dtmfmode=rfc2833 ;context=externo ;disallow=all ;allow=gsm ;allow=ulaw ;allow=alaw ;insecure=port,invite

[2000](grupoexterno) username=2000 callerid=2000 <Delphini> secret=12345678 mailbox=2000 callgroup=1 pickupgroup=1,2,3

[2001](grupoexterno) username=2001 callerid=2001 <Dell> secret=12345678 mailbox=2001 callgroup=2 pickupgroup=2

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 130

[2002](grupoexterno) username=2002 callerid=2002 <Angelo> secret=12345678 mailbox=2002 callgroup=3 pickupgroup=3 ; ;--------------------------------------------------------------------

[root@pbxip asterisk]# rasterisk -x "reload"

[root@pbxip asterisk]# rasterisk -x "sip show users" Username Secret Accountcode Def.Context ACL NAT 2002 $tr31n4m3nt0$ externo No Always 2001 $tr31n4m3nt0$ externo No Always 2000 $tr31n4m3nt0$ externo No Always [root@pbxip asterisk]#

Configure a extensão 2000 (SIP) no aparelho IP que lhe foi presenteado pela formação Asterisk.

Configure a extensão 2001 (SIP) no softphone 3CX para isto siga os passos abaixo: Faça o download do softphone, para instalar e utilizar no seu servidor IP PBX. http://www.3cx.com/downloads/3CXPhone6.msi

Inicie a instalação do 3CXPhone, nesta tela clique no botão “Next >”.

Figura 7.6: Bem-vindos do 3CXPhone.

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 131

Vamos aceitar a licença e clicar no botão “Next >”.-

Figura 7.8: Licença de uso do 3CXPhone.

Vamos aceitar o caminho padrão da instalação clicando no botão “Next >”.

Figura 7.9: Pasta onde será instalado o 3CXPhone.

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 132

Finalmente a janela de instalação vamos fazer instalação no botão “Install”

Figura 7.10: Iniciar a cópia dos ficheiros Pasta onde será instalado o 3CXPhone.

Progresso da instalação, sem ação para o utilizador.

Figura 7.11: Progresso da instalação do 3CXPhone.

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 133

É a janela de finalização da instalação do 3CXPhone, clique no botão “Finish”.

Figura 7.12: Finalização da instalação do 3CXPhone.

Quando executar o 3CXPhone pela primeira vez ele irá abrir automaticamente a tela de configuração da extensão telefónica. Configure igual a “Figura 7.13”, logo abaixo, lembre-se que colocamos a palavra-chave “12345678”, e clique no botão “OK”.

Figura 7.13: Configurando extensão no 3CXPhone.

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 134

Nesta imagem vimos o nosso softphone conectado “On Hook”.

Figura 7.14: 3CXPhone ativo e conectado.

Observe que logo abaixo do menu de ícones do softphone 3CXPhone tem um botão, tal qual o Apple iPhone, click nele para irmos as preferências do mesmo, então teremos a imagem abaixo, a da “Figura 7.15”.

Figura 7.15: 3CXPhone menu pessoal.

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 135

Agora iremos clicar no botão (ícone) “Preferences”.

Figura 7.16: Botão (ícone) Preferences.

Em preferences iremos clicar no botão “Download others”.

Figura 7.16: Botão Download others.

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 136

Iremos selecionar o idioma “Portuguese (Portuguese translation)”, e clicar no botão “Install”.

Figura 7.17: Language updates.

Janela com a informação que a instalação foi bem-sucedida, clique no botão “OK”.

Figura 7.18: Instalação realizada com sucesso.

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 137

Observe que no campo “Language:” já esta “Portuguese (3CXLi...”, agora clique no botão “OK”.

Figura 7.19: Ativando novos recursos no 3CXPhone.

Finalmente no softphone já em Português.

Figura 7.20: 3CXPhone traduzido para nosso idioma.

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 138

Execute testes e funcionalidades. [root@pbxip /]# rasterisk -x "reload" [root@pbxip /]# rasterisk -x "sip show peers" Name/username Host Dyn Nat ACL Port Status 2000/2000 192.168.1.78 D N 2607 OK (101 ms) 2001/2001 192.168.1.99 D N 25854 OK (101 ms) 2002/2002 (Unspecified) D N 5060 UNKNOWN 3 sip peers [Monitored: 2 online, 1 offline Unmonitored: 0 online, 0 offline] [root@pbxip /]#

Agora vamos instalar o softphone X-Lite 3 e configurar a extensão “2002”, ao executar o instalador na tela de boas vindas clique no botão “Next >”.

Figura 7.21: Boas vindas a instalação do X-Lite.

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 139

Iremos aceitar a licença e clicar no botão “Next >”.

Figura 7.22: Licença de uso do X-Lite.

Iremos aceitar o caminho padrão da instalação, clique em “Next >”.

Figura 7.23: Pasta padrão para instalação do X-Lite.

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 140

Iremos deixar esta janela com o padrão da instalação clique no botão “Next >”.

Figura 7.24: Configuração padrão para instalação do X-Lite.

Progresso da instalação.

Figura 7.25: Progresso da instalação do X-Lite.

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 141

Este aplicativo ainda é para Windows 98 SE, por isto selecione “No, I will restart the computer later” e clique no botão “Finish”.

Figura 7.26: Final da instalação do X-Lite.

Quando executado pela primeira vez o softphone ira abrir a configuração da extensão, clique no botão “Add...”

Figura 7.27: Final da instalação do X-Lite.

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 142

Proceda a configuração como o da imagem abaixo, e clique no botão “Aplicar” e depois no botão “OK”.

Figura 7.28: Configurar extensão no X-Lite.

Pronto esta configurar a nossa extensão “2002”, clique no botão “Close”.

Figura 7.29: Extensão já configurada no X-Lite.

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 143

Agora o X-Lite está conectado.

Figura 7.30: Extensão conectada através do no X-Lite.

Execute testes e funcionalidades. [root@pbxip /]# rasterisk -x "reload" [root@pbxip /]# rasterisk -x "sip show peers" Name/username Host Dyn Nat ACL Port Status 2000/2000 192.168.1.78 D N 2607 OK (101 ms) 2001/2001 192.168.1.99 D N 25854 OK (101 ms) 2002/2002 192.168.1.99 D N 21825 OK (101 ms) 3 sip peers [Monitored: 3 online, 0 offline Unmonitored: 0 online, 0 offline] [root@pbxip /]#

Nota: O parâmetro contexto nas configurações de cada extensão indica a qual contexto no plano de marcação pertence esta extensão e não qual contexto deverá ser usado para chamá-lo.

Após configurar e salvar o ficheiro, a cesse a consola do Asterisk (lembrete: rasterisk –vvvvgci) e digite o comando *CLI> sip reload para atualizar as configurações carregadas no sistema.

Para configurar dispositivos IP você deverá colocar no parâmetro proxy o endereço IP de seu servidor. Em Username (Secret ou Password, dependendo da sua configuração) configure com os valores que estiverem nos parâmetros homônimos configurados no sip.conf. É possível utilizar softphones como o X-Lite ou o Zoiper que são livres e facilmente configuráveis para efetuar testes.

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 144

Mão na massa – 07.02 Descrição: primeiras configurações em nosso Servidor Asterisk. Objetivo: Criar utilizadores IAX. Tempo Máximo: 15 minutos. Instruções: Como já sabemos a função do protocolo IAX é interligar servidores Asterisk. Extensões IAX podem ser configuradas apesar da pouca oferta de dispositivos que trabalhem com esse protocolo. Os parâmetros de configuração das extensões IAX são bem semelhantes aos presentes no sip.conf. Uma das vantagens do protocolo IAX em relação ao SIP é o jitter buffer mais maduro.

Para configurá-lo existem alguns parâmetros que devem ser adicionados no ficheiro iax.conf:

Parâmetro Descrição Padrão

jitterbuffer=yes/no Define se será usado ou não o Jitter Buffer.

no

forcejitterbuffer=yes/no Força o Jitter Buffer pelo Asterisk inclusive em canais estabelecidos.

no

maxjitterbuffer=<numero> Tamanho máximo do buffer para impedir que ele cresça demais quando ocorrerem situações extremas.

-

resyncthreshold=<numero> Faz uma ressincronizarão quando o jitter buffer identifica uma alteração significativa no atraso por vários pacotes.

-

Maxjitterinterps=<numero> Usado quando os clientes não indicam que está sendo enviado silêncio. Os pacotes que forem perdidos serão substituídos por outros que foram recebidos susceptivelmente.

-

Outra grade vantagem do protocolo IAX é seu uso no modo trunk que traz grande economia

de banda quando estamos interligados servidores através dele. Para configurá-lo podemos

colocar os parâmetros na sessão [general].

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 145

Parâmetro Descrição Padrão

trunkfreq=<numero> Frequência em milissegundos que serão enviadas mensagens de trunk.

20

trunktimestamps=yes/noEnvia os timestamps de cada frame. Ambas as pontas devem suportar essa função para poder funcionar.

yes

Deve ser adicionado o parâmetro trunk=yes em cada um dos peers que serão trunks. Caso esse parâmetro não for septado ou for septado com o valor no, o entroncamento funcionará igual a um entroncamento SIP, ou seja, não fará proveito desse recurso. Em extensões IAX esse parâmetro não faz sentido.

Criar as extensões IAX. Edite o ficheiro /etc/asterisk/iax.conf e adicione as linhas a seguir:

[root@pabxcentos /]# vim /etc/asterisk/iax.conf

[general]

bindport=4569

bindaddr=0.0.0.0 disal ow=lpc10

disal ow=all

allow=gsm ; Always al ow GSM its cool

language=pt

jitterbuffer=no forcejitterbuffer=no

maxjitterbuffer=500

maxexcessjitterbuffer=100

autokil =yes

[grupoexterno](!)

type=friend

context=externo host=dynamic

allow=all

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 146

[grupointerno](!)

type=friend

context=interno

host=dynamic

allow=all

[2003](grupoexterno)

username=2003

secret=12345678

callerid=2003 <2003> mailbox=2003

qualify=yes

[2004](grupoexterno)

username=2004

secret=12345678

callerid=2004 <2004>

mailbox=2004

qualify=yes

[root@pbxip /]# rasterisk -x "reload" [root@pbxip /]# rasterisk -x "iax2 show users" Username Secret Authen Def.Context A/C Codec Pref 2004 12345678 000000000000003 externo No Host

2003 12345678 000000000000003 externo No Host [root@pbxip /]#

Configure a extensão 2003 (IAX) no softphone Zoiper. Para isto siga os passos abaixo: Fazer o download do softphone, para instalar e utilizar no seu servidor IP PBX. http://www.zoiper.com/download_list.php

Passos da instalação: 1. Execute o Zoiper Communicator Setup application

Figura 7.31: Executando a instalação do Zoiper Lite

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 147

2. Siga o Setup Wizard

Figura 7.32: Executando a instalação do Zoiper Lite

3. Inicie o Zoiper Communicator

Figura 7.33: Executando o Zoiper Lite

4. Depois que o Zoiper estiver iniciado:

Figura 7.34: Sistray do Zoiper Lite

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 148

5. Vamos configurar o nosso utilizador IAX2003. Depois de instalado vamos no menu Zoiper

e escolhemos Preferences, Create New IAX account e criamos um nome para a conta.

Figura 7.35: Nova conta no Zoiper

6. Na guia IAX2003 que acabamos de criar inserimos os dados da conta que foi definida no

ficheiro iax.conf.

Figura 7.36: Preferences da conta no Zoiper

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 149

7. Se tudo está correto, na aba da conta aparecerá: IAX2003 (Registrado) (IAX). Agora

podemos fazer chamadas internas e externas. Ainda que não existam muitos provedores

VoIP que trabalham com IAX, esse é um protocolo mais voltado para interligação de

servidores Asterisk. Execute testes e funcionalidades.

Assim como para configurações no sip.conf, após qualquer alteração no ficheiro iax.conf

deve ser executado o comando *CLI> iax2 reload na linha de comando.

Provavelmente o softphone mais utilizado para extensões IAX seja o Zoiper. Ele é um dos

únicos disponíveis no mercado que trabalham com esse protocolo e é facilmente configurado.

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 150

O Asterisk se diferencia dos demais PBXs IP existentes no mercado principalmente devido à

sua flexibilidade. É possível configurá-lo ao gosto do cliente, limitado somente à criatividade de

quem adota a solução. Um dos principais fatores que permite tal poder de customização é a

forma sob a qual o plano de marcação do Asterisk é descrito e que como ele faz a gestão de

seus aplicativos. Estes, por sua vez, são desenvolvidos para permitirem que seu uso não seja

muito restrito. No entanto, nem sempre é possível e por vezes o recurso fica atrelado a um

funcionamento predeterminado, mas em muitas outras é possível fazer o que se deseja

combinando um conjunto de aplicativos e variáveis no próprio plano de marcação ou ainda

utilizando AGIs (scripts que podem ser desenvolvidos em várias linguagens de programação e

estender ainda mais a gama de recursos oferecidos).

A sintaxe O plano de marcação é, por padrão, escrito em detalhes no ficheiro extensions.conf e sua estrutura é dividida em sessões chamadas contextos. Os contextos são definidos entre parentes retos e contêm os padrões de marcação aos quais cada extensão terá acesso dentro do plano de marcação, ou seja, permite dar permissões a determinadas rotas ou aplicativos através do reconhecimento dos dígitos que foram informados.

As regras de marcação, conhecidas como extens ou extensões, seguem a seguinte sintaxe:

exten => <padrão>,<prioridade>,<aplicativo>

Onde <padrão> é o conjunto de dígitos que serão reconhecidos por aquela extensão, <prioridade> é o número da sequência dos aplicativos que serão executados e<aplicativo> é o aplicativo que será executado naquele momento. Por exemplo:

[teste] exten => _600,1,Answer() exten => _600,2,Playback(hello-world) exten => _600,3,HangUp()

No exemplo anterior é definido o contexto teste que reconhece o padrão _600 somente. Quando um utilizador que tiver acesso a esse contexto marcar _600 a chamada será inicialmente atendido pelo aplicativo Answer(), depois será encaminhada para a prioridade 2 onde é executado o áudio hello-word pelo aplicativo Playback() e por último na prioridade 3 a chamada é desligada pelo aplicativo HangUp().

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 151

Para cada novo padrão reconhecido deve-se ter a prioridade 1. Veja:

[teste] exten => _600,1,Answer() exten => _600,2,Playback(hello-world) exten => _600,3,HangUp()

exten => _601,1,Answer() exten => _601,2,Dial(SIP/${EXTEN},60,wWrtT) exten => _601,3,NoOp(${DIALSTATUS}) exten => _601,4,HangUp()

Existem diversos aplicativos para serem executados no plano de marcação. Vejamos a relação de alguns, os quais são os mais utilizados na tabela 01 abaixo:

Aplicação DescriçãoDial(tech/numero,timeout,opções) Executa uma marcação. Onde “tech” é o

tipo do canal que será usado (SIP, IAX2, DAHDI, etc); “timeout” é o tempo que a aplicação ficará chamando o destino antes de considerar como não atendida; e “opções” são parâmetros adicionados à aplicação.

Playback(áudio) Toca um ficheiro do tipo áudio.

Background(áudio) Toca um ficheiro do tipo áudio e permite que sejam recebidos marcações durante sua execução.

WaitExten(timeout) Espera que sejam recebidos dígitos marcados pelo utilizador.

Goto([[contexto,]extensão,]prioridade) “Salta” dentro do plano de marcação para uma prioridade em uma extensão em um contexto.

GotoIf(condição?verdadeiro:[falso]) Vai para o ponto indicado em “verdadeiro”se a condição assim for ou vai para “falso” se estiver definido, caso “falso” for vazio pula para a próxima prioridade.

GotoIfTime(condição do tempo?[[contexto,]extensão,]prioridade)

Se estiver dentro das condições de tempo vai para o ponto especificado no plano de marcação

Authenticate(senha[,opções[,dígitos]]) Authenticate(ficheiros de palavras passe[,opções[,dígitos]]) Authenticate(astdb,d[opções[,digitos]])

Autentica um utilizador de acordo com os parâmetros passados.

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 152

System(comando) Executa um comando na Shell do GNU/Linux.

Answer() Atende uma chamada.

Busy() Indica canal ocupado.

HangUp() Desliga um canal

NoOp(texto) Imprime o texto na consola se estiver com o verbose ativado. Ajuda para fins de depuração.

Set(variável=valor) Seta valores a variáveis de canal (ou ambiente).

SayDigits(números) Informa os dígitos dos números.

SayNumber(número) Informa o número completo.

ChanSpy([canal],[opções]) Espiona um canal ativo.

Monitor(ficheiro,opções) Gravação de chamadas.

Record(ficheiro,opções) Grava um ficheiro de áudio.

MeetMe(conferência,opções) Entre em uma sala de conferência.

VoiceMail(caixa postal[,opções]) Encaminha a chamada para a caixa postal configurada.

VoiceMailMain(caixa postal) Entra na administração da caixa postal.

Queue(fila,opções) Envia a chamada para a fila de atendimento.

AgentLogin(agente,opções) Faz login de um agente na fila de atendimento.

(Un)PauseQueueMemeber(agente) Coloca/Tira de pausa um agente.

Existem diversas outras aplicações disponíveis, para ver quais são, qual a sua sintaxe e utilização consulte na consola do Asterisk através do comando “core show applications” para ter uma listagem completa e uma descrição abreviada de cada uma. Para maiores detalhes digitem o comando “core show applcation <aplicativo>”.

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 153

Mão na massa – 08.02 Descrição: fazer a configuração do nosso plano demarcação. Objetivo: implemetar o plano de marcação para comunicação entre as extensões. Tempo Máximo: 15 minutos. Instruções: vamos iniciar a configuração de nosso plano de marcação. Para isso faça como anteriormente o procedimetno de backup e proceda instruções abaixo:

Criar a estrutura de nosso PBX IP.

[root@pbxip /]# cd /etc/asterisk/ [root@pbxip /]# mkdir pabx [root@pbxip /]# > general.conf [root@pbxip /]# > globals.conf [root@pbxip /]# > recursos.conf

Edite o ficheiro /etc/asterisk/pabx/general.conf e adicione as linhas a seguir:

[root@pbxip /]# vim /etc/asterisk/pabx/general.conf

;-------------------------------------------------- ; “general.conf” - O plano de marcação do Asterisk ; [general] static=yes writeprotect=no priorityjumping=no autofallthrough=yes clearglobalvars=no ; ;---------------------------------------------------

Edite o ficheiro /etc/asterisk/pabx/globals.conf e adicione as linhas a seguir:

[root@pbxip /]# vim /etc/asterisk/pabx/globals.conf

;-------------------------------------------------- ; “globals.conf” - O plano de marcação do Asterisk ; [globals] CONSOLE=Console/dsp ; Interface do console para demonstracao IAXINFO=guest ; IAXtel nome de usuario e senha TRUNKMSD=1 ; Digitos MSD para descascar(normalmente 1 ou 0) FIXO=/DAHDI/G1 MOVEL=/DAHDI/g2 ACH1=SIP/2000 ACH2=SIP/2001&SIP/2002 ACH3=SIP/2003&SIP/2004 ACH4=SIP/2000&SIP/2001&SIP/2002&SIP/2003&SIP/2004 ; ;---------------------------------------------------

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 154

Edite o ficheiro /etc/asterisk/extensions.conf e adicione as linhas a seguir:

[root@pbxip /]# vim /etc/asterisk/extensions.conf

;-------------------------------------------------- ; "extensions.conf" - O plano de marcação do Asterisk; ;-------------------------------------------------- ; Includes PBX IP – Formacao Asterisk ; #include pabx/general.conf #include pabx/globals.conf #include pabx/recursos.conf ;--------------------------------------------------- ; Configurações das extensões ; [interno] Include = local

[externo] include = local include = nacional include = internacional

[local] ;Faz chamadas entre as extensoes. exten => _20XX,1,Dial(SIP/${EXTEN},15,rTt) exten => _20XX,n,GotoIf($["${LIMIT}"="1"]?busy) exten => _20XX,n(busy),Playback(is-curntly-unavail) exten => _20XX,n,HangUp()

[nacional]

[internacional] ; ;---------------------------------------------------

Edite o ficheiro /etc/asterisk/pabx/recursos.conf

;-------------------------------------------------- ; "recursos.conf" - O plano de marcação do Asterisk; ;-------------------------------------------------- ; Recursos do PBX IP – Formacao Asterisk ; [recursos] ;Hello Word exten => _600,1,Answer() exten => _600,2,Playback(hello-word) exten => _600,3,Hangup()

;Teste de Echo ativado. exten => _601,1,Answer() exten => _601,2,Playback(demo-echotest) exten => _601,3,Echo()

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 155

exten => _601,4,Playback(demo-echodone) exten => _601,5,Hangup() ; ;---------------------------------------------------

[root@pbxip /]# rasterisk -x "reload" [root@pbxip /]#

Execute testes e funcionalidades.

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 156

O plano de marcação (dialplan) é verdadeiramente o coração de qualquer sistema Asterisk, já que define como o Asterisk manipula as chamadas que são recebidas e originadas. Em resumo, o plano de marcação (dialplan) consiste de uma lista de instruções ou passos que o Asterisk irá seguir. Estes passos são totalmente personalizáveis.

Sintaxe do Plano de Marcação (dialpan)

O plano de marcação do Asterisk é especificado no ficheiro de configuração chamado de /etc/asterisk/extensions.conf. O plano de marcação é composto de quatro partes principais:

• Contextos; • Extensões; • Prioridades; • Aplicações.

Contextos O plano de marcação é dividido em seções chamadas de contexto, tais contextos evitam que partes diferentes do plano de marcação interajam umas com as outras. Assim, uma extensão (as funções de um grupo) definida em um contexto é completamente isolada das extensões de outro contexto, a não ser que a interação seja especificamente permitida.

Os contextos são denotados pela colocação do nome de contexto dentro de parentes retos [], por exemplo, [interno]. Todas as instruções colocadas depois da definição de um contexto fazem parte do contexto até que seja definido outro contexto.

Um dos mais importantes usos de contextos é garantir a segurança. Pelo uso correto dos contextos, é possível permitir a determinadas pessoas acesso a algumas funções que não serão disponibilizadas a outras.

Extensões Uma extensão é uma instrução que o Asterisk irá seguir e é incluída dentro de cada contexto. A extensão é acionada por uma chamada de entrada ou por dígitos sendo marcados em um canal. Então as extensões especificam o que acontece às chamadas enquanto seguem seu caminho pelo plano de marcação.

A sintaxe para uma extensão é a palavra “exten” seguida por uma seta formada pelo sinal de igual e de maior que (exten =>).

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 157

Uma extensão completa é formada pelos seguintes componentes: • O nome (ou número) da extensão; • A prioridade, na qual cada extensão pode incluir vários passos a ser executado na

chamada; • Aplicação (ou comando) que executa alguma ação na chamada.

Esses três componentes são separados por vírgulas, da seguinte forma: exten => nome,prioridade,aplicação()

Um simples exemplo: exten => 123,1,Answer()

Neste exemplo, o nome da extensão é 123, a prioridade é 1 e a aplicação é Answer().

O nome da extensão. Quando lidamos com sistemas telefônicos, temos a tendência de usar números que devemos digitar para fazer outro telefone tocar, mas no Asterisk é possível fazer muito mais, tal como colocar nomes.

Prioridades Cada extensão pode ter vários passos, chamados de prioridades. Cada prioridade é numerada sequencialmente e cada prioridade executa uma aplicação específica. Por exemplo, a seguinte extensão pode responder a uma chamada (na prioridade 1) e então desligar (na prioridade 2):

exten => 123,1,Answer() exten => 123,2,Hangup()

Atenções as prioridades devem iniciar em 1 e são numeradas consecutivamente. Caso uma prioridade fique fora de ordem numérica o Asterisk não continua depois dela.

As versões mais recentes do Asterisk, a partir da 1.2, é possível usar um truque para enumerar as prioridades, como por exemplo usar o “n” que indica a próxima, ou seja, cada vez que o Asterisk achar um “n” ele pega o número da prioridade anterior e acrescenta mais 1. Por exemplo: exten => 123,1,Answer() exten => 123,n,faça alguma coisa exten => 123,n,faça outra coisa exten => 123,n,Hangup()

É possível ainda acrescentar textos as prioridades, por exemplo:

exten => 123,n(texto),faça algo.

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 158

Aplicações

As aplicações são os cavalos de batalha do plano de marcação. Cada aplicação executa uma ação específica no canal em questão, tal como emitir um som, aceitar uma entrada toque, tom ou desligar a chamada. Algumas aplicações precisam de argumentos a serem passados juntos com as aplicações para determinar como devem executar suas ações. Para passar argumentos às aplicações, coloque-os entre os parênteses curvos que se seguem ao nome da aplicação, separados por vírgulas.

Um simples exemplo de plano de marcação

Vamos criar um plano de marcação simples para entender como este funciona. Em nosso exemplo iremos criar um plano de marcação para que quando a chamada chegar, o Asterisk irá responder à chamada, tocar um ficheiro de áudio e então desligar a chamada. Antes de iniciar o plano de marcação, nós devemos explicar sobre uma extensão especial chamada de extensão “s”, quando as chamadas entram num contexto sem uma extensão específica de destino (por exemplo, uma linha FXO chamado), elas são automaticamente manipuladas pela extensão “s”. O “s” indica início (start).

Nosso plano de marcação irá iniciar com a extensão “s” e executaremos três ações: responder, tocar um ficheiro de áudio e desligar:

[entrada] exten => s,1,Answer() exten => s,2,Playback(hello-world) exten => s,3,Hangup()

A aplicação Answer() É utilizada para responder a um canal que está chamando, isso faz a configuração inicial do canal que recebe a chamada que está entrando, Answer() não tem argumentos.

A aplicação Playback() é utilizada para tocar um ficheiro de áudio previamente gravado sobre um canal. Ao utilizar a aplicação Playback() a entrada do utilizador é simplesmente ignorada. Para utilizar o Playback(), especifique um nome de ficheiro sem extensão como argumento, por exemplo, Playback(musica) que fará tocar musica.gsm. O Asterisk vem com muitos ficheiros de áudio profissionalmente gravados, que podem ser encontrados na pasta de áudio que usualmente é /var/lib/asterisk/sounds.

A aplicação Hangup() desliga o canal ativo e quem está chamando recebe uma indicação que a chamada foi desligada, deve-se utilizar essa aplicação ao final do contexto quando quiser terminar a atual ligação para assegurar que o plano de marcação não continuará sendo utilizado. Essa aplicação não tem argumento.

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 159

O plano de marcação até agora não tem muita utilidade é mais para entender a teoria e testes, caso os canais estejam configurados é possível testá-lo. Vamos tornar o plano de marcação mais dinâmico.

Aplicações Background() e Goto()

Uma chave importante para montar sistemas Asterisk interativos é aplicação Background(), que funciona da mesma forma que a Playback(), mas na Background() quando o chamador pressionar uma tecla, ou uma série de teclas, em seu telefone, ela interrompe a música (ou um som qualquer, exemplo um menu de voz) e vai para a extensão que corresponder ao(s) dígito(s) pressionado(s) . Se o chamador pressiona o 5, por exemplo, o Asterisk irá para de tocar o arquivo de som e enviar o controle da chamada para a primeira prioridade de extensão 5.

exten =>123,1,Background(hello-world)

O uso mais comum da aplicação Background() é criar menus de vozes , frequentemente chamados de Auto tendentes). Muitas empresas criam menus de vozes para dirigir as chamadas para as extensões adequadas, aliviando, assim suas operadoras a cada chamada.

Outra aplicação útil é Goto(), que é usada para enviar a chamada para outro contexto, extensão e prioridade. A aplicação Goto() torna fácil se mover programaticamente uma chamada entre duas partes diferentes do plano de marcação. A sintaxe para a aplicação Goto() nos pede que passemos os argumentos do contexto, da extensão e da prioridade para a aplicação, da seguinte forma:

exten => 123,1,Goto(contexto,extensão,prioridade)

Neste próximo exemplo, iremos tocar o ficheiro de amostra de áudio chamado de vm-enter-num-to-call.gsm. E depois adicionar duas extensões que serão acionadas pelo chamador ao inserir 1 ou 2 no telefone.

[entrada] exten => s,1,Answer() exten => s,2,Background(vm-enter-num-to-call) exten => 1,1,Playback(digits/1) exten => 1,2,Goto(incoming,s,1) exten => 2,1,Playback(digits/2) exten => 2,2,Goto(incoming,s,1)

Então quando os utilizadores chamam nosso plano de marcação, eles vão ouvir uma saudação, e devem inserir um dígito, se eles pressionarem 1, irão ouvir o número 1 e, se pressionarem o número 2, irão ouvir o número 2. E o Goto() irá fazer tudo ser repetido.

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 160

Manipulando entradas inválidas e tempos decorridos

Bem com os exemplos anteriores temos um menu de voz, mas é preciso controlar algumas anomalias, a primeira é a entrada inválida de um utilizador, tal função é feita pela extensão

“i”.

Outra situação é quando o utilizador não digita uma entrada a tempo (o tempo provisório é de 10 segundos), estas chamadas devem ser tratadas pela extensão “ t” se o chamador demorar a Pressionar um digito depois que Background() tiver terminado de tocar o arquivo de som.

[entrada] exten => s,1,Answer() exten => s,2,Background(vm-enter-num-to-call) exten => 1,1,Playback(digits/1) exten => 1,2,Goto(incoming,s,1) exten => 2,1,Playback(digits/2) exten => 2,2,Goto(incoming,s,1) exten => i,1,Playback(pbx-invalid) exten => i,2,Goto(incoming,s,1) exten => t,1,Playback(vm-goodbye) exten => t,2,Hangup()

Uso da aplicação Dial()

Uma das mais importantes características do Asterisk é sua habilidade para conectar diferentes chamadores, uns com os outros. Isso é especialmente útil se os chamadores aplicarem diferentes métodos de comunicação (SIP, H.323, PSTN, etc).

A sintaxe da aplicação Dial() é um pouco mais complexa que as das outras aplicações, já que utiliza 4 argumentos.

O primeiro argumento é o destino que está tentando chamar, que é feito de uma tecnologia por meio do qual será feita a chamada, uma barra normal e o recurso remoto (normalmente um nome ou número de canal). Exemplo:

exten => 123,1,Dial(DAHDI/1)

Neste exemplo assumimos que queremos chamar um canal DAHDI chamando DAHDI/1, que é um canal FXS com um fone analógico conectado. A tecnologia é “DAHDI” e o recurso é “1”, e o 123 indica que o Asterisk deve chamar o canal DAHDI/1 quando forem digitados 123.

Também é possível chamar vários canais ao mesmo tempo:

exten => 123,1,Dial(DAHDI/1&DAHDI/2&DAHDI/3)

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 161

A aplicação Dial() irá ligar a chamada a aquele que atender primeiro. O segundo argumento da aplicação Dial() é o tempo decorrido, especificado em segundos. Se não for especificado um tempo, o telefone irá continuar tocando até alguém atender ou que a pessoa chamando desista.

exten => 123,1,Dial(DAHDI/1,10)

Se a chamada for atendida antes do tempo decorrido, os canais são ligados e o plano de marcação será concluído. Se o destino simplesmente não responder, Dial() vai para a próxima prioridade na extensão. Se, entretanto, o canal de destino estiver ocupado, Dial()irá para a prioridade n+101 , se a prioridade existir (onde n é a prioridade onde a aplicação Dial() foi chamada). Isso nos permite manipular chamadas não respondidas de maneira diferente das chamadas cujos destinos estavam ocupados.

exten => 123,1,Dial(DAHDI/1,10) exten => 123,2,Playback(vm-nobodavail) exten => 123,3,Hangup() exten => 123,102,Playback(tt-allbusy) exten => 123,103,hangup()

O terceiro argumento de Dial() é uma sequência opcional, que pode conter um ou mais caracteres que modificam o comportamento da aplicação Dial(), esta lista é muito grande, então iremos ver apenas a letra “ r” que é a mais usada, esta opção indica que a pessoa que fez a chamada irá ouvir um tom de chamada enquanto o canal de destino estiver sendo notificado que está sendo chamado, mas nem sempre isto é necessário, pois o Asterisk pode automaticamente fazer tal tom.

exten => 123,1,Dial(DAHDI/1,10,r)

Vamos fazer agora um plano de marcação que permita que falemos com John e Jane.

[entrada] exten => s,1,Answer() exten => s,2,Background(enter-ext-of-person) exten => 101,1,Dial(DAHDI/1,10) exten => 101,2,Playback(vm-nobodyavail) exten => 101.3,Hangup() exten => 101,102,Playback(tt-allbusy) exten => 102,1,Dial(SIP/Jane,10) exten => 102,2,Playback(vm-nobodyavail) exten => 102,3,Hangup() exten => 102,102,Playback(tt-allbusy) exten => 102,103,Hangup() exten => i,1,Playback(pbx-invalid) exten => i,2,Goto(entrada,s,1)

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 162

exten => t,1,Playback(vm-goodbye) exten => t,2,Hangup()

O quarto e último argumento da aplicação Dial() é um URL, assim, se o canal de destino tem a capacidade de receber um URL no momento da chamada, a URL especificada será enviada, este argumento é raramente utilizado. Qualquer um desses argumento de Dial() podem ser deixados em branco.

exten => 123,1,Dial(DAHDI/1,,r)

Contexto para tratar as chamadas internas

Bem depois de entender como funciona basicamente o plano de marcação iremos entender como criar mais de um contexto e fazer estes interagirem, lembre que é essa uma das funções do plano de marcação. Então vamos criar um contexto chamado (extensões) internas e configurar a capacidade dessas duas extensões para ligar uma para a outra, este novo contexto vai se chamar [interno]. Nós iremos deduzir que já esteja configurado um canal FXS DAHDI (DAHDI/1) e um canal FXO (DAHDI/4) que utilizam o canal [entrada] e um ou mais canal SIP (SIP/jane), que está configurado no contexto [interno].

Nosso plano de marcação vai ser da seguinte forma:

[entrada] exten => s,1,Answer() exten => s,2,Background(enter-ext-of-person) exten => 101,1,Dial(DAHDI/1,10) exten => 101,2,Playback(vm-nobodyavail) exten => 101,3,Hangup() exten => 101,102,Playback(tt-allbusy) exten => 101,103,Hangup() exten => 102,1,Dial(SIP/jane,10) exten => 102,2,Playback(vm-nobodyavail) exten => 102,3,Hangup() exten => 102,102,Playback(tt-allbusy) exten => 102,103,Hangup() exten => i,1,Playback(pbx-invalid) exten => i,2,Goto(entrada,s,1) exten => t,1,Playback(vm-goodbye) exten => t,2,Hangup()

[interno] exten => 101,1,Dial(DAHDI/1,,r) exten => 102,1,Dial(SIP/jane,,r)

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 163

Neste exemplo, foi adicionado duas novas extensões ao contexto [interno]. Dessa forma, a pessoa que estiver utilizando o canal DAHDI/1 pode pegar o fone e chamar a pessoa que está no canal SIP/Jane digitando 102. Pela mesma razão, o telefone registrado como SIP/Jane pode chamar DAHDI/1 digitando 101.

Até agora só foi usado três dígitos, mas é possível utilizar até 80 caracteres, ou seja, também é possível usar letras, é claro que o terminal vai ter de suportar caracteres.

[interno] exten => 101,1,Dial(DAHDI/1,,r) exten => john,1,Dial(DAHDI/1,,r) exten => 102,1,Dial(SIP/jane,,r) exten => jane,1,Dial(SIP/jane,,r)

Uso de variáveis

As variáveis podem ser utilizadas em um plano de marcação do Asterisk para ajudar a reduzir a digitação, melhorar a clareza ou acrescentar lógica ao plano de marcação. No Asterisk existem duas formas de referenciar uma variável. Para referenciar o nome da variável, é necessário digitar simplesmente o nome da variável, tal como JOHN. Se, por outro lado for necessário a cessar o valor da variável, deve-se digitar um símbolo de dólar, abrir uma chaveta, o nome da variável e fechar a chaveta. Exemplo ${JOHN}.

JOHN=DAHDI/1 exten => 555,1,Dial(${JOHN},,r)

Que é igual á:

exten => 555,1,Dial(DAHDI/1,,r)

Existem três tipos de variáveis no Asterisk: globais, de canal e de ambiente. Variáveis globais: Se aplicam a todas as extensões em todos os contextos, assim, é possível utilizar as variáveis globais em qualquer lugar do plano de marcação. As variáveis globais podem ser declaradas no contexto [globals] no início do ficheiro extensions.conf. Ou podem ser definidas programaticamente, usando-se a aplicação SetGlobalVar().

[globals] JOHN=DAHDI/1 Ou [interno] exten => 123,1,SetGlobalVar(JOHN=DAHDI/1)

Variáveis de Canal: É uma variável que é somente associada a uma chamada em particular, ou seja, são definidas somente na duração da chamada atual e estão disponíveis somente para o canal que está participando dessa chamada.

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 164

As variáveis de canal são definidas por meio da aplicação Set()

exten => 123,1,Set(MAGICNUNBER=42)

Variáveis de Ambiente: são uma forma de acesso as variáveis do ambiente UNIX de dentro do Asterisk. E são referenciadas na forma de ${ENV(variável)}, onde variável é o nome da variável UNIX.

Adaptação de modelos

Será impossível acrescentar cada possível extensão ao plano de marcação, especialmente o caso das chamadas para fora. Imagine um plano de marcação com uma extensão para todos os números que se pode marcar? Impossível não é! Felizmente, o Asterisk tem uma forma para solucionar isso: adaptação de modelos, que permite que se utilize uma seção de código para muitas extensões diferentes.

Sintaxe da adaptação de modelos

Ao utilizar a adaptação de modelos, é necessário utilizar letras e símbolos para representar os possíveis dígitos que queremos adaptar. Os modelos sempre começam com um sublinhado (_). Isso diz ao Asterisk que estamos adaptando sobre um modelo, e não um nome de extensão.

Depois do sublinhado, deve-se utilizar um ou mais dos seguintes caracteres:

X Adapta qualquer dígito de 0 a 9. Z Adapta qualquer dígito de 1 a 9. N Adapta qualquer dígito de 2 a 9.

[17] Adapta qualquer dígito na faixa indicada. No caso do 1 ao 7.

Para utilizar a adaptação de modelos no plano de marcação, simplesmente é necessário colocar no lugar do nome ou número da extensão a adaptação:

exten => _NXX,1,Playback(auth-thankyou)

Neste exemplo, o modelo deve adaptar quaisquer extensões de 3 dígitos de 200 a 999 (lembre-se o N adapta qualquer dígito entre 2 e 9, e cada X entre 0 e 9. Isto que dizer que se um utilizador marcou qualquer extensão de 3 dígitos entre 200 a 999 nesse contexto, ele deverá ouvir o ficheiro de áudio atuth-tahkyou.gsm.

Se tiver mais do que um modelo que se adapte a chamada (a extensão marcada) o Asterisk utilizará o mais específico. Digamos que tenha-se digitado 5551212:

exten => _555XXXX,1,Playback(digits/1)

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 165

exten => _55512,1,Playback(digits/2)

Neste caso, o utilizador ouvirá o digito 2

Uso de variável de canal $(EXTEN)

Bem e se tivermos que saber quais números foram discados em uma adaptação de contexto? Bem neste caso o Asterisk define a variável de canal ${EXTEN} para os dígitos que foram marcados. Nós podemos usar uma aplicação chamada SayDigits() para testar esta funcionalidade.

exten => _XXX,1,SayDigits(${EXTEN})

Frequentemente, é útil se manipular o ${EXTEN} removendo um certo número de dígitos da frente da extensão. Isto é feito usando-se a sintaxe ${EXTEN:x}, onde x; e o número de dígitos que quer se remover.

Por exemplo, se o valor de EXTEN é 95551212, então ${EXTEN:1} é 5551212.

exten => _XXX,1,SayDigits(${EXTEN:1})

Se o x for negativo será obtido os últimos dígitos x da extensão marcada.

exten => _XXX,1,SayDigits(${EXTEN:-1})

Habilitações de marcação de ligações externas

Agora que já foi apresentado a adaptação de modelos, podemos fazer ligações externas. Então podemos acrescentar uma variável ao contexto [globals] para definir quais canais serão utilizados para fazer ligações externas:

[globals] JOHN=DAHDI/1 JANE=SIP/jane OUTBOUNDTRUNK=DAHDI/4

Vamos criar um contexto para ligações externas, isto é necessário para colocar um pouco de segurança, regular e controlar as ligações externas (quem pode fazer ligações externas). Então vamos criar um contexto chamado [saídas-local]. Vamos usar o número 9 no início, de forma que os utilizadores deveram usar o 9 para chamar um número externo.

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 166

[saidas-local] exten => _9NXXXXXX,1,Dial(${OUTBOUNDTRUNK}/${EXTEN:1}) exten => _9NXXXXXX,2,Congestion() exten => _9NXXXXXX,102,Congestion()

Então neste contexto anterior, nós acrescentamos uma variável global chamada OUTBOUNDTRUNK, que irá controlar qual extensão será utilizada para fazer ligações externas.

Nós também adicionamos um contexto para ligações externas locais. Na prioridade 1, nós pegamos a extensão marcada, eliminando o 9 com a sintaxe ${EXTEN:1} e então tentamos discar aquele número no canal significando pela variável OUTBOUNDTRUNK.

Se a chamada funcionar, o chamador é ligado ao canal de saída. Se a chamada falhar, por que o canal está ocupado, ou porque o número não pode ser discado por qualquer razão, a aplicação Congestion() é chamada e toca um “sinal de ocupado”, para permitir que o chamador saiba que sua chamada falhou.

Ao discar o 9 não será fornecido realmente uma linha externa como em um sistema PABX tradicional, mas sim aparecerá um silêncio, caso queira-se um tom de marcação adicione ao contexto:

ignorepat => 9

Que diz ao Asterisk para continuar a tocar o tom de marcação mesmo depois de o chamador discar o 9. É sempre interessante permitir que o plano de marcação possa marcar para números de emergência:

[saidas-local] exten => _9NXXXXXX,1,Dial(${OUTBOUNDTRUNK}/${EXTEN:1}) exten => _9NXXXXXX,2,Congestion() exten => _9NXXXXXX,102,Congestion() exten => 190,1,Dial(${OUTBOUNDTRUNK}/190)

Includes

O Asterisk permite que utilizemos um contexto dentro de outro contexto por meio da diretiva include. Assim o include é utilizado para fornecer acesso a diferentes seções do plao de marcação. Nós utilizaremos a funcionalidade include para permitir que o utilizador do contexto [interno] (da rede local) tenham a capacidade de fazer chamadas para telefones externos (rede PSTN, no nosso caso).

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 167

Estrutura do include

A definição de include toma a seguinte forma, em que context é o nome do contexto remoto que gostaríamos de incluir no contexto atual:

include => context

Quando existirem contextos dentro do contexto atual, é necessário observar a ordem em que estamos incluindo os contextos, já que o Asterisk irá primeiro tentar corresponder a extensão do contexto atual, se este falhar o Asterisk chamará o primeiro que aparecer e se der errado o próximo e assim por diante, na ordem que forem incluídos.

Vamos ao último exemplo usando os inclusos:

[globals] JOHN=DAHDI/1 JANE=SIP/jane OUTBOUNDTRUNK=DAHDI/4

[entrada] exten => s,1,Answer() exten => s,2,Background(enter-ext-of-person) exten => 101,1,Dial(DAHDI/1,10) exten => 101,2,Playback(vm-nobodyavail) exten => 101,3,Hangup() exten => 101,102,Playback(tt-allbusy) exten => 101,103,Hangup() exten => 102,1,Dial(SIP/jane,10) exten => 102,2,Playback(vm-nobodyavail) exten => 102,3,Hangup() exten => 102,102,Playback(tt-allbusy) exten => 102,103,Hangup() exten => i,1,Playback(pbx-invalid) exten => i,2,Goto(entrada,s,1) exten => t,1,Playback(vm-goodbye) exten => t,2,Hangup()

[interno] include => saidas-local exten => 101,1,Dial(DAHDI/1,,r) exten => 102,1,Dial(SIP/jane,,r)

[saidas-local] exten => _9NXXXXXX,1,Dial(${OUTBOUNDTRUNK}/${EXTEN:1}) exten => _9NXXXXXX,2,Congestion()

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 168

exten => _9NXXXXXX,102,Congestion() exten => 190,1,Dial(${OUTBOUNDTRUNK}/190)

O include possibilita que utilizadores do contexto [interno] façam chamadas externas. Vamos aqui aproveitar e falar que alem das mascaras existem quatro extensões especiais:

• t (timeout): é utilizada quando o um aplicativo que espera a entrada de dígitos pelo utilizador (geralmente o WaitExten) e não é digitado nada, por exemplo, em um IVR no caso de uma mensagem de “aguarde para ser atendido”. Entrou em desuso na versão 1.6 do Asterisk;

• i (invalid): é utilizado no mesmo aplicativo anterior, porém o utilizador digita um número inválido, por exemplo, na IVR existem as opções 1, 2 e 3, mas o utilizador digita qualquer outra coisa diferente disso;

• s (start): é utilizada quando não é necessário o reconhecimento de dígitos, normalmente utilizada em macros, por exemplo;

• h (hangup): toda vez que uma chamada é desligada no plano de marcação pelo aplicativo HangUp() é encaminhada para a extensão h, se houver, no mesmo contexto.

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 169

Qualquer tipo de atendimento automático pode ser configurado no plano de marcação do Asterisk.

• IVR é a abreviatura de Interactive Voice Response. Trate-se de um sistema utilizado por empresas de call center (atendimento) para que possam ser marcado opções no atendimento eletrônico.

• De uma forma geral, um IVR é um microcomputador convencional, ao qual se agrega um Hardware específico para realizar as tarefas de telefonia (tais como atender, marcar, desligar, reconhecer marcação, falar, etc), e um Software que controle este hardware de forma a atender a objetivos específicos.

• As placas variam de acordo com a quantidade de canais que se deseja atender simultaneamente, o tipo de linha telefônica a que se destina (analógicas ou digitais) e à funcionalidades específicas, tais como fax, reconhecimento de fala, reconhecimento de pulsos analógicos, e outros.

• Reconhecimento de fala, a partir do final da década de 90, a tecnologia de reconhecimento de fala passou a ser confiável e comercialmente alcançável por muitas organizações. Ainda que permaneça um recurso que implica custos altos, muitas vezes o retorno obtido com o investimento indica o seu uso.

• A tecnologia consiste em reconhecer na fala do utilizador palavras-chave que funcionam como marcadores de desvio no fluxo seguido pelo IVR. O caso mais simples é o reconhecimento de dígitos isolados, quando um cliente ao invés de digitar ou discar os dígitos no telefone pode-se falar estes dígitos (“um”, “sete”, “nove”, “quatro” por exemplo).

• Um caso intermediário é o reconhecimento de números compostos, letras e certas palavras-chaves tais como “setecentos e quatorze”, “L”, “Z”, “SIM”, “NÃO”. O caso mais complexo é o reconhecimento de “fala natural”, quando se pode extrair dados a partir de um discurso mais complexo, tal como “aplicar mil e duzentos dólares na minha conta de previdência privada”. Como “fala natural” entenda-se discursos limitados de gramática conhecida em determinado contexto do fluxo do IVR.

Mão na massa – 09.01 Descrição: vamos agregar recursos ao Asterisk, criando facilidades. Objetivo: facilidades. Tempo Máximo: 30 minutos. Instruções: em seu aparelho IP marque com o viva voz ativado para a extensão 600, observe que o prompts (áudio) esta em Inglês. Iremos agora alterar o prompts (áudio) para português.

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 170

Copie o diretório do prompts em português fornecido pelo instrutor para o diretório /var/lib/asterisk/sounds/.

Figura 9.1: Cópia de ficheiros com o WinSCP.

Segure o diretório pt do lado esquerdo e solte sobre o diretório sounds do lado direito. Vai abrir a tela de cópia clique no botão “Copy”.

Figura 9.2: Cópia de ficheiros com o WinSCP.

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 171

Janela de progresso.

Figura 9.3: Cópia de ficheiros com o WinSCP.

Agora que o diretório de prompts em português está em nosso Servidor Asterisk, faça o “reload” no servidor:

Figura 9.4: Cópia de ficheiros com o WinSCP.

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 172

[root@pbxip asterisk]# rasterisk -x "reload" [root@pbxip asterisk]#

Agora ligue do seu telefone IP para a extensão 600, se tudo deu certo o prompts do nosso Servidor Asterisk estará em português. Caso queira realize os mesmos procedimentos para prompts “br”.

Mão na massa – 09.02 Descrição: Neste laboratório nós iremos configurar variável global para utilizar no contexto do Asterisk e um IVR com controlo de horário de atendimento. Objetivo: Configurando variável global e IVR. Tempo Máximo: 15 minutos. Instruções: vamos realizar algumas inovações em nosso Servidor Asterisk. Hora Certa: vamos criar uma variável global para nossa extensão Hora Certa:

[root@pbxip /]# vim /etc/asterisk/pabx/globals.conf

;-------------------------------------------------- ; Configuracoes Globais – Formacao Asterisk ; [globals] CONSOLE=Console/dsp ;Interface do console para demonstracao IAXINFO=guest ;IAXtel nome de utilizador e palavra passe TRUNKMSD=1 ;Digitos MSD para descascar (normalmente 1 ou 0) FIXO=/DAHDI/G1 MOVEL=/DAHDI/G2 ACH1=SIP/2000 ACH2=SIP/2001&SIP/2002 ACH3=SIP/2003&SIP/2004 ACH3=SIP/2000&SIP/2001&SIP/2002&SIP/2003&SIP/2004 HORA=602 ; ;----------------------------------------------------

Salve e saia: :wq

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 173

Agora no ficheiro recursos.conf adicione o contexto da hora.

[root@pbxip /]# vim /etc/asterisk/pabx/recursos.conf

;-------------------------------------------------- ; "recursos.conf" - O plano de marcação do Asterisk; ;-------------------------------------------------- ; Recursos do PBX IP – Formacao Asterisk ; [recursos] ;Hello Word exten => _600,1,Answer() exten => _600,2,Playback(hello-word) exten => _600,3,Hangup()

;Teste de Echo ativado. exten => _601,1,Answer() exten => _601,2,Playback(demo-echotest) exten => _601,3,Echo() exten => _601,4,Playback(demo-echodone) exten => _601,5,Hangup()

;Hora certa exten => ${HORA},1,Answer exten => ${HORA},n,Wait(1) exten => ${HORA},n,Set(NumLoops=0) exten => ${HORA},n(start),Set(FutureTime=$[${EPOCH} + 11],.hours.) exten => ${HORA},n,Playback(at-tone-time-exactly) exten => ${HORA},n,GotoIf($["${TIMEFORMAT}" = "kM"]?hr24format) exten => ${HORA},n,SayUnixTime(${FutureTime},,IM .and. S .seconds. p) exten => ${HORA},n,Goto(waitloop) exten => ${HORA},n(hr24format),SayUnixTime(${FutureTime},,k .hours. .and. M. minutes.) exten => ${HORA},n(waitloop),Set(TimeLeft=$[${FutureTime} - ${EPOCH}]) exten => ${HORA},n,GotoIf($[${TimeLeft} < 1]?playbeep) exten => ${HORA},n,Wait(1) exten => ${HORA},n,Goto(waitloop) exten => ${HORA},n(playbeep),Playback(beep) exten => ${HORA},n,Wait(5) exten => ${HORA},n,Set(NumLoops=$[${NumLoops} + 1]) exten => ${HORA},n,GotoIf($[${NumLoops} < 5]?start) exten => ${HORA},n,Playback(goodbye) exten => ${HORA},n,Hangup ; ;---------------------------------------------------

Salve e saia: :wq

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 174

Para montar nossa IVR iremos copiar os prompts fornecido pelo instrutor no seguinte caminho “/var/lib/asterisk/sounds/pt/custom/”.

Figura 9.5: Cópia de ficheiros com o WinSCP.

[root@pbxip ~]# rasterisk -x "reload" [root@pbxip ~]#

Agora iremos criar nosso ficheiro de Atendimento Automático de Chamadas (AAC) um modelo simples de IVR. Siga os procedimentos abaixo descritos:

[root@pbxip /]# vim /etc/asterisk/pabx/atendimento.conf

;------------------------------------------------------------- ; "atendimento.conf"->“extensions.conf”-Plano de marcação do Asterisk ;------------------------------------------------------------- ; Configuracao de AAC chamadas com controlo de horario ;[atendimento] exten => s,1,Answer() exten => s,n,Set(ARQGRAVA=${CDR(uniqueid)}) exten => s,n,MixMonitor(${ARQGRAVA}.wav,ba) exten => s,n,GotoIfTime(19:00-23:59,*,*,*?boanoite) exten => s,n,GotoIfTime(00:00-05:59,*,*,*?boanoite) exten => s,n,GotoIfTime(06:00-07:59,*,*,*?bomdia) exten => s,n,GotoIfTime(08:00-11:59,*,*,*?bomdiaam) exten => s,n,GotoIfTime(12:00-12:59,*,*,*?meiodia) exten => s,n,GotoIfTime(13:00-17:59,*,*,*?boatarde) exten => s,n,GotoIfTime(18:00-18:59,*,*,*?boatardepm)

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 175

; Bom dia exten => s,n(bomdia),Wait(3) exten => s,n,BackGround(br/custom/melodia) exten => s,n,BackGround(br/custom/bomdia) exten => s,n,BackGround(br/custom/atendimento) exten => s,n,BackGround(br/custom/tenhabomdia) exten => s,n,HangUp() exten => s,n,Goto(reload)

; Bom dia AM exten => s,n(bomdiaam),Wait(3) exten => s,n,BackGround(br/custom/melodia) exten => s,n,BackGround(br/custom/bomdia) exten => s,n,BackGround(br/custom/atendimento) exten => s,n,BackGround(br/custom/tenhabomdia) exten => s,n,HangUp() exten => s,n,Goto(reload)

; Meio dia exten => s,n(meiodia),Wait(3) exten => s,n,BackGround(br/custom/melodia) exten => s,n,BackGround(br/custom/bomdia) exten => s,n,BackGround(br/custom/atendimento) exten => s,n,BackGround(br/custom/tenhabomdia) exten => s,n,HangUp() exten => s,n,Goto(reload)

; Boa tarde exten => s,n(boatarde),Wait(3) exten => s,n,BackGround(br/custom/melodia) exten => s,n,BackGround(br/custom/boatarde) exten => s,n,BackGround(br/custom/atendimento) exten => s,n,BackGround(br/custom/tenhaboatarde) exten => s,n,HangUp() exten => s,n,Goto(reload)

; Boa tarde PM exten => s,n(boatardepm),Wait(3) exten => s,n,BackGround(br/custom/melodia) exten => s,n,BackGround(br/custom/boatarde) exten => s,n,BackGround(br/custom/atendimento) exten => s,n,BackGround(br/custom/tenhaboatarde) exten => s,n,HangUp() exten => s,n,Goto(reload) ; Boa Noite exten => s,n(boanoite),Wait(3)

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 176

exten => s,n,BackGround(br/custom/melodia) exten => s,n,BackGround(br/custom/boanoite) exten => s,n,BackGround(br/custom/atendimento) exten => s,n,BackGround(br/custom/tenhaboanoite) exten => s,n,HangUp() exten => s,n,Goto(reload)

; FIM (reload) exten => s,n(reload),NoOp(!!! Recarregando o menu !!!) ; ;-----------------------------------------------------

Salve o ficheiro e saia: :wq

Agora vamos realizar o include ficheiro no extensions.conf e o include do contexto no contexto [local]:

[root@pbxip /]# vim /etc/asterisk/extensions.conf … #include pabx/atendimento.conf … [interno]

[local] ;Teste do IVR (AAC) include => dahdi-00-00

[nacional]

[internacional] ; ;--------------------------------------------------------------------- ; Configuracao Recebimento de chamadas pela Placa Digium [dahdi-00-00] exten => _30XX,1,Answer() exten => _30XX,n,Set(ARQGRAVA=${CDR(uniqueid)}) exten => _30XX,n,MixMonitor(${ARQGRAVA}.wav,ba) exten => _30XX,n,Goto(atendimento,s,1) exten => _30XX,n,HangUp() ; ;----------------------------------------------------------------------Salve o ficheiro e saia: :wq[root@pbxip /]# rasterisk -x "reload" [root@pbxip /]#

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 177

Agora realize o reload no Servidor Asterisk e faça o teste marcando para o contexto 3000, tudo ocorrendo bem deverá ouvir nossa IVR.

Vamos nos aventurar neste metodo, vamos fazer nossa rota de entrada consultar números de atendimento diferenciados. Os numeros correspondente a um departamento. Caso o número não seja os da condição o atendimento procede no IVR “atendimento.conf”. Quando a condição for os númeors do outro departamento (que chamaremos de corretores) o procedimento de atendimento será no IVR “corretores.conf”.

Vamos realizar os procedimentos descritos abaixo:

[root@pbxip /]# vim /etc/asterisk/pabx/corretores.conf

Ou ainda pode copiar o ficheiro atendimento.conf para corretores.conf e realizar as mudanças como esta descrita abaixo:

[root@pbxip /]# cd /etc/asterisk/pabx/ [root@pbxip /]# cp -a atendimento.conf corretores.conf [root@pbxip pabx]# vim corretores.conf ;------------------------------------------------------------- ; "corretores.conf"->“extensions.conf” - Plano de marcação do Asterisk ;------------------------------------------------------------- ; Configuracao de AAC com controlo de horario ; [corretores] exten => s,1,GotoIfTime(19:00-23:59,*,*,*?boanoite) exten => s,n,GotoIfTime(00:00-05:59,*,*,*?boanoite) exten => s,n,GotoIfTime(06:00-07:59,*,*,*?bomdia) exten => s,n,GotoIfTime(08:00-11:59,*,*,*?bomdiaam) exten => s,n,GotoIfTime(12:00-12:59,*,*,*?meiodia) exten => s,n,GotoIfTime(13:00-17:59,*,*,*?boatarde) exten => s,n,GotoIfTime(18:00-18:59,*,*,*?boatardepm)

; Bom dia exten => s,n(bomdia),Wait(2) exten => s,n,NoOp(Bloco Bom Dia) exten => s,n,BackGround(br/custom/melodia) exten => s,n,BackGround(br/custom/bomdia) exten => s,n,BackGround(br/custom/foradehora) exten => s,n,HangUp() exten => s,n,Goto(reload)

; Bom dia AM exten => s,n(bomdiaam),Wait(2) exten => s,n,NoOp(Bloco Bom Dia AM) exten => s,n,BackGround(br/custom/melodia)

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 178

exten => s,n,BackGround(br/custom/bomdia) exten => s,n,BackGround(br/custom/dentrodahora) exten => s,n,Goto(trydial)

; Meio dia exten => s,n(meiodia),Wait(2) exten => s,n,NoOp(Bloco Meio Dia) exten => s,n,BackGround(br/custom/melodia) exten => s,n,BackGround(br/custom/bomdia) exten => s,n,BackGround(br/custom/dentrodahora) exten => s,n,Goto(trydial)

; Boa tarde exten => s,n(boatarde),Wait(2) exten => s,n,NoOp(Bloco Boa Tarde) exten => s,n,BackGround(br/custom/melodia) exten => s,n,BackGround(br/custom/boatarde) exten => s,n,BackGround(br/custom/dentrodahora) exten => s,n,Goto(trydial)

; Boa tarde PM exten => s,n(boatardepm),Wait(2) exten => s,n,NoOp(Bloco Boa Tarde PM) exten => s,n,BackGround(br/custom/melodia) exten => s,n,BackGround(br/custom/boatarde) exten => s,n,BackGround(br/custom/dentrodahora) exten => s,n,Goto(trydial)

; Boa Noite exten => s,n(boanoite),Wait(2) exten => s,n,NoOp(Bloco Boa Noite) exten => s,n,BackGround(br/custom/melodia) exten => s,n,BackGround(br/custom/boanoite) exten => s,n,BackGround(br/custom/foradehora) exten => s,n,HangUp() exten => s,n,Goto(reload)

; Trydial exten => s,n(trydial),Dial(${ACH1},60,rTt) exten => s,n,GotoIf($["${DIALSTATUS}"="ANSWER"]?reload) exten => s,n,Dial(${ACH2},55,rTt) exten => s,n,GotoIf($["${DIALSTATUS}"="ANSWER"]?reload) exten => s,n,Dial(${ACH3},50,rTt) exten => s,n,Goto(reload)

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 179

; FIM (reload) exten => s,n(reload),NoOp(!!! Recarregando o menu !!!) ; ;---------------------------------------------------------------

Salve o ficheiro e saia: :wq

Agora iremos realizar alteração na rota de entradada dahdi-00-00, vamos deixar assim:

[root@pbxip pabx]# cd .. [root@pbxip asterisk]# vim extensions.conf ; ;--------------------------------------------------------------------- ; Configuracao Recebimento de chamadas pela Placa E1 da Digium ; [dahdi-00-00] exten => _30XX,1,Answer() exten => _30XX,n,Set(ARQGRAVA=${CDR(uniqueid)}) exten => _30XX,n,Set(NUMENTRADA=${EXTEN}) exten => _30XX,n,MixMonitor(${ARQGRAVA}.wav,ba) exten => _30XX,n,GotoIf($[$["${NUMENTRADA}"="3031"]|$["${NUMENTRADA}"="3032"]]?nop) exten => _30XX,n,Goto(atendimento,s,1) exten => _30XX,n(nop),Goto(corretores,s,1) exten => _30XX,n,HangUp() ; ;--------------------------------------------------------------------- Salve o ficheiro e saia: :wq

Agora realize o seguinte procedimento:

[root@pbxip asterisk]# vim extensions.conf

;--------------------------------------------------------------------- ; Include PBX IP - Formação Asterisk ; #include pabx/general.conf #include pabx/globals.conf #include pabx/facilidades.conf #include pabx/atendimento.conf #include pabx/corretores.conf ;--------------------------------------------------------------------- Salve o ficheiro e saia: :wq

[root@pbxip asterisk]# rasterisk -x "reload"

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 180

O correto para este contexto funcionar em uma placa Digium é como o descrito daabaixo: ;-------------------------------------------------- ; Configuracao Recebimento de chamadas pela Placa E1 da Digium ;[dahdi-00-00] ;exten => _X.,1,Answer() ;exten => _X.,n,Set(ARQGRAVA=${CDR(uniqueid)}) ;exten => _X.,n,Set(NUMENTRADA=${EXTEN}) ;exten => _X.,n,AGI(blacklist_entrante.php,${CALLERID}) ;exten => _X.,n,MixMonitor(${ARQGRAVA}.wav,ba) ;exten => _X.,n,GotoIf($[$["${NUMENTRADA}"="0531"]|$["${NUMENTRADA}"="8397"]]?nop) ;exten => _X.,n,Goto(telemarketing,s,1) ;exten => _X.,n(nop),Goto(corretores,s,1) ;exten => _X.,n,HangUp() ; ;------------------------------------------------- ; Configuracao De Entrada Placa GSM da Digium canal 00 ;[dahdi-01-00] ;exten => s,1,Answer() ;exten => s,n,Set(ARQGRAVA=${CDR(uniqueid)}) ;exten => s,n,MixMonitor(${ARQGRAVA}.wav,ba) ;exten => s,n,Goto(atendimento,s,1) ;exten => s,n,HangUp() ; ;------------------------------------------------- ; Configuracao De Entrada Placa GSM da Digium Canal 01 ;[dahdi-01-01] ;exten => s,1,Answer() ;exten => s,n,Set(ARQGRAVA=${CDR(uniqueid)}) ;exten => s,n,MixMonitor(${ARQGRAVA}.wav,ba) ;exten => s,n,Goto(atendimento,s,1) ;exten => s,n,HangUp() ; ;------------------------------------------------- ; Configuracao De Entrada Placa GSM Digium Canal 02 ;[dahdi-01-02] ;exten => s,1,Answer() ;exten => s,n,Set(ARQGRAVA=${CDR(uniqueid)}) ;exten => s,n,MixMonitor(${ARQGRAVA}.wav,ba) ;exten => s,n,Goto(atendimento,s,1) ;exten => s,n,HangUp() ; ;------------------------------------------------- ; Configuracao De Entrada Placa GSM Digium Canal 03 ;[dahdi-01-03]

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 181

;exten => s,1,Answer() ;exten => s,1,Set(ARQGRAVA=${CDR(uniqueid)}) ;exten => s,2,MixMonitor(${ARQGRAVA}.wav,ba) ;exten => s,3,Goto(atendimento,s,1) ;exten => s,4,HangUp() ; ;------------------------------------------------- ; Configuracao De Entrada Placa GSM Digium Canal 00 ;[dahdi-02-00] ;exten => s,1,Answer() ;exten => s,n,Set(ARQGRAVA=${CDR(uniqueid)}) ;exten => s,n,MixMonitor(${ARQGRAVA}.wav,ba) ;exten => s,n,Goto(atendimento,s,1) ;exten => s,n,HangUp() ; ;------------------------------------------------- ; Configuracao De Entrada Placa GSM Digium Canal 01 ;[dahdi-02-01] ;exten => s,1,Answer() ;exten => s,n,Set(ARQGRAVA=${CDR(uniqueid)}) ;exten => s,n,MixMonitor(${ARQGRAVA}.wav,ba) ;exten => s,n,Goto(atendimento,s,1) ;exten => s,n,HangUp() ; ;------------------------------------------------- ; Configuracao De Entrada Placa GSM Digium Canal 02 ;[dahdi-02-02] ;exten => s,1,Answer() ;exten => s,n,Set(ARQGRAVA=${CDR(uniqueid)}) ;exten => s,n,MixMonitor(${ARQGRAVA}.wav,ba) ;exten => s,n,Goto(atendimento,s,1) ;exten => s,n,HangUp() ; ;------------------------------------------------- ; Configuracao De Entrada Placa GSM Digium Canal 03 ;[dahdi-02-03] ;exten => s,1,Answer() ;exten => s,1,Set(ARQGRAVA=${CDR(uniqueid)}) ;exten => s,2,MixMonitor(${ARQGRAVA}.wav,ba) ;exten => s,3,Goto(atendimento,s,1) ;exten => s,4,HangUp() ; ;---------------------------------------------------

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 182

Vamos escrever um IVR simples, porém que tem grande utilização em diversas empresas. Vamos supor que será configurado um PBX IP para uma empresa que presta serviços de TI. Once a extensão 2000 atende o suporte para o sistema operativo GNU/Linux, o 2001 é da área comercial e o 2002 é da telefonista.

A IVR deve ter o menu principal “Você ligou para a empresa XPTO. Digite 1 para Suporte ao GNU/Linux, 2 para Comercial ou 9 para falar com a telefonista”. Caso seja digitado mais de 3 vezes uma opção incorreta ou não for digitado nada a chamada deverá ser direcionada para a telefonista. Antes de direcionar para a extensão correspondente deve ser tocada a mensagem “Por favor aguarde estamos transferindo sua chamada”.

Inicialmente vamos criar duas extensões no contexto [local] para efetuar a gravação das mensagens e uma exten para acessar o IVR para os testes funcionais.

[root@pbxip /]# vim /etc/asterisk/extensions.conf

;-------------------------------------------------- ; "extensions.conf" - O plano de marcação do Asterisk; ;-------------------------------------------------- ; Includes PBX IP – Formacao Asterisk ; #include pabx/general.conf #include pabx/globals.conf #include pabx/recursos.conf #include pabx/atendimento.conf ;--------------------------------------------------- ; Configurações das extensões ; [interno] Include => local

[externo] include => local include => nacional include => internacional

[local] ;Teste do IVR (AAC) include => dahdi-00-00

;Faz chamadas entre as extensoes. exten => _20XX,1,Dial(SIP/${EXTEN},15,rTt) exten => _20XX,n,GotoIf($["${LIMIT}"="1"]?busy) exten => _20XX,n(busy),Playback(is-curntly-unavail) exten => _20XX,n,HangUp()

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 183

exten => *99,1,Record(saudacao) exten => *99,n,Wait(1) exten => *99,n,Playback(saudacao) exten => *99,n,HangUp()

exten => *98,1,Record(aguarde) exten => *98,n,Wait(1) exten => *98,n,Playback(aguarde) exten => *98,n,HangUp()

exten => *97,1,Goto(ivrinput,s,1)

[nacional]

[internacional] ; ;--------------------------------------------------------------------- ; Configuracao Recebimento de chamadas pela Placa Digium [dahdi-00-00] exten => _30XX,1,Answer() exten => _30XX,n,Set(ARQGRAVA=${CDR(uniqueid)}) exten => _30XX,n,MixMonitor(${ARQGRAVA}.wav,ba) exten => _30XX,n,Goto(atendimento,s,1) exten => _30XX,n,HangUp() ; ;---------------------------------------------------

Salve o ficheiro e saia: :wq[root@pbxip /]# rasterisk -x "reload" [root@pbxip /]#

Quando for digitidado *99 ou *98 você vai ouvir um bip; após o qual você deve falar a mensagem. Quando terminar pressione # (sustenido), após 1 segundo será reproduzido a mensagem de áudio que você gravou. Repita a operação, quantas vezes achar necessário.

Agora vamos configurar a IVR propriamente dita. Crie em /etc/asterisk/pabx/ um ficheiro com o nome ivrimput.conf

[root@pbxip /] # vim /etc/asterisk/pabx/ivrimput.conf

;------------------------------------------------------- ; IVRIMPUT – Formacao Asterisk [ivrimput] exten => s,1,Answer() exten => s,n,Set(CONTADOR=0) exten => s,n(inicio), Background(saudacao) exten => s,n,WaitExten(3)

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 184

exten => s,n,Goto(i,1)

exten => 1,1,Playback(aguarde) exten => 1,n,Dial(SIP/2000,15,wWtT)

exten => 2,1,Playback(aguarde) exten => 2,n,Dial(SIP/2001,15,wWtT)

exten => 9,1,Playback(aguarde) exten => 9,n,Dial(SIP/2002,16,wWtT)

exten => i,1,Set(CONTADOR=${CONTADOR}+1) exten => i,n,GotoIf($[${CONTADOR} < 3]?s,inicio) exten => i,n,Dial(SIP/2002,15,wWtT) ; ;----------------------------------------------------------

Salve o ficheiro e saia: :wq

Agora retornamos ao ficheiro extensions.conf e procedemos com o include do ficheiro ivrimput.conf;

[root@pbxip /]# vim /etc/asterisk/extensions.conf

;-------------------------------------------------- ; "extensions.conf" - O plano de marcação do Asterisk; ;-------------------------------------------------- ; Includes PBX IP – Formacao Asterisk ; #include pabx/general.conf #include pabx/globals.conf #include pabx/recursos.conf #include pabx/atendimento.conf #include pabx/corretores.conf #include pabx/ivrimput.conf ;--------------------------------------------------- ; Configurações das extensões ; [interno] Include => local

[externo] include => local include => nacional include => internacional

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 185

[local] ;Teste do IVR (AAC) include => dahdi-00-00

;Teste do IVRIMPUT include => ivrimput

;Faz chamadas entre as extensoes. exten => _20XX,1,Dial(SIP/${EXTEN},15,rTt) exten => _20XX,n,GotoIf($["${LIMIT}"="1"]?busy) exten => _20XX,n(busy),Playback(is-curntly-unavail) exten => _20XX,n,HangUp()

exten => *99,1,Record(saudacao) exten => *99,n,Wait(1) exten => *99,n,Playback(saudacao) exten => *99,n,HangUp()

exten => *98,1,Record(aguarde) exten => *98,n,Wait(1) exten => *98,n,Playback(aguarde) exten => *98,n,HangUp()

exten => *97,1,Goto(ivrinput,s,1)

[nacional]

[internacional] ; ;--------------------------------------------------------------------- ; Configuracao Recebimento de chamadas pela Placa Digium [dahdi-00-00] exten => _30XX,1,Answer() exten => _30XX,n,Set(ARQGRAVA=${CDR(uniqueid)}) exten => _30XX,n,MixMonitor(${ARQGRAVA}.wav,ba) exten => _30XX,n,Goto(atendimento,s,1) exten => _30XX,n,HangUp() ; ;---------------------------------------------------

Salve o ficheiro e saia: :wq[root@pbxip /]# rasterisk -x "reload" [root@pbxip /]#

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 186

Consideração sobre a configuração da IVR Na IVR utilizamos a extensão especial “s” pois não havia dígitos que necessitassem serem reconhecidos para iniciar seu fluxo. Foi criado o código *97 no contexto [local] para encaminhar a chamada para o IVRIMPUT. Com o “Set” setamos a variável ${CONTADOR} que servirá como controle das repetições. Em “s,n(inicio)” é tocada a mensagem de saudação com o aplicativo Background() pois não queremos que o utilizador tenha de esperar até o final da mensagem para digitar a opção desejada.

Com “s,n,WaitExten()” esperamos por 3 segundos o utilizador digitar algo se anda não o tiver feito. Caso nada seja digitado até o limite de 3 segundos, o script irá para a linha seguinte que direciona para o incremento da variável ${CONTADOR}.

Caso seja pelo utilizador marcado 1, a chamada irá então para a extensão 2000. Caso seja pelo utilizador marcado 2, a chamada irá então para a extensão 2001. Caso seja pelo utilizador marcado 3, a chamada irá então para a extensão 2002.

Se for digitado pelo utilizador algo diferente de 1, 2 e 9 a chamada cairá na extensão especial “i”, onde é feito o incremento da variável ${CONTADOR}. Em seguida é verificado se o valor que está na variável ${CONTADOR} é menor que 3; se positivo o script volta para a extensão “s,n(inicio)” e o processo é retomado; caso negativo envia a chamada para a telefonista (2002).

Teste o funcionamento da IVR marcando o código *97 do seu softphone. Seguindo esse modelo você estará apto a criar IVRs com diversos níveis sem a necessidade de qualquer módulo externo. Pesquise sobre os aplicativos disponíveis no Asterisk para configurar estruturas cada vez mais elaboradas.

Asterisk in

A verdadeira arte do conhecimento é compartilhar o conhecimento!

Tipos de Placas de Comutação

Estas placas estão disponíveis tanto para telefonia analógicas como digitais e dentro de cada uma das categorias existem as siguintes subcategorias:

Figura

Figura 10.2: Placa Digium Digitais E1/T1/J1 e BRI ou PRI.

nProprietário – A telefonia Hoje!

A verdadeira arte do conhecimento é compartilhar o conhecimento!

Tipos de Placas de Comutação

Estas placas estão disponíveis tanto para telefonia analógicas como digitais e dentro de cada uma das categorias existem as siguintes subcategorias:

Figura 10.1: Placa Digium Analógica FXO e FXS.

10.2: Placa Digium Digitais E1/T1/J1 e BRI ou PRI.

A telefonia Hoje! 2010

Página 187

Estas placas estão disponíveis tanto para telefonia analógicas como digitais e dentro de cada

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 188

Hardware modular

Existem fabricantes que desenham seus hardwares de maneira modular, de tal forma que pode ser expansível de acordo com a sua necessidade.

Figura 10.3: Placa Modular FXO e/ou FXS.

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 189

Fabricantes suportados

Asterisk suporta muitos modelos e fabricantes de Placas de Comutação. Os seguintes são os que tem os modelos suportados oficialmente, nesta data:

Figura 10.4: Marcas que fabricam para Asterisk.

Mão na massa – 10.01 Descrição: iremos apreender a configurar Asterisk 1.6 com MD3200 em ubuntu Server 8.10. Objetivo: Configurando hardware. Tempo Máximo: 30 minutos. Instruções: Devido à falta de documentação em português a respeito, fez com que resultada-se este documento, na intenção de documentar os procedimentos de como instalar e configurar o Asterisk 1.6 com a API DAHDI, o novo nome para o já conhecido ZAPTEL. Após várias pesquisas, o que está aqui são dias de estudos e testes e muitos erros para chegar ao procedimento correto. Informações sobre novas funções na versão 1.6 do Asterisk em relação à 1.4 você encontra aqui:

http://svn.digium.com/view/asterisk/tags/1.6.0/CHANGES?view=markup

O que é DAHDI?

A API DAHDI (Digium Asterisk Hardware Device Interface) é o novo nome e versão para o ZAPTEL, por questões de copyright a Digium precisou alterar seu nome.

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 190

Estrutura do código:

O DAHDI foi dividido em dois conjuntos de pacotes: dahdi-tools que são programas e utilitários e dahdi-linux que contém os módulos para o kernel. Essa divisão ocorreu para facilitar futuras atualizações.

Instalação de pendências

Agora você instalará pacotes necessários para rodar o Asterisk 1.6 com DAHDI 2.0. Os testes apresentados foram feitos em um Ubuntu Server 8.10.

Siga os seguintes passos:

1 – Atualize o sistema # apt-get update # apt-get upgrade

2 – Instalem os headers do kernel # apt-get install linux-headers-`uname –r`

3 – Crie um link simbólico para os headers em “/usr/src/linux” # ln –s /usr/src/ linux-headers-‘uname –r’ /usr/src/Linux

4 – Instale os pacotes necessários para o Asterisk, e DAHDI #apt-get install bison openssl libssl-dev libasound2-dev libc6-dev libnewt-dev libncurses5-dev zlib1g-dev gcc g++ make libusb-dev fxload

Baixando, extraindo e instalando os pacotes

1 – Certifique-se de que você está em /usr/src e baixe os pacotes: # wget http://ftp.digium.com/pub/asterisk/asterisk-1.6.0.1.tar.gz # wget http://downloads.digium.com/pub/telephony/libpri/libpri-1.4.8.tar.gz # wget http://downloads.digium.com/pub/telephony/dahdi-linux/dahdi-linux-2.1.0.3.tar.gz # wget http://downloads.digium.com/pub/telephony/dahdi-tools/dahdi-tools-2.1.0.2.tar.gz

2 – Extraiam os pacotes # tar xvzf asterisk-1.6.0.1.tar.gz # tar xvzf libpri-1.4.8.tar.gz # tar xzvf dahdi-linux-2.1.0.tar.gz # tar xzvf dahdi-tools-2.1.0.tar.gz

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 191

3 – Compile o dahdi-linux # make # make install

4 – Compilem o dahdi-tools # ./configure # ./make # ./make install # ./make config

Se tudo ocorreu certo, você verá uma tela parecida com esta:

Figura 10.4: Configuração DAHDI.

Repare que o DAHDI já faz o reconhecimento da placa. Neste caso, o sistema a reconheceu como “Wildcard X101P clone” e o módulo que essa placa usa é o “wcfxo”. Sabendo o módulo que ela usa agora edite o ficheiro /etc/dahdi/modules. Por padrão o DAHDI carrega todos os módulos, porém esta placa usa apenas o “wcfxo”, então edite o ficheiro deixando somente este.

Reinicie o servidor agora e então verifique se existe algum conflito de endereços com o fax modem. É muito importante que não haja conflito de IRQ, pois o VOIP é muito sensível e o processamento de áudio no servidor deve ter preferência assim como pedidos entrantes (IRQs). Para saber mais sobre IRQs você pode acessar esse excelente artigo no Guia do Hardware:

http://www.guiadohardware.net/tutoriais/irq-dma-io/

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 192

Verifique as interrupções com o comando:

# cat /proc/interrupts

Aqui, teve-se o seguinte retorno:

Figura 10.5: Configuração DAHDI.

Como se pode ver, o módulo wcfxo está usando a IRQ 17 e nenhum outro módulo está usando o mesmo endereço. Caso nenhum conflito seja identificado, então você já pode continuar, se detectar algum conflito então é importante que o resolva. Para isso desative na BIOS, portas seriais, paralelas e outras que não esteja usando. Você pode também trocar o fax modem de SLOT na sua placa mãe, isso vai funcionar dependendo do modelo desta.

Você já pode agora, carregar os módulos:

# modprobe dahdi # modprobe wcfxo

5 – Compilando o libpri. Entre na pasta libpri-1.4.8 e execute: # make # make install

6 – Finalmente, compile o asterisk. Atualmente a última versão disponível é o 1.6.0.2, porém em alguns testes identificaram-se problemas ao tentar instalá-lo. Por isso, é recomendado instalar a versão 1.6.0.1 que até o momento não se registrou nenhum problema. Para instalá-la, execute:

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 193

# ./configure # make # make install # make samples // instala os exemplos # make config

Configuração do DAHDI

Com o DAHDI usam-se outros ficheiros para fazer a configuração do fax modem /etc/zaptel.conf agora é /etc/dahdi/system.conf e /etc/asterisk/Zapata.conf agora é /etc/asterisk/chan_dahdi.conf.

/etc/dahdi/system.conf: nesse ficheiro configura-se o cancelamento de eco, carregamento de zona padrão (tom da linha), canais FXS, FXO entre outras coisas.

Sobre cancelador de eco. DAHDI usa módulos canceladores de eco que são configurados por canal. Estes são compilados e instalados como junto ao pacote dahdi-linux. Você pode especificar no system.conf o cancelador de eco a ser usado por canal. Por padrão, não se usa cancelador de eco para nenhum canal, mais é muito importante que você especifique um cancelador aqui, caso não tenha nenhum hardware que o faça, como é o caso.

O system.conf ficará assim:

loadzone = br defaultzone = br fxsks = 1 channels=1 ; 1canais da placa echocanceller=mg2,1 ; cancelador de eco para o canal

/etc/asterisk/chan_dahdi.conf: aqui configura-se a sinalização, o conexto, grupo e canal:

[channels] txgain=10.5 ; usa-se aumento em dbi máximo pois o som padrão é muito baixo rxgain=10.5 ; usa-se aumento em dbi máximo pois o som padrão é muito baixo echotraining=Yes ; ativa cancelamento de eco context=default signalling=fxs_ks group=1 channel => 1

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 194

Feito isso, defina as configurações: # dahdi_cfg –vvvvvv

Se tudo ocorreu bem, você verá a seguinte tela:

Figura 10.6: Resposta dahdi-cfg.

Até aqui você instalou o Asterisk 1.6 com o DAHDI 2.0 e já fez as devidas configurações para que o fax modem MD3200 funcione. Basta você fazer agora, as configurações de grupos e extensões.

Configurando grupos e ramais

Configurando sip.conf:

Inicialmente permita que utilizadores se conectem usando o codec ulaw. Para isso procure no ficheiro a definição “allow=ulaw” e retire o “;” da frente.

Agora crie uma extensão para fazer e receber ligações do computador. Vá até o fim do ficheiro sip.conf e então insira:

[1] type=friend ; pode receber e fazer ligações callerid=1 ; id do cliente username=1 ; nome secret=1 ; senha host=dynamic ; IP do cliente não é fixo context=default ; contexto padrão

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 195

Configurando extensions.conf:

[general] static=yes writeprotect=no autofallthrough=yes clearglobalvars=no priorityjumping=no

[default] ; ligação para ramais ; ramal 1 exten => 1,2,dial(SIP/1) ; ao ligar para o ramal 1, chama o ramal 1

;Ligação usando a linha PSTN (através da MD3200). Com essa configuração ao digitar 0, o ;usuário ouvirá o tom da linha externa (a PSTN), então é só iniciar a ligação normalmente exten => 0,1,dial(DAHDI/1,20,r) ; note que aqui usa-se DAHDI e não ZAP

; configuração da ligação vinda da rede pública (PSTN) exten => s,1,Answer ; atende a ligação exten => s,n,playback(demo-thanks) ; roda gravação de agradecimentos exten => s,n,dial(SIP/1) ; redireciona a ligação para o ramal 1

Iniciando testes

Agora você já pode iniciar o Asterisk rodando o comando: # asterisk -vvvvvgc

Inicie o x-lite, ou o softphone de sua preferência, faça a configuração para a extensão 1 e então marque 0 para fazer uma ligação normal, usando a PSTN. Depois você pode usar um telemóvel e chamar para sua PSTN (que você instalou no fax modem) e então você ouvirá a mensagem de agradecimentos e em seguida seu x-lite irá tocar. Bons testes!

Conclusão

Asterisk é uma ótima solução de PABX baseado em código livre. São inúmeras as possibilidades de uso, como central telefônica digital, IVR (URA - Unidade de resposta audível) sem falar em aplicações customizadas. Que tal acionar o alarme de sua casa pelo telefone? Com Asterisk isso é possível! Nesta receita de bolo demonstrei como fazer a configuração para que um simples fax modem sirva como entrada do mundo exterior, usando a rede PSTN, sem mistérios. A partir daqui você pode implementá-lo de acordo com suas necessidades e aprender muito com isso. Pelos testes feitos, aprovou-se o funcionamento do Asterisk 1.6 com o fax modem MD3200.

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 196

Referências http://www.voip-info.org/ http://docs.tzafrir.org.il/dahdi-tools/#_sample_system_conf http://www.openvox.com.cn/downloadsFile/Install_A1200P-A800P_with_Dahdi.pdf http://site.asteriskguide.com/FreeChapters123pt.htm http://www.astricon.net/2008/glendale/web/presentations/DAHDI_Overview.pdf

Mão na massa – 10.02 Descrição: iremos apreender a configurar hardware no Asterisk. Objetivo: Conhecer os procedimentos de configuração DAHDI. Tempo Máximo: 30 minutos.

Instruções: Canais analógicos e digitais: Neste momento iremos ver como configurar placas Digium para trabalhar com a sinalização ISDN e também como configurar canais FXO e FXS utilizandos em placas da Digium ou em bancos de canais que utilizaem os drivers DAHDI. Descreverei o procedimento de trabalhar com as placas Digium por serem nativas do Asterisk. No entanto, existem outros fabricantes, que possuem hardwares muito bons e especialmente desenvolvidos para a sinalização em questão. Cada fabricante possui seus próprios ficheiros de configuração, cabe estudá-los individualmente e caso necessário entrar em contato com o suporte oferecido por eles.

Configuração de placas Digium com sinalização ISDN: Após a compilação do DAHDI, o procedimento criou um ficheiro de exemplo, chamado system.conf na pasta /etc/dahdi/ com o hardware que o próprio sistema irá identificar. Os modelos de placas disponíveis podem ser encontrados diretamente no sitio da Digium ou diretamente com seu distribuidor. Para E1s a Digium fabrica placas com 1,2,ou 4 E1s, com barramentos PCI e PCI Express.

Vamos apenas alterar as configurações desse ficheiro conforme for necessário. Os primeiros parâmetros que iremos mudar serão o loadzone e o defaultzone para receberm o valor pt. Esses parâmetros indicam que será utilizado o padrão de sinalização e de tons aplicados a Portugal, pois as diferenças existentes nos demais países pode atrapalhar a detecção de atendimento e desligamento de chamadas, por exemplo, caso esses parâmetros não estejam configurados adequadamente.

Em seguida vem a configuração dos canais que estiverem disponíveis na placa. Cada porta na placa é chamada de span no ficheiro de configuração. A sintaxe de configuração dos spans é a seguinte:

span = <número do span>,<fonte detiming>,<LBO>,<framing>,<codificação>

Onde: <Número do span>: número da porta na placa;

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 197

<Fonte de timing>: setamos 1 se a placa for fonte primária de clock (geralmente, a fonte de clock do Asterisk é uma placa TDM, caso você não possua, pode usar o driver ztdummy que utiliza a porta USB como fonte de temporização no kernel 2.4 e o RTC no kernel versão 2.6), 2 se for secundária e assim por diante. Se for setado como 0 a placa não servirá como fonte de clock, apenas receberá de fontes externas. Normalmente quando ligado a um PABX coloca-se com 1 e quando ligado à rede pública colocamso como 0;

<LBO> (line build-out): indica a que distância está o modem do servidor. Os valores aceitos são: 0: 0 db (CSU / 0-133 feet (DSX-1) 1: 133-266 feet (DSX-1) 2: 266-399 feet (DSX-1) 3: 399-533 feet (DSX-1) 4: 533-655 feet (DSX-1) 5: -7.5db (CSU) 6: -15db (CSU) 7: -22.5db (CSU) Normalmente, os equipamentos estão próximos, portanto usa-se o valor 0.

<framing>: tipo da sinalização. Para T1 usa-se d4 ou esf para E1; cas para MFC/R2 e ccs para ISDN; para BRI, ccs.

<codificação>: indica a codificação usada na sinalização. Para T1 use ami ou b8zs; para E1, amiou hdb3; para BRI, ami. Normalmente usarão hdb3 por ser padrão para Portugal e Brasil. Algumas operadoras exigem que seja configurado o CRC4 que é uma forma específica de enviar os quadros. Deve ser perguntado à operadora se o CRC está ativado ou não no momento da instalação do link. Abaixo da linha de span, virão os canais que pertencem a ele.

O parâmetro bchan indica o canal de sinalização. Lembre-se de que no E1 com sinalização ISDN são 30 canais de áudio e 1 de sinalização (o central). Supondo que uma placa com dois E1s esteja plugada no servidor, sendo o span 1 ligado à PSTN sem CRC e o span 2 ligado a um PBX legado com CRC ativado, a configuração seria a seguinte:

loadzone=pt defaultzone=pt

span=1,1,0,ccs,hdb3 bchan=1-15,17-31 dchan=16

span=2,0,0,ccs,hdb3,crc4 bchan=32-46,48-62 dchan=47

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 198

Dessa forma já se tem o driver da placa configurado no Linux. Para saber se o link alinhou via linha de comando existe o comando dahdi_tools que deve ser digitado no shell. Se o status retornar OK, o link está alinhado, se estiver RED existe um provável problema físico e se estiver YEL pode ser um problema de configuração como CRC ativado ou desativado. O mesmo vale para o comando de terminal dahdi show status.

Com o driver configurado, temos agora de configurar como o Asterisk irá enxergar esses canais. Para isso é configurado o ficheiro /etc/asterisk/chan_dahdi.conf, nele é onde descrevemos os parâmetros que definirão o comportamento do driver. Praticamente todas as configurações dos canais ficam dentro da sessão [channels]. Veja a lista de parâmetros mais importantes configurados no ficheiro na tabela 02 abaixo:

Parâmetro Descrição Padrãopritimer=<ISDN timer>,<valor> Permite configurar os timers do ISDN. -

busydetect=yes/no Habilita a detecção de tom de ocupado.

yes

busycount=<número> Número de vezes que será tocado o tom de ocupado antes de desligar a chamada.

-

language=<língua> Padrão de linguagem en_US

switchtype=<tipo sinalização> Tipo da sinalização ISDN usado nos canais definidos abaixo desse parâmetro. Em Portugal a maioria dos casos é “euroisdn”

-

pridialplan=<plano de númeração>

Define o plano de numeração que será usado no ISDN. Na maioria dos casos deixar como “unknown” deve resolver.

-

prilocaldialplan=<plano de numeração do chamador>

Define o plano de numeração do chamador (origem). Normalmente o padrão deve resolvel.

National

overlapdial=yes/no Habilita ou desabilita a marcação no modo overlapdial.

No

echocancel=yes/no Habilita o cancelamento de eco. -

echocancelwhenbridged=yes/no Habilita o cancelamento de eco No

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 199

quando a chamada entrar por um span e sair por outra. Geralmente usase não é necessário.

relaxdtmf=yes/no Ativa maior sensibilidade na detecção de DTMF

No

signalling=<sinalização> Define a sinalização dos canais que forem definidos abaixo desse parâmetro ou até que encontre nova definição. Se estiver ligando à rede pública deverá ser usado “pri_cpe” (slave), se for a um PABX será “pri_net”(master).

-

group=<número> Define o grupo de canais ao qual pertencerá os canais configurados abaixo desse parâmetro.

-

context=<contexto> A qual contexto os canais que estiverem abaixo definidos terão acesso.

-

channel=><canal inicial>-<canal final>

Define o range de canais que receberão as configurações que estiverem acima desse parâmetro.

Vamos alterar o ficheiro /etc/asterisk/chan_dahdi.conf com as configurações que desejarmos. Segue um exemplo:

[channels] pritimer => t305,5000 busydetect=yes busycount=5 language=pt pridialplan=unknown prilocaldialplan=national echocancel=yes echocancelwhenbridged=no relaxdtmf=no switchtype=euroisdn context=externo group=1 signalling=pri_cpe

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 200

channel=>1-15,17-31 switchtype=euroisdn context=interno group=2 signalling=pri_net channel=>32-46,48-62

No ficheiro acima temos um canal de E1 configurado com a rede pública, portanto a sinalização usada será “euroisdn”. O contexto quando entrarem chamadas por este link será o “externo”, o grupo 1 será slave e os canais são todos do span (porta) da primeira placa. Dessa forma quando formos marcar para a rede pública usaremos o aplictivo Dial para o grupo 1, com isso temos de fazer o seguinte configuração em nosso “Plano de Marcação” (extensions.conf):

[root@pbxip /]# vim /etc/asterisk/extensions.conf

;-------------------------------------------------- ; "extensions.conf" - O plano de marcação do Asterisk; ;-------------------------------------------------- ; Includes PBX IP – Formacao Asterisk ; #include pabx/general.conf #include pabx/globals.conf #include pabx/recursos.conf #include pabx/atendimento.conf ;--------------------------------------------------- ; Configurações das extensões ; [interno] Include => local

[externo] include => local include => nacional include => internacional

[local] ;Teste do IVR (AAC) include => dahdi-00-00

;Faz chamadas entre as extensoes. exten => _20XX,1,Dial(SIP/${EXTEN},15,rTt) exten => _20XX,n,GotoIf($["${LIMIT}"="1"]?busy) exten => _20XX,n(busy),Playback(is-curntly-unavail) exten => _20XX,n,HangUp()

exten => *99,1,Record(saudacao) exten => *99,n,Wait(1) exten => *99,n,Playback(saudacao) exten => *99,n,HangUp()

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 201

exten => *98,1,Record(aguarde) exten => *98,n,Wait(1) exten => *98,n,Playback(aguarde) exten => *98,n,HangUp()

exten => *97,1,Goto(ivrinput,s,1)

[nacional] exten => _NXXXXXXXX,1,Dial(DAHDI/g1/${EXTEN},60,wWtT)

[internacional] ; ;--------------------------------------------------------------------- ; Configuracao Recebimento de chamadas pela Placa Digium [dahdi-00-00] exten => _30XX,1,Answer() exten => _30XX,n,Set(ARQGRAVA=${CDR(uniqueid)}) exten => _30XX,n,MixMonitor(${ARQGRAVA}.wav,ba) exten => _30XX,n,Goto(atendimento,s,1) exten => _30XX,n,HangUp() ; ;---------------------------------------------------

Salve o ficheiro e saia: :wq

[root@pbxip /]# rasterisk -x "reload" [root@pbxip /]#

Onde “g1” indica que a chamada saíra pelo grupo 1 de forma a alocar para ela o primeiro canal livre de forma ascendente. Se quiser alocar de forma descendente deve-se usar o “G1”, caso for circular ascendente informe o parâmetro “r1” e se for circular descendente, informe o parâmetro “R1”.

Configuração de canais FXO e FXS em drivers DAHDI: quando forem utilizadas placas analógicas Digium ou bancos de canais que tenham drivers relacionados ao pacote DAHDI, devemos configurar esses canais também no ficheiro system.conf. Caso você tenha uma placa de E1 instalada juntamente com esses canais, provavelmente os canais do E1 serão reconhecidos primeiro em seguida serão reconhecidos os canais FXS e FXO. Basicamente, a configuração necessária a ser feita no ficheiro system.conf é a identificação dos canais. É importante lembrar que os canais FXS são identificados por “fxoks” e os FXO são identificados por “fxsks”, ou seja, você identifica o tipo de dispositivo que será conectado na outra ponta dessa porta Canais FXS são portas geradoras de tom, onde ligamos extensões. Canais FXO são portas que recebem o tom, onde ligamos interfaces de telemóveis (GSM) ou linhas analógicas vindas da rede pública (trunks - tronco).

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 202

Supondo que você tenha a placa de E1 que configuramos acima e uma placa analógica (essa placa é modular e pode receber até quatro módulos individuais comprados separadamente, se nessário, FXS ou FXO) com duas portas FXS e duas FXO, a configuração seria a seguinte no seu ficheiro system.conf.

loadzone=pt defaulzone=br

span=1,1,0,ccs,hdb3 bchan=1-15,17-31 dchan=16

span=2,0,0,ccs,hdb3,crc4 bchan=32-46,48-62 dchan=47

fxoks=63-64

fxskx=65-66

No ficheiro /etc/asterisk/chan_dahdi.conf devemos configurar adequadamente as extensões (canais FXS) e os troncos (canais FXO – trunks). Para as extensões, vamos configurar de forma semelhante ao que fizemos no ficheiro sip.conf e no chan_dahdi.conf atribuindo informações específicas a cada canal que seja extensão. Vamos adicionar ao final do ficheiro as configurações das extensões: “signalling=fxo_ks”. Note que a sinalização é “invertida”, ou seja, fxo_ks para canais FXS.

;Porta 1 callerid=”Porta 4” <2010> contexto=externo callgroup=1 pickupgroup=1 channel=>63

;Porta 2 callerid=”Porta 5” <2011> contexto=interno callgroup=1 pickupgroup=1 mailbox=2011 channel=>64

Os parâmetros usados têm as mesmas funções que vimos nos outros ficheiros. Como não há necessidade de registrar um dispositivo IP a esses canais, não existem informações como nome de utilizador e palavra passe a ser informada. Para os canais FXO vamos adicionar mais

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 203

alguns parâmetros dependendo do que estamos ligando a essas portas. Veja abaixo o exemplo de configuração comentado com os parâmetros que não foram usados ainda:

context=telemovel group=3 busydetect=yes ;(ativa a detecção de tom de ocupado) busycount=4 ;(quantos tons serão contados antes de derrubar a chamada) relaxdtmf=no echocancel=no echocancelwhenbridged=yes signalling=fxs_ks ;(note que a sinalização é “invertida”, ou seja, fxs_ks para canais FXO) rxgain=10.0 ;(ajusta o volume de recebimetno. Pode variar de -12.0 a +12.0 db) txgain=2.0 ;(ajusta o volume de saída) answeronpolarityswitch=yes ;(rechonhece o atendimento quando ocorrer a inversão de polaridade) hanguponpolarityswitch=yes ;(Reconhece o desligamento quando ocorrer inversão de polaridade) channel=>65-66

No plano de marcação, para chamar as extensões FXS deveremos fazer a chamada na porta específica da placa ou banco de canais:

[root@pbxip /]# vim /etc/asterisk/extensions.conf

;-------------------------------------------------- ; "extensions.conf" - O plano de marcação do Asterisk; ;-------------------------------------------------- ; Includes PBX IP – Formacao Asterisk ; #include pabx/general.conf #include pabx/globals.conf #include pabx/recursos.conf #include pabx/atendimento.conf ;--------------------------------------------------- ; Configurações das extensões ; [interno] Include => local

[externo] include => local include => nacional include => internacional

[local] ;Teste do IVR (AAC) include => dahdi-00-00

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 204

;Faz chamadas entre as extensoes. exten => _20XX,1,Dial(SIP/${EXTEN},15,rTt) exten => _20XX,n,GotoIf($["${LIMIT}"="1"]?busy) exten => _20XX,n(busy),Playback(is-curntly-unavail) exten => _20XX,n,HangUp()

exten => _2XXX,1,Dial(DAHDI/63/${EXTEN},60,wWtT)

exten => *99,1,Record(saudacao) exten => *99,n,Wait(1) exten => *99,n,Playback(saudacao) exten => *99,n,HangUp()

exten => *98,1,Record(aguarde) exten => *98,n,Wait(1) exten => *98,n,Playback(aguarde) exten => *98,n,HangUp()

exten => *97,1,Goto(ivrinput,s,1)

[nacional] exten => _NXXXXXXXX,1,Dial(DAHDI/g1/${EXTEN},60,wWtT)

[internacional] ; ;--------------------------------------------------------------------- ; Configuracao Recebimento de chamadas pela Placa Digium [dahdi-00-00] exten => _30XX,1,Answer() exten => _30XX,n,Set(ARQGRAVA=${CDR(uniqueid)}) exten => _30XX,n,MixMonitor(${ARQGRAVA}.wav,ba) exten => _30XX,n,Goto(atendimento,s,1) exten => _30XX,n,HangUp() ; ;---------------------------------------------------

Salve o ficheiro e saia: :wq

[root@pbxip /]# rasterisk -x "reload" [root@pbxip /]#

Esse é um dos problemas obtidos ao usar canais FXS, caso não tenhamos um padrão para calcular ou fazer uma manipulação de string para chamar a porta correta. Neste caso, deve-se criar uma extensão (contexto) para cada extensão. Para realzar chamadas utilizando as portas de troncos (trunks) FXO, a marcação deve ser feita de forma parecida com a forma que marcamos pelos canais de E1, ou seja, basta colocar o grupo ao qual esses canais pertencem; no nosso exemplo é o grupo 3:

Asterisk inProprietário – A telefonia Hoje! 2010

A verdadeira arte do conhecimento é compartilhar o conhecimento! Página 205

[externo] Include = local Include = nacional Include = internacional . exten => _[6-9]XXXXXXXX,1,Dial(DAHDI/r3/${EXTEN},60,wWtT) .