Essa apresentação mostra a utilização de macros no asterisk.
Qualquer duvida podem mandar um email para:
vicente.proj@hotmail.com
Ou visitar o endereço do you tube que contém muitos vídeos ensinando a configurar o asterisk.
http://www.youtube.com/user/voipjava
Este documento describe los diferentes sistemas y herramientas que se pueden usar para monitorear Asterisk y otras aplicaciones de comunicaciones, incluyendo logs, StatsD, Grafana, InfluxDB, Elasticsearch y Kibana. Explica cómo Asterisk puede enviar datos a StatsD y cómo integrar todo el sistema usando herramientas como Telegraf.
Using Asterisk and Kamailio for Reliable, Scalable and Secure Communication S...Fred Posner
Presentation from AsteriskWorld 2017 at ITEXPO. Discussion of how I started with Asterisk and Kamailio as well as how to build Reliability, Scalability, and Security into your telephony platform.
The document provides best practices for Cisco Identity Services Engine (ISE) configurations. It discusses recommendations for wired and wireless dot1x configurations, redirected flows, upgrading to ISE 2.0, and configuring mobile device management (MDM) authorization policies across different ISE versions. Key recommendations include enabling radius server dead detection, using policy sets to optimize policy lookups, and configuring separate authorization policies for MDM redirection and registered devices.
Este documento describe los diferentes sistemas y herramientas que se pueden usar para monitorear Asterisk y otras aplicaciones de comunicaciones, incluyendo logs, StatsD, Grafana, InfluxDB, Elasticsearch y Kibana. Explica cómo Asterisk puede enviar datos a StatsD y cómo integrar todo el sistema usando herramientas como Telegraf.
Using Asterisk and Kamailio for Reliable, Scalable and Secure Communication S...Fred Posner
Presentation from AsteriskWorld 2017 at ITEXPO. Discussion of how I started with Asterisk and Kamailio as well as how to build Reliability, Scalability, and Security into your telephony platform.
The document provides best practices for Cisco Identity Services Engine (ISE) configurations. It discusses recommendations for wired and wireless dot1x configurations, redirected flows, upgrading to ISE 2.0, and configuring mobile device management (MDM) authorization policies across different ISE versions. Key recommendations include enabling radius server dead detection, using policy sets to optimize policy lookups, and configuring separate authorization policies for MDM redirection and registered devices.
The document provides an overview of PostgreSQL best practices from initial setup to an OLTP performance benchmark against Oracle. It discusses PostgreSQL architecture, installation options, securing the PostgreSQL cluster, main configuration parameters, backup and recovery strategies. It then details the results of an OLTP performance benchmark test between PostgreSQL and Oracle using the same hardware, workload, and configuration. The test found Oracle had slightly better performance with a shorter completion time and higher maximum transactions per minute compared to PostgreSQL.
This document discusses how to configure Kamailio as a session border controller (SBC) using Docker. It provides an introduction to Kamailio and explains how to install Kamailio from source on a CentOS Docker container. Specific steps are outlined to configure Kamailio to use MySQL, create the database schema, modify the configuration file to use the private and public IP addresses, and start the Kamailio server. The document also provides instructions for testing Kamailio by getting the error log, creating SIP user accounts, and registering a SIP softphone.
This document provides an overview of Deep Packet Inspection (DPI) technology and Sandvine's DPI solution. It describes key components of Sandvine's solution including the Policy Traffic Switch (PTS) for real-time traffic policy enforcement, the Policy Broker (SPB) for subscriber and policy configuration, and the Service Delivery Engine (SDE) for control plane policy enforcement. It also provides examples of configuration for the PTS and SPB. Finally, it introduces Sand Script, the language used for policy rule configuration in Sandvine's solution.
www.AsteriskClub.org : Trucos muy interesantes imprescindibles para configurar y administrar un Asterisk para ahorrar tiempo y esfuerzo. Herramientas, técnicas y programación del Manager de Asterisk
This document provides instructions on how to install and configure SUDO (Super User Do) on RHEL 7. It describes installing the sudo package, verifying the installation, configuring the sudoers file using the visudo editor, setting default permissions for the sudoers file, listing allowed commands for users, caching credentials, defining command privileges for users including requiring passwords or allowing passwordless access, and configuring session timeouts on a system-wide or per-user basis.
Lightweight locks (LWLocks) in PostgreSQL provide mutually exclusive access to shared memory structures. They support both shared and exclusive locking modes. The LWLocks framework uses wait queues, semaphores, and spinlocks to efficiently manage acquiring and releasing locks. Dynamic monitoring of LWLock events is possible through special builds that incorporate statistics collection.
Map/Reduce is a programming paradigm for parallel processing of large datasets. In CouchDB, Map/Reduce is implemented using JavaScript functions. The map function emits key-value pairs from input documents, and the reduce function combines these to produce final output. The map phase produces an intermediate result that can be optionally passed through the reduce phase or returned as-is. The reduce function may be rerun on partitioned results to produce the final output.
Three Ways Kamailio Can Help Your FreeSWITCH DeploymentFred Posner
Kamailio can help a FreeSWITCH deployment in three ways: 1) Using the DISPATCHER module for carrier and internal routing which provides load balancing and failover capabilities, 2) Using the PERMISSIONS module for IP-based access control lists for routing, registrations, and permissions, and 3) Using the HTABLE module for caching and storing data in-memory for improved performance and scalability. Kamailio offers high performance, scalability, and security features that can enhance an existing FreeSWITCH system.
Web uygulamaları dağıtım kolaylığı nedeniyle masaüstü uygulamalara üstünlük sağlamış ve geniş uygulama alanı bulmuştur. Bunun yanı sıra internete açık olan uygulamaların önemli bir kısmı da web uygulaması şeklindedir. Web uygulaması olmayan masaüstü uygulamalar ve mobil uygulamalar dahi web uygulama mimarisinin önemli bir kısmı olan HTTP protokolünü kullanmaktadır.
Bunların yanı sıra web uygulamaları çok katmanlı mimariye sahip olup, bu durum nispeten web uygulama altyapılarının sıradan masaüstü uygulamalara nazaran karmaşık olmalarına neden olmaktadır.
Tüm bu nedenlerden dolayı web uygulamaları saldırganların gözde hedeflerinden birisidir.
Web uygulama denetimi eğitiminde katılımcılara web uygulamalarında ortaya çıkabilecek açıklıkların neler olduğu, bu açıklıkları nasıl tespit edebilecekleri ve açıklıkların ortadan kaldırılma yöntemleri aktarılmaktadır.
Web uygulama denetimi eğitimi, mobil uygulama denetimi yapacak katılımcılara da gerekli temel web teknolojileri bilgilerini aktarmayı hedeflemektedir.
http://www.lulu.com/content/e-book/instalacion-debian-asterisk-freepbx-a2billing/7540358
Manual practico de instalación de Asterisk, FreePBX, A2Billing en Linux (Debian). La idea principal es que cualquier persona sin experiencia pueda comenzar a instalar y utilizar asterisk, empezando con la instalación del sistema operativo y sus dependencias para luego instalar asterisk y administrarlo via web usando freePBX, Rutear llamadas facturando con A2Billing.
Para Descargar Libro ir al URL http://www.lulu.com/content/e-book/instalacion-debian-asterisk-freepbx-a2billing/7540358
Criando sua própria linguagem de programaçãoronaldoferraz
O documento discute a criação de uma nova linguagem de programação chamada Mirror. Apresenta os conceitos-chave de linguagens de programação como sintaxe, semântica e gramáticas formais. Descreve elementos da linguagem Mirror como slots, contextos e mensagens. Explica como a linguagem é interpretada usando um parser, AST, bytecodes e máquina virtual.
1) O documento descreve o framework JavaScript Ext JS, apresentando seus principais componentes como grids, diálogos e layouts.
2) É detalhada a implementação desses componentes através de classes como Ext.grid.Grid para grids, Ext.BasicDialog para diálogos e Ext.LayoutManager para layouts.
3) São apresentadas classes auxiliares como Ext.data.Store para armazenamento de dados e Ext.grid.ColumnModel para definição de colunas em grids.
The document provides an overview of PostgreSQL best practices from initial setup to an OLTP performance benchmark against Oracle. It discusses PostgreSQL architecture, installation options, securing the PostgreSQL cluster, main configuration parameters, backup and recovery strategies. It then details the results of an OLTP performance benchmark test between PostgreSQL and Oracle using the same hardware, workload, and configuration. The test found Oracle had slightly better performance with a shorter completion time and higher maximum transactions per minute compared to PostgreSQL.
This document discusses how to configure Kamailio as a session border controller (SBC) using Docker. It provides an introduction to Kamailio and explains how to install Kamailio from source on a CentOS Docker container. Specific steps are outlined to configure Kamailio to use MySQL, create the database schema, modify the configuration file to use the private and public IP addresses, and start the Kamailio server. The document also provides instructions for testing Kamailio by getting the error log, creating SIP user accounts, and registering a SIP softphone.
This document provides an overview of Deep Packet Inspection (DPI) technology and Sandvine's DPI solution. It describes key components of Sandvine's solution including the Policy Traffic Switch (PTS) for real-time traffic policy enforcement, the Policy Broker (SPB) for subscriber and policy configuration, and the Service Delivery Engine (SDE) for control plane policy enforcement. It also provides examples of configuration for the PTS and SPB. Finally, it introduces Sand Script, the language used for policy rule configuration in Sandvine's solution.
www.AsteriskClub.org : Trucos muy interesantes imprescindibles para configurar y administrar un Asterisk para ahorrar tiempo y esfuerzo. Herramientas, técnicas y programación del Manager de Asterisk
This document provides instructions on how to install and configure SUDO (Super User Do) on RHEL 7. It describes installing the sudo package, verifying the installation, configuring the sudoers file using the visudo editor, setting default permissions for the sudoers file, listing allowed commands for users, caching credentials, defining command privileges for users including requiring passwords or allowing passwordless access, and configuring session timeouts on a system-wide or per-user basis.
Lightweight locks (LWLocks) in PostgreSQL provide mutually exclusive access to shared memory structures. They support both shared and exclusive locking modes. The LWLocks framework uses wait queues, semaphores, and spinlocks to efficiently manage acquiring and releasing locks. Dynamic monitoring of LWLock events is possible through special builds that incorporate statistics collection.
Map/Reduce is a programming paradigm for parallel processing of large datasets. In CouchDB, Map/Reduce is implemented using JavaScript functions. The map function emits key-value pairs from input documents, and the reduce function combines these to produce final output. The map phase produces an intermediate result that can be optionally passed through the reduce phase or returned as-is. The reduce function may be rerun on partitioned results to produce the final output.
Three Ways Kamailio Can Help Your FreeSWITCH DeploymentFred Posner
Kamailio can help a FreeSWITCH deployment in three ways: 1) Using the DISPATCHER module for carrier and internal routing which provides load balancing and failover capabilities, 2) Using the PERMISSIONS module for IP-based access control lists for routing, registrations, and permissions, and 3) Using the HTABLE module for caching and storing data in-memory for improved performance and scalability. Kamailio offers high performance, scalability, and security features that can enhance an existing FreeSWITCH system.
Web uygulamaları dağıtım kolaylığı nedeniyle masaüstü uygulamalara üstünlük sağlamış ve geniş uygulama alanı bulmuştur. Bunun yanı sıra internete açık olan uygulamaların önemli bir kısmı da web uygulaması şeklindedir. Web uygulaması olmayan masaüstü uygulamalar ve mobil uygulamalar dahi web uygulama mimarisinin önemli bir kısmı olan HTTP protokolünü kullanmaktadır.
Bunların yanı sıra web uygulamaları çok katmanlı mimariye sahip olup, bu durum nispeten web uygulama altyapılarının sıradan masaüstü uygulamalara nazaran karmaşık olmalarına neden olmaktadır.
Tüm bu nedenlerden dolayı web uygulamaları saldırganların gözde hedeflerinden birisidir.
Web uygulama denetimi eğitiminde katılımcılara web uygulamalarında ortaya çıkabilecek açıklıkların neler olduğu, bu açıklıkları nasıl tespit edebilecekleri ve açıklıkların ortadan kaldırılma yöntemleri aktarılmaktadır.
Web uygulama denetimi eğitimi, mobil uygulama denetimi yapacak katılımcılara da gerekli temel web teknolojileri bilgilerini aktarmayı hedeflemektedir.
http://www.lulu.com/content/e-book/instalacion-debian-asterisk-freepbx-a2billing/7540358
Manual practico de instalación de Asterisk, FreePBX, A2Billing en Linux (Debian). La idea principal es que cualquier persona sin experiencia pueda comenzar a instalar y utilizar asterisk, empezando con la instalación del sistema operativo y sus dependencias para luego instalar asterisk y administrarlo via web usando freePBX, Rutear llamadas facturando con A2Billing.
Para Descargar Libro ir al URL http://www.lulu.com/content/e-book/instalacion-debian-asterisk-freepbx-a2billing/7540358
Criando sua própria linguagem de programaçãoronaldoferraz
O documento discute a criação de uma nova linguagem de programação chamada Mirror. Apresenta os conceitos-chave de linguagens de programação como sintaxe, semântica e gramáticas formais. Descreve elementos da linguagem Mirror como slots, contextos e mensagens. Explica como a linguagem é interpretada usando um parser, AST, bytecodes e máquina virtual.
1) O documento descreve o framework JavaScript Ext JS, apresentando seus principais componentes como grids, diálogos e layouts.
2) É detalhada a implementação desses componentes através de classes como Ext.grid.Grid para grids, Ext.BasicDialog para diálogos e Ext.LayoutManager para layouts.
3) São apresentadas classes auxiliares como Ext.data.Store para armazenamento de dados e Ext.grid.ColumnModel para definição de colunas em grids.
Construindo URA e Sistemas de Call Center com AsteriskRodrigo R Passos
O documento descreve como construir uma URA (Unidade de Resposta Audível) e um sistema de call center com Asterisk. Ele inclui informações sobre: 1) como elaborar projetos de URA e call center; 2) desenvolver URA e sistemas de call center usando Asterisk, banco de dados e web services; 3) implementar esses projetos.
Construindo URA e Sistemas de Call Center com AsteriskRodrigo R Passos
Orientar desenvolvedores sobre a utilização do Asterisk para desempenhar o papel de uma URA com programação avançada.
Estabelecer uma infra-estrutura para empresas que precisam de um sistema de Contact/Call Center
Prover conhecimento para empresas que querem partir para o desenvolvimento de uma solução de Contact/Call Center baseado em Asterisk
Este documento fornece instruções sobre como usar o NotORM, uma biblioteca PHP para trabalhar com dados no banco de dados de forma simples. Ele explica como instalar o NotORM, conectar-se ao banco de dados, inserir, consultar e relacionar dados entre tabelas. Além disso, mostra como personalizar consultas e usar recursos como junções e agregações.
O documento resume as principais mudanças na versão 1.9 do Ruby em relação à versão 1.8, incluindo:
1) Mudanças na representação de strings e codificações, como a remoção do $KCODE e a introdução de m17n;
2) Melhorias no desempenho de expressões regulares e símbolos;
3) Alterações na classe Date e nos métodos de hash.
O documento apresenta um módulo de treinamento em ASP.NET e C#, abordando tópicos como declaração de variáveis, tipos de dados, operadores, lógica de controle, arrays, métodos e tratamento de exceções.
O documento discute funções em Python, explicando que elas permitem dividir um problema em subproblemas menores. Detalha como definir funções, passar e receber argumentos, escopo de variáveis, documentação de funções e outros conceitos relacionados a programação estruturada em Python.
O documento apresenta funções do PHP para manipulação de strings, incluindo funções para transformar caixa de texto, remover espaços, escapar caracteres, dividir strings, criptografar senhas, formatar números e substituir texto. É ensinado como fazer upload de arquivos e manipular arrays resultantes no PHP.
O documento introduz o CMake, um sistema usado para automatizar a compilação de projetos. Ele explica como o CMake funciona por meio de arquivos CMakeLists.txt e comandos básicos como add_executable, include_directories e find_package. Além disso, aborda conceitos como variáveis, funções, macros e opções no CMake.
O documento discute estratégias para otimização e escalabilidade de aplicações web, incluindo dicas para código eficiente, uso de caches, bancos de dados distribuídos e computação em nuvem.
O documento apresenta um resumo dos tópicos abordados em seis cursos de Excel e VBA, incluindo: 1) macros gravadas e VBA, 2) interface com o usuário, 3) tipos comuns de macros, 4) formulários, 5) figuras e gráficos, e 6) interface com outros arquivos.
Este documento discute como combinar Ruby e Erlang para superar suas deficiências individuais. Ele propõe criar uma arquitetura que permita que as linguagens se beneficiem mutuamente, com Erlang fornecendo programação distribuída e desempenho, enquanto Ruby oferece produtividade e facilidade de desenvolvimento. A biblioteca rinterface é apresentada como uma forma de facilitar a comunicação entre os nós Erlang e aplicações Ruby.
Este documento apresenta os principais recursos novos do Transact-SQL no SQL Server 2005, incluindo novos tipos de dados como XML e varchar(max), novas funcionalidades como DML com cláusula OUTPUT e TOP (%n), e melhorias como exceção handling, common table expressions e novos operadores relacionais como PIVOT e UNPIVOT. O documento fornece exemplos de como utilizar essas novas funcionalidades.
Este documento descreve funções e estrutura de blocos em programação. Ele apresenta exemplos de como definir funções para calcular fatorial, maior entre dois números e seno/cosseno/arctangente usando séries de Taylor. Também explica o escopo de variáveis em diferentes blocos e como variáveis locais e globais funcionam.
1) O documento apresenta um mini-curso de Python com tópicos sobre a linguagem, controles de fluxo, estruturas de dados, classes e módulos.
2) São abordados conceitos como strings, listas, funções, controle condicional e iterativo em Python.
3) O documento fornece exemplos de código Python para ilustrar cada um dos tópicos apresentados.
Python é uma linguagem de programação multi-paradigma, interpretada e de tipagem dinâmica que possui uma biblioteca extensa. O documento apresenta os objetivos, características, sintaxe básica, controle de fluxo, orientação a objetos, programação funcional e módulos em Python.
1. O documento discute boas práticas de programação como indentação correta, nomes consistentes e comentários.
2. É recomendado comentar o código de uma forma que ajude a compreensão, mas evitar comentários desnecessários.
3. A apresentação também aborda padrões de codificação, princípios como DRY (Don't Repeat Yourself) e YAGNI (You aren't gonna need it), além de evitar muitos níveis de indentação e linhas muito longas.
Como usar a biblioteca SimpleTest do PHP para ganhar tempo resolvendo os problemas mas simples do dia-a-dia. Essa apresentação foi elaborada para o PHPConference2008 que aconteceu em Osasco, SP Brasil.
2. Macros no Asterisk
São sub-rotinas que tem o objetivo de simplificar o
plano de discagem eliminando a necessidade de
repetição de regras.
As macros funcionam como funções dentro do plano
discagem onde pode ser passado parâmetros a serem
executados dentro da macro.
3. Macros no Asterisk
Benefícios na Utilização de Macros:
Centraliza a lógica do código em um único ponto.
Facilidade na manutenção.
Melhor Organização do plano de discagem.
4. Macros no Asterisk
As macros funcionam semelhantes aos contextos dentro do
arquivo extensions.conf.
Porém uma macro é definida através da seguinte sintaxe:
[macro-Nome da Macro]
Além disso as macros devem sempre ser executadas através
da extensão s do asterisk que significa start, ou, seja não
pode ser usada nenhuma extensão diferente de s.
5. Macros no Asterisk
As macros são usadas para processar extensões de forma
que não seja necessário a criação de varias linhas de
comandos para cada extensão.
Sintaxe na chamada de uma Macro:
Macro(NomeDaMacro, arg1, arg2,..., argN)
7. Macros no Asterisk
Variáveis de Canal
Nome da Variável Descrição
Usado para passar parâmetros para as macros, são enumerados de
ARGn acordo com a ordem de chamada.
Contém o valor da variável CONTEXT durante a chamada da
MACRO_CONTEXT macro.
Contém o valor da variável EXTEN durante a chamada da
MACRO_EXTEN macro.
MACRO_PRIORITY Contém o número da prioridade que chamou a macro.
Influencia na prioridade de execução ao sair da macro.
MACRO_OFFSET Se ${MACRO_OFFSET}, for colocado no termino, a macro
tentará continuar na prioridade MACRO_OFFSET+N+1, se tal
passo existir e N+1caso contrario.
10. Macros no Asterisk
Comando Goto:
O comando Goto, muda a ordem de execução do plano de
discagem.
Sintaxe:
;Desvia para um contexto, extensão e prioridade especificada.
GoTo(contexto, extensão, prioridade)
;Desvia para a extensão e a prioridade dentro do próprio contexto.
GoTo(extensão, prioridade)
;Desvia para prioridade especificada dentro do próprio contexto.
GoTo(prioridade)
11. Macros no Asterisk
Exemplo 3 - Sem o Uso da Macro:
[ramais]
exten=> _40XX,1,Dial(SIP/${EXTEN},20,tTwW)
exten=> _40XX,n,GotoIf($[${DIALSTATUS}=CHANUNAVAIL |
${DIALSTATUS}=NOANSWER] ? indisponivel : ocupado)
exten=> _40XX,n(indisponivel),VoiceMail(${EXTEN},u)
exten=> _40XX,n,HangUp()
exten=> _40XX,n(ocupado),VoiceMail(${EXTEN},b)
exten=> _40XX,n,HangUp()
12. Macros no Asterisk
Comando GotoIf:
O comando GoToIf, muda o fluxo do plano de discagem de
acordo com o resultado de uma expressão lógica:
Sintaxe:
GoToIf(expressão lógica ? [destino se verdadeiro] : [destino se falso])
13. Macros no Asterisk
Operadores Lógicos:
O exemplo anterior usou o operador lógico | (Ou, Or do
inglês) na função GoToIf, existem vários operadores
lógicos, como descrito na tabela abaixo:
Operadores Lógicos Descrição
& E
| OU
= Igual
> Maior que
< Menor que
>= Maior ou igual que
<= Menor ou igual que
!= Diferente
14. Macros no Asterisk
Operadores Matemáticos:
No asterisk também existem os operadores matemáticos,
que podem ser usados para sofisticar o seu plano de
discagem, como descrito na tabela abaixo:
Operadores Matemáticos Descrição
+ Soma
- Subtração
* Multiplicação
/ Divisão
% Modulo
15. Macros no Asterisk
Exemplos:
Operação Descrição
$[${TOTAL} + 4] Soma 4 ao conteúdo da variável TOTAL.
Se a variável ${EXTEN} for igual a 4000,
$[${EXTEN} = 4000] retorna 1 para verdadeiro, caso contrario 0
para falso.
$[${DIALSTATUS} != BUSY] Se a variável DIALSTATUS for diferente
de BUSY, retorna 1 para verdadeiro, caso
contrario 0 para falso.
Se o VALOR1 for maior ou igual a 10 e o
$[${VALOR1}>=10 & ${VALOR2}<=20] VALOR2 for menor igual a 20 retorna 1
para verdadeiro, caso contrario 0 para falso.
Se o PREFIXO for igual a 085 ou se o
${${PREFIXO}=085 | ${PREFIXO}=011] PREFIXO for igual a 011, retorna 1 para
verdadeiro, caso contrario 0 para falso.
17. Macros no Asterisk
Retorno da Variável DIALSTATUS:
O exemplo anterior, usou alguns tipos de status que a variável
DIALSTATUS do asterisk retorna, a tabela abaixo os descreve:
VARIÁVEL DESCRIÇÃO
CHANUNAVAIL Canal de destino indisponível.
NOANSWER O destino não atendeu a chamada.
BUSY O destino estava ocupado.
ANSWER Chamada atendida.
CONGESTION Não havia canais disponíveis para completar a chamada.
O originador da chamada cancelou antes que a chamada fosse
CANCEL completada.
DONTCALL Chamadas são rejeitadas, pelo modo de privacidade.
O destino decidiu enviar a chamada para o menu, pelo modo de
TORTURE privacidade.
INVALIDARGS Alguns dos argumentos passados estavam inválidos.
18. Macros no Asterisk
Exemplo 4 – Observação – Criação da Conta SIP:
Para que funcionem os exemplos anteriores, devem-se criar as
contas SIP ou IAX e o VoiceMail:
;Arquivo sip.conf ;Arquivo sip.conf
[general] [4001]
port=5060 host=dynamic
bindaddr=0.0.0.0 type=friend
disallow=all context=ramais
allow=alaw username=4001
language=pt_BR secret=4001
callerid=vicente<4001>
mailbox=4001
;mailbox=200@email
19. Macros no Asterisk
Exemplo 4 – Observação – Criação da Conta IAX:
Para que funcionem os exemplos anteriores, devem-se criar as
contas SIP ou IAX e o VoiceMail:
;Arquivo iax.conf ;Arquivo iax.conf
[general] [3001]
port=4569 host=dynamic
bindaddr=0.0.0.0 type=friend
disallow=all auth=md5
allow=gsm context=ramais
language=pt_BR username=3001
secret=3001
callerid=3001
mailbox=3001
;mailbox=300@email
20. Macros no Asterisk
Exemplo 4 – Observação – Criação do VoiceMail:
Para que funcionem os exemplos anteriores, devem-se criar as
contas SIP ou IAX e o VoiceMail:
;Arquivo voicemail.conf
[general]
format=gsm
serveremail=asterisk@hotmail.com
maxlogins=5
maxmsg=100
delete=no
attach=yes
[email]
include => general
200 =>123,vicente,vicente.proj@hotmail.com
300 => 789564,maria,maria@gmail.com
[4001]
include => general
4001 => 845962,jose,jose@yahoo.com.br
[3001]
include => general
3001 => 145263,fulano,fulano@email.com
22. Macros no Asterisk
Comando IF:
O comando IF, testa uma expressão lógica.
Se a expressão for verdadeira, esse comando retorna o
valor posterior a ? (interrogação), se não retorna o valor
posterior aos : (dois pontos).
Sintaxe:
IF(expressão?valor_se_verdadeiro:valor_se_falso)
23. Macros no Asterisk
Exemplo 6 – Uso de Variáveis de Canal:
[empresa]
exten => _40XX,1,Macro(RH, SIP/${EXTEN},20,tTwW)
[macro-RH]
exten=> s,1,Dial(${ARG1},${ARG2},${ARG3})
exten=> s,n,GotoIf($[${DIALSTATUS}=CHANUNAVAIL]?chanunavail:busy)
exten=> s,n(chanunavail),VoiceMail(${MACRO_EXTEN},u) ;Indisponível
exten => s,n,HangUp()
exten=> s,n(busy),VoiceMail(${MACRO_EXTEN},b) ;Ocupado
exten => s,n,HangUp()
24. Macros no Asterisk
Exemplo 7 – Sala de Conferência:
[ramais]
include=>conferencia
include=>gravacao
[conferencia]
exten => _3456XXXX,1,Macro(conferencia,${EXTEN:-4},3)
[macro-conferencia]
exten=> s,1,Answer
exten=> s,n,Set(quantidade= ${ARG2})
exten=> s,n,MeetMeCount(${ARG1}, participantes)
exten=> s,n,GotoIf($[${participantes}=${quantidade}]?desliga:sala)
exten=> s,n(sala),MeetMe(${ARG1})
exten=> s,n(desliga),NoOp(Esta sala de conferencia esta com sua capacidade maxima!)
exten=> s,n,PlayBack(/var/lib/asterisk/sounds/conferencia/anuncio)
exten=> s,n,NoOp(Com ${participantes} participantes!)
exten=> s,n,PlayBack(/var/lib/asterisk/sounds/conferencia/digito${participantes})
exten=> s,n,Wait(1)
exten=> s,n,HangUp
25. Macros no Asterisk
Comando Set:
O comando Set possibilita definir o valor de uma
variável em tempo de execução.
Sintaxe:
Set(nome_da_variável = valor_da_variável)
26. Macros no Asterisk
Exemplo 7 – Sala de Conferência – Gravação do Anuncio:
[gravacao]
exten=>200,1,Wait(1)
exten=>200,n,PlayBack(beep)
exten=>200,n,Record(/var/lib/asterisk/sounds/conferencia/anuncio:gsm)
exten=>200,n,HangUp()
exten=>201,1,Wait(1)
exten=>201,n,PlayBack(beep)
exten=>201,n,Record(/var/lib/asterisk/sounds/conferencia/digito3:gsm)
exten=>201,n,HangUp()
27. Macros no Asterisk
Exemplo 7 – Sala de Conferência – Criação das Salas
Para que funcione o exemplo anterior é preciso criar
uma sala de conferência no arquivo meetme.conf.
;meetme.conf
[rooms]
conf=>sala,senha
;Exemplo
conf=> 2020
conf=> 2020,123456
28. Macros no Asterisk
Manipulação de Variáveis:
O exemplo anterior usou o conceito de substring.
O asterisk é capaz de manipular uma variável, retornado partes de
seu conteúdo inicial:
Suponha que a variável ${EXTEN} possua o valor 34561405:
Sintaxe: ${variável:posição inicial:comprimento}
VARIÁVEL RETORNO
${EXTEN:1} 4561405
${EXTEN:0:1} 3
${EXTEN:2:5} 5614
${EXTEN:4:7} 1405
${EXTEN:-4} 1405
${EXTEN:-4:3} 140
29. Conclusão
As macros no asterisk deixam o código mais simples de se fazer
alterações.
Pode-se utilizar uma mesma macro para diversos outros contextos
dentro de um plano de discagem, fazendo o uso do conceito de
funções e passagem de parâmetros que são utilizados em
linguagens de programação.
As macros podem ser usadas para todos os tipos de
funcionalidades no asterisk, como URA, Voicemail, Meetme,
Filas, SIP, IAX e etc.
Fazer uso de macros é uma boa pratica para construção do plano
de discagem.
30. Contato, Criticas, Sugestões e Dúvidas
Email:
vicente.proj@hotmail.com
Endereço do You Tube:
http://www.youtube.com/user/voipjava
Web sites sugeridos para pesquisa:
www.asterisk.org
www.digium.com
www.voip-info.org