Disparando eventos com Asterisk

Embed Size (px)

Citation preview

Slide 1

Disparando eventos
com o Asterisk

Fernando Mercs

Apresentao

Fernando [email protected]

Bacharelando em Cincia da Computao e com formao tcnica em eletrnica, Fernando Mercs consultor tcnico da 4Linux, onde atua com sistemas livres. especialista em Comunicao Unificada e SL, tendo trabalhado com soft-PBX proprietrios e livres durante sua carreira. Possui certificaes Aastra/Ericsson, CompTIA e Microsoft, inclusive em UC. Tambm fundador e mantenedor dos sites sobre tecnologia Mente Binria e GNU/Linux Reversing.

Objetivos

Demonstrar como executar aes externas ao Asterisk.

Compreender a importncia deste recurso.

Definir os requisitos para disparo de eventos em hardwares externos.

Agenda

Quando e por que disparar um evento?

Comandos que executam comandos.

Exemplo de votao por URA.

Interfaceando hardware.

Exemplo de um controle de LEDs.

O que preciso saber para usar estes recursos.

Quando e por que disparar um evento

Implementao de recursos no disponveis nativamente.

Administrao remota.

Alternativa ao usurio de servios de rede.

Controle de dispositivos.

Comandos que executam comandos

System(caminho_do_comando argumentos)

Executa um comando no sistema.

Se o comando no executar de maneira correta, a varivel SYSTEMSTATUS conter o valor APPERROR.

prefervel tratar a lgica dentro do programa/script que ser chamado, mas alguma lgica pode (e deve) ser aplicada no contexto do Asterisk.

Comandos que executam comandos

TrySystem(caminho_do_comando argumentos)

Executa um comando no sistema.

Independente do resultado do comando, retorna 0 na SYSTEMSTATUS.

Votao por URA

[vota]exten => s,1,Wait(1)exten => s,n,Read(voto,votamenu,1)exten => s,n,GotoIf($[ "${voto}" = "1"]?votook)exten => s,n,GotoIf($[ "${voto}" = "2"]?votook)exten => s,n,GotoIf($[ "${voto}" = "3"]?votook)exten => s,n,Playback(invalido)exten => s,n,Goto(s,1)exten => s,n(votook),System(./vota.sh ${voto})exten => s,n,Playback(computado)exten => s,n,Hangup

Interfaceando hardware

Porta serial, paralela ou USB.

possvel fazer com scripting em alguns casos.

Para mais controle, necessrio um programa compilado.

Hardware extra necessrio.

Interfaceando hardware

Fonte: www.profelectro.info

Interfaceando hardware

Interfaceando hardware

Porta paralela

8 bits de dados.

Acionamento dos bits em paralelo.

TTL (5V / 0V)

Interfaceando hardware

Porta Paralela com o Parashell

parashell 0x378 1 #00000001parashell 0x378 255 #11111111parashell 0x378 128 #01000000parashell 0x378 0 #00000000

Interfaceando hardware

Porta USB

Interface USB.

Microcontrolador incluso.

Interfaceando hardware

int ledPin = 10; // LED conectado ao pino 10 da placa.void setup(){ pinMode(ledPin, OUTPUT); // Sada o pino.}void loop(){ digitalWrite(ledPin, HIGH); // Envia energia para o pino. delay(1000); // Aguarda 1 segundo digitalWrite(ledPin, LOW); // Desliga a energia do pino. delay(1000);}

O que preciso saber

Programar, mesmo que o bsico, sempre bom. A programao em BASH, no Linux, costuma atender bem o administrador do Asterisk.

A segurana dos scripts precisa ser pensada, afinal, quem executa os comandos externos o usurio que executa o Asterisk (geralmente, o root) e uma invaso pelo telefone se torna perigosa e ameaadora.

O que preciso saber

Eletrnica exige algum estudo. No se pode sair ligando tudo que pino ou cabo. Existem grandezas que precisam ser calculadas antes como intensidade de corrente, tenso eltrica e resistncia. Com um circuito mal feito, os resultados podem no ser concretos e/ou conter muita fumaa. =X

So inmeras operaes que podem ser feitas com o disparo de eventos. S depende de criatividade!

Referncias

www.voip-info.orgwww.arduino.ccwww.faqs.org/docs/Linux-mini/IO-Port-Programming.html#s5http://parashell.sourceforge.nethttp://www.mentebinaria.com.br/hardware/20-controle-de-dispositivos-com-a-porta-paralela

Perguntas?

Obrigado!

Rua Teixeira da Silva, 660 Paraso So Paulo SP(11) 2125-4747