sábado, 5 de janeiro de 2013

CCSS (Call Completion Supplementary Services) no Asterisk


O cenário: você liga para um ramal pois precisa falar com o usuário para resolver um problema urgente mas o ramal está ocupado. Você desliga a chamada e de tempos em tempos tenta ligar novamente mas sempre recebe o sinal de ocupado. 

O que fazer? Você pode procurar o usuário para falar pessoalmente com ele. Você também pode desistir de falar com o usuário e tentar resolver o problema por conta própria. Ou então você pode ativar o recurso de Call Completion em seu ramal e esperar que o Asterisk ligue para você quando o ramal do usuário estiver livre.

O CCSS, que está disponível a partir da versão 1.8 do Asterisk, permite que um ramal seja monitorado sob demanda, alertando o usuário e efetuando automaticamente a chamada quando o mesmo ficar disponível. O recurso pode ser utilizado tanto para chamadas não atendidas (CCNR) quando para chamadas ocupadas (CCBS), de forma similar para o usuário.

E como eu implemento o CCSS no Asterisk?

O CCSS é uma feature padrão do Asterisk e para torná-la ativa basta adicionar os seguintes parâmetros a configuração SIP de seus ramais:
cc_agent_policy=generic
cc_monitor_policy=generic
Caso você use SIP realtime, basta adicionar os devidos campos na tabela SIP do banco.

O cc_agent_policy é utilizado pelo usuário que está discando, enquanto o cc_monitor_policy é utilizado pelo usuário a qual está sendo destinada a chamada. Eu prefiro ativar o recurso para todos os ramais, então todos possuem a mesma configuração.

O tipo de agente e de monitor utilizado por mim foi o generic, que atende bem a demanda, mas possui algumas limitações. A principal delas é que o usuário só consegue realizar uma monitoração por vez, ou seja, ele precisa ativar e desativar o recurso para que possa utilizá-lo novamente. 

Outros tipos estão disponíveis e você pode saber mais sobre os mesmos no arquivo /etc/asterisk/ccss.conf, onde você também pode ajustar outras configurações do serviço. A versão 10.X do Asterisk implementa um controle de Device State com o agente genérico que melhora muito a sua funcionalidade.

Uma recomendação para melhorar o funcionamento do sistema é setar a opção callcounter=yes na configuração de seu peer sip e também a opção limitonpeers=yes na seção general do arquivo sip.conf. Apesar de recomendado, efetuei testes sem estas opções (com telefones Polycom) e não encontrei problemas, mas pode ser que outros clientes SIP não se comportem tão bem.

E na prática como funciona?

Na prática funciona da seguinte maneira:

Imaginemos que você queria ligar para o ramal 1200. Você liga para o ramal e ele está ocupado ou não atende a ligação. 

Você desliga a chamada (ou ela é desligada) e você tem até 20 segundos (tempo padrão que pode ser alterado) para solicitar a ativação do serviço de CC. No meu caso basta discar para o *22 que o serviço estará ativo.

Se o ramal estava ocupado, assim que ele desligar o Asterisk irá efetuar uma ligação para o seu ramal. Assim que você atender ele discará automaticamente para o ramal 1200.

Se a ligação não havia sido atendida, o Asterisk entenderá que o usuário não está em sua mesa. Assim, depois que ele fizer uma nova chamada, o Asterisk perceberá que ele está no local e,  assim que ele desligar, realizará uma ligação para o seu ramal e assim que você atender ele discará para o ramal 1200.

Após você falar com o ramal 1200, no entanto, é preciso que você desative o serviço (no meu caso discando para *220), para que possa utilizá-lo novamente (devido ao uso do generic).

Por fim, sugiro que a página de dicas sobre o serviço seja lida, pois ali constam informações e recomendações muito relevantes que devem ser seguidas.

Exemplo do plano de discagem

Segue abaixo um plano de discagem bem simples para ativar e desativar o recurso:
[internal_services]
exten => *22,1,CallCompletionRequest
exten => *22,n,Hangup
exten => *220,1,CallCompletionCancel
exten => *220,n,Hangup

sexta-feira, 4 de janeiro de 2013

Utilizando XMPP para interagir com Asterisk


Na Propus fazemos uso diário da integração de nosso servidor XMPP com o Asterisk

Envio e recebimento de SMS, identificação de chamadas e integração com Google Talk são alguns dos recursos que desenvolvemos e testamos em nosso laboratório. Sempre que posso procuro pesquisar e desenvolver novas ideias para expandir esta integração, pois XMPP e VoIP (em especial Openfire e Asterisk) são duas tecnologias com as quais gosto muito de trabalhar.


Como faço uso destas tecnologias diariamente, nada mais natural do que pensar em utilizar o XMPP para realizar tarefas cotidianas no Asterisk ou até mesmo obter informações do sistema e de seus recursos.

Resolvi então pesquisar mais sobre esta interação e encontrei um blog muito interessante que acabou por me levar a um bot xmpp integrado com Asterisk que vai ao encontro de minhas ideias.

O bot, desenvolvido em perl, faz uso da AMI e da biblioteca Asterisk::AMI para monitorar os eventos do manager do Asterisk e interagir com o sistema. 

Baixei o script e após testá-lo acabei modificando-o e adaptando-o para atender as minhas necessidades, mas "minha" versão ainda está engatinhando, pois ainda existem muitos recursos que podem ser disponibilizados (e alguns mais que estão em construção).

Comando de ajuda implementado pelo script
Compartilho aqui a minha versão do script para que outros possam utilizá-lo e até mesmo estendê-lo e melhorá-lo.

Espero que o mesmo seja útil e que novas versões sejam também compartilhadas nos comentários deste post.

Até mais!

Asterisk e Google Text to Speech

No uso diário do Asterisk, periodicamente me deparo com a necessidade de gerar arquivos de áudio para tocar mensagens informativas básicas para o usuário.

Obter tais arquivos é uma tarefa eventualmente árdua que normalmente envolve a gravação in house dos arquivos (que consome um tempo razoável) ou a contratação de uma empresa especializada. Existem várias empresas excelentes neste nicho de mercado, mas às vezes não existe orçamento ou até mesmo tempo para produzir áudios mais básicos, para consumo interno.

Como alternativa para a criação de tais áudios, encontrei na lista AsteriskBrasil a sugestão do AGI GoogleTTS.

Este AGI utiliza o Google Text to Speech para gerar um arquivo de áudio on demand na linguagem que você indicar, e que, após sua geração, é automaticamente tocado pra o usuário. Como utiliza o Google Text to Speech, este AGI necessita de uma conexão ativa de Internet, mas, como todo software bem planejado, ele  possui um sistema de cache que garante que a mesma mensagem de áudio não precise ser gerada mais de uma vez, o que possibilita que os arquivos de áudio possam ser utilizados mesmo que o link Internet esteja indisponível, contanto que o mesmo já tenha sido gerado anteriormente.

Instalando o googletts.agi

O AGI, que é escrito em perl, depende de algumas bibliotecas e softwares bastante populares, que podem ser facilmente instalados no Ubuntu 12.04 com o comando apt-get install libwww-perl mpg123 sox.

Após fazer o download do arquivo .tar.gz, descompacte-o e coloque o arquivo googletts.agi no diretório /var/lib/asterisk/agi-bin/  para que o Asterisk possa acessá-lo. Não esqueça de verificar as permissões de acesso do arquivo.

Aconselho que antes de iniciar o uso, o arquivo googletts.agi seja editado para definir algumas paramêtros, como a linguagem padrão e o diretório para armazenamento do cache (o diretório padrão, /tmp, certamente não é a melhor escolha para armazenar tais dados).

Utilizando o googletts.agi

Abaixo um pequeno exemplo de utilização da ferramenta para informar de maneira audível ao usuário qual seu ramal e nome de usuário:

[internal_services] 
exten => *65,1,NoOp(Who Am I)
same => n,Answer
same => n,agi(googletts.agi,"Meu ramal é ${CALLERID(num)} e meu usuário é ${CALLERID(name)}",pt-BR)
same => n,Hangup

Use sua criatividade e boa diversão!

sábado, 1 de dezembro de 2012

Ainda sobre o VOX IP da GVT

Após realizar uma nova configuração do GVT VOX IP com Asterisk, eis que percebi que faltaram algumas informações relevantes no post anterior

Como a GVT continua não provendo uma documentação mínima do serviço (confesso que não foi solicitado diretamente, mas, na minha opinião, na instalação do serviço deveria ser entregue ao cliente pelo menos um documento com os dados completos da rede e informações relevantes de configuração), novamente foi preciso utilizar a experiência adquirida para resolver algumas questões. 

Sonho com o dia em que a GVT dará um status mais profissional ao VOX IP, pois parece ainda tratar-se de um serviço "alternativo" ou em fase de testes, o que não é verdade, pois o serviço é bem estável e funcional. Além disso, eu acredito que esse tipo de entroncamento (SIP) será o substituto natural do link E1, apesar das operadoras não quererem aceitar esta realidade.

Pois bem, este post é complementar ao primeiro, e possui algumas informações que serão bastantes úteis na configuração do serviço.

Codecs

A dica inicial é: atenção aos codecs. A GVT instala um link de 1Mbps para  prover 30 canais, e, se não for utilizado o codec adequado, o número de canais pode cair pela metade.

Apesar do VOX IP aceitar o uso do codec g711 alaw (segundo a informação este deve ser o codec secundário na configuração do peer SIP), o mesmo utiliza 64 Kbps de banda, fazendo com que só possam ser utilizados 15 canais simultâneos na banda disponível.

Por isso a GVT recomenda a utilização do codec g729, que utiliza uma banda muito menor possibilitando o uso dos 30 canais simultaneamente. No entanto é importante esclarecer que o Asterisk não disponibiliza o codec. Para instalá-lo é preciso adquirir as licenças da Digium, ao custo de USD 10,00 cada.

Fax

Para uso do Fax, o VOX IP dispõe do T.38, que é o protocolo para transmissão de fax sobre redes IP. O Asterisk já provê suporte a este protocolo, mas também é possível enviar fax utilizando-se o codec g711, com softwares como iaxmodem e hylafax (No caso de uso do T.38, a alternativa para o iaxmodem  é o t38modem).

Também é possível utilizar o Fax for Asterisk, da Digium, mas cada licença para uso de fax (simultâneo) tem o custo de USD 40. 

Uma outra alternativa seria o uso do Free Fax for Asterisk, que disponibiliza uma única licença sem custos, e que pode ser usado em ambientes onde o Fax é utilizado de maneira esporádica.

Identificação de entrada

Um fato que merece ser citado é que o VOX IP não entrega somente o MCDU, mas sim o número completo de destino (DDD + número). 

Assim, se você está migrando de um link E1, ou está acostumado a instalações com links E1, adapte seu plano de discagem para este novo formato.

Roteamento da rede do VOX IP

A abordagem adotada no roteamento da rede do VOX IP tem sido meio radical, mas como não há informação completa da GVT, a mesma tem proporcionado o funcionamento adequado do serviço.

Vou exemplificar:

  • Rede entregue pela GVT para enlace: 10.153.X.Y/29
  • IP de registro do servidor: 10.150.X.Y

Como não havia informações sobre a rede a ser roteada, foi realizado o roteamento da rede 10.150.X.0/24. 

Com este roteamento, apesar do SIP ficar registrado e a chamada ser completada, a ligação ficava muda em ambas pontas. Após uma investigação com o tcpdump, pode-se observar que haviam pacotes vindos da rede 10.152.X.Y, que não estava roteada, o que causava o problema.

Como não havia conflito na rede em questão, foi realizado então o roteamento da rede 10.128.0.0/9, o que certamente não é a melhor prática, mas que permitiu que o serviço funcionasse corretamente.

Caso alguém possua informações corretas sobre a rede a ser roteada, por favor poste nos comentários.

Host não identificado

E, para finalizar, se você se deparar com um erro semelhante no console do Asterisk, pode ficar tranquilo:
[Dec  1 08:37:42] ERROR[11427]: netsock2.c:269 ast_sockaddr_resolve: getaddrinfo("PAE1CS2K", "5060", ...): Name or service not known
[Dec  1 08:37:42] WARNING[11427]: chan_sip.c:16078 check_via: Could not resolve socket address for 'PAE1CS2K:5060'
O host em questão é o servidor SIP onde você está registrado. 

Para que tal erro não ocorra mais, adicione a seguinte linha no seu arquivo /etc/hosts:


10.150.X.Y   PAE1CS2K

De momento é isso, mas assim que houverem novas informações, possivelmente será feito um update no post.

UPDATE 12/12/2012: é muito importante que seja sempre utilizado o Progress ao receber ou realizar uma chamada externa, caso contrário as ligações podem ser derrubadas pela operadora durante seu curso.

UPDATE 27/12/2012: muita gente relatou ter dificuldades para identificar suas chamadas com o número dos ramais ao invés do número chave do tronco (eu mesmo me deparei com tal situação). Isso ocorre porque a GVT utiliza os headers From e Contact do pacote SIP para fazer a identificação, ao invés de somente o ${CALLERID(num)} provido pelo Asterisk. Para que você possa se identificar com o número do DDR, sete o ${CALLERID(num)} e não utilize o parâmetro fromuser na sua configuração SIP do VoxIP.

Leia também:


terça-feira, 10 de julho de 2012

Lista Openfire-BR - o retorno

A lista Openfire-BR foi recriada.

Foram reinscritos automaticamente na lista todos os usuários que em algum momento enviaram mensagens para a mesma. Possivelmente alguns usuários inativos também foram reinscritos, pois não foi possível identificar quais eram os membros atuais. A estes, peço que façam a gentileza de remover-se novamente e também gostaria que aceitassem minhas sinceras desculpas, mas infelizmente não foi possível realizar algum tipo de filtro para evitar a inscrição indesejada.

O próximo passo agora será recriar os arquivos da lista, o que espero ocorra em breve.

Aos membros da lista que não foram automaticamente inscritos, peço que assinem novamente a mesma para que esta volte à atividade normal.

Obrigado.

segunda-feira, 2 de julho de 2012

Lista Openfire-BR - o reinício

Como todos já devem saber, infelizmente ocorreu um problema com o servidor da ASL que gerenciava as listas de discussões do domínio softwarelivre.org, e, entre as baixas está a lista Openfire-BR.


Devido a este infortúnio, que causou a perda dos dados, será preciso recomeçar a lista, e, para isso, espero contar com o apoio de todos os membros, que precisarão recadastrar-se na mesma, assim que ela for recriada.

Tentarei tomar as seguintes medidas, assim que for possível:
  • Envio de e-mail para todos os membros da lista (ativos e inativos) para que recadastrem-se;
  • Recriação do histórico de mensagens da lista, para que toda a base de conhecimento gerada ao longo de mais de quatro anos não se perca.

Espero poder contar com a colaboração de todos. Assim que a lista estiver disponível, o que deve ocorrer nos próximos dias, um novo post será publicado com as instruções para recadastramento dos interessados.

Até mais!

sexta-feira, 29 de junho de 2012

Problemas na lista Openfire-br


Quem utiliza a lista Openfire-BR deve ter percebido que a mesma está apresentando problemas desde o início da semana. A situação está sendo tratada, e, assim que possível, a lista estará novamente disponível.

Agradeço a paciência e a compreensão dos mais de 600 membros desta lista, que com pouco mais de quatro anos de atividade formou uma bela comunidade em torno deste excelente servidor XMPP.

Abraço a todos.


sexta-feira, 22 de junho de 2012

Free Beer e o fisl 13 (quase um Off-topic)


E amanhã é dia de mais uma brassagem, e a cerveja da vez é a FREE BEER

Para quem não conhece, a FREE BEER é uma Ale com adição de guaraná, cuja receita é publicada sob uma licença Creative Commons (Attribution-ShareAlike 2.5), o que significa que qualquer um pode usá-la para fazer sua própria FREE BEER ou criar uma receita derivada da mesma. Não existem restrições a ganhos financeiros com a FREE BEER (o conceito é de free as in freedom), mas a receita deve ser publicada sob a mesma licença e devidamente creditada.

Pois bem, como o fisl 13 está chegando, e a FREE BEER se identifica com o conceito do mesmo, o pessoal da PROGE decidiu fazer a primeira produção gaúcha desta cerveja, totalizando 150 litros que serão consumidos em um evento da empresa que ocorrerá durante o período do fórum.


E, para ajudar nesta empreitada, alguns membros da Acerva Gaúcha resolveram se unir a causa e participar dessa brassagem (os nomes confirmados até o momento são Felipe Ghellar e Liliane Lewis Xerxenevsky da Caverna dos Ogros e Leonardo Sewald, mestre cervejeiro da Cervejaria Seasons, que irá palestrar sobre a produção de cerveja caseira).

Eu também estarei lá realizando a brassagem de aproximadamente 30 litros da FREE BEER. Em breve um post sobre a aventura. :-)

E se você gosta de cerveja não deixe de acompanhar meu blog sobre essa bebida fantástica, o Bier Tasters.

Até mais!

UPDATE 30/06/2012: fotos da brassagem da Free Beer aqui.

terça-feira, 19 de junho de 2012

Mudanças na liderança do ClamAV

Lembro que meu primeiro contato com o ClamAV foi lá pelo final de 2003,  quando o mesmo substituiu um McAfee que era utilizado em um servidor de correio  rodando Debian. Na época o projeto, que havia sido iniciado em 2002, já estava bastante estável e começava a dar seus primeiros passos em direção ao reconhecimento atual.

De lá para cá passaram-se 8 anos onde foram feitas muitas instalações e várias interações, que culminaram com a vinda do criador do projeto, Tomasz Kojm, ao fisl 10 e também com a criação de novos mirrors brasileiros para o software.


Hoje, passados pouco mais de dez anos de sua criação, Tomasz Kojm se despede da liderança do projeto, que ficará ao cargo de Matt Watchinski, que por 10 anos foi encarregado do Vulnerability Research Team (VRT) da Sourcefire (empresa responsável também pelo Snort, e que adquiriu o ClamAV em 2007). 

Segue, na íntegra, o e-mail enviado por Tomasz Kojm.

"Dear ClamAV Users,


This year, ClamAV celebrates its 10th anniversary. The first release was on May 8, 2002, and included the basic command line scanner “clamscan” and database update tool “freshclam”. With your help, the project that started as a hobby has become a complete antivirus solution and one of the most popular Open Source security tools. Today, ClamAV has more than 2 million active installations and scans hundreds of millions of files every day.



We are incredibly proud of this project and of the development work we have been able to do since joining Sourcefire via acquisition in 2007. We’ve had the opportunity to build out the bytecode engine and logical signatures, and implement dozens of other major improvements that make ClamAV a powerful tool.



While we are incredibly proud of this, it is time for us to make a change. ClamAV is now mature software and we are confident that Sourcefire will successfully continue its development, move it forward and maintain the integrity of its infrastructure. Matt Watchinski, who has headed Sourcefire’s Vulnerability Research Team (VRT™) for 10 years, will continue to lead this project. Joel Esler, the company's Open Source community manager, will also be your main point of contact and advocate.



We cannot fully express how grateful we are to all of the people, organizations and companies that have supported us and who will continue to support the project. This includes all the individuals who have contributed virus signatures and the developers who have contributed code to ClamAV throughout the years, the public mirrors that host our virus databases worldwide, the entities that hosted our web site, nameservers and build farm; the developers and package maintainers who have integrated ClamAV into various Open Source products and distributions and, of course, the Open Source community as a whole.



Finally, we would like to thank all who have trusted ClamAV for scanning and protecting some of the most valuable data on their networks.



Sincerely,



Tomasz Kojm <tomasz.kojm@gmail.com> (twitter: @tkojm)
Luca Gibelli <luca@gibelli.it> (twitter: @nervous)
Alberto Wu <acab@digitalfuture.it>
Edwin Török <edwin@etorok.net>"


Fica aqui o agradecimento a Tomasz e sua equipe pelos anos de dedicação, com votos de sucesso em sua nova empreitada.

E também votos de que a Sourcefire continue fazendo um excelente trabalho e que o ClamAV continue sendo uma referência pelos anos vindouros.

Leia também o post no blog do ClamAV.

domingo, 17 de junho de 2012

De volta à atividade

Quase um ano sem novos posts...

O tempo livre, que parece ficar menor a cada dia que passa, e que anteriormente era muito utilizado na manutenção do blog, foi direcionado para atividades de lazer e para a procura de um novo hobby, que ajudasse a equilibrar o stress diário.

Assim, depois de muitos meses, um hobby foi encontrado e um novo blog acabou nascendo, mas isso não significa que o Mundo Open Source foi abandonado. Muito pelo contrário, tudo isso serve para dar um gás e para recarregar as baterias, que eventualmente ficam com pouca carga. :-)

O blog está ativo e tenho procurado responder os comentários na medida do possível, bem como atender todos no bate papo. A participação nas listas (principalmente na Openfire-br) continua fazendo parte da rotina diária bem como o acompanhamento das novidades e lançamentos relacionados ao conteúdo do blog. Além disso, o twitter tem sido uma ótima ferramenta para compartilhar pequenas dicas e novidades da área.

Para dar uma pequena renovada no blog, criei hoje uma seção chamada Openfire - Links Interessantes, onde listei algumas "novidades" dos últimos meses relacionadas ao serviço, que na medida do possível, irão se tornar posts detalhados.

A todos que acompanham o blog, o meu agradecimento. 

Até mais.

quarta-feira, 29 de junho de 2011

Jappix - cliente web para o Openfire


De tempos em tempos sempre aparece alguém na lista Openfire-BR perguntando sobre clientes XMPP web.

Muitos tentam utilizar o SparkWeb e o Tigase Web Messenger que na minha opinião são os mais conhecidos, mas acabam tendo sempre resultados insatisfatórios.

Só que além desses clientes, outro que merece destaque é o Jappix. Desenvolvido em PHP, o Jappix parece ser uma boa alternativa para quem quer disponibilizar um cliente Web de fácil instalação e com uma boa gama de recursos. 

Um dos seus grandes diferenciais é o mini-chat, com uma interface similar a do chat do Facebook, e que pode ser facilmente adicionada a qualquer outro site existente. Além disso ele também possui uma interface mobile para uso nos navegadores dos dispositivos móveis.

Se você achou tudo isso interessante e deseja testar o Jappix, saiba que a boa notícia é que Dele Olajide da comunidade Ignite Realtime, transformou a ferramenta em um plugin para o Openfire, utilizando o Quercus (implementação Java da linguagem PHP).


Testei o plugin, que tem versões para Openfire 3.7.0 e também para 3.6.4 e gostei da performance e da interface (ainda não pude testar o mini-chat). É importante deixar bem claro que não foi feita qualquer alteração no código original e que bugs e solicitação de novas features devem ser encaminhadas aos desenvolvedores do Jappix.

Faça download do plugin agora, leia o post oficial do plugin com as instruções de instalação e teste você mesmo.


UPDATE 08/03/13: Dica do Daniel Gaspary na lista Openfire-BR: o plugin está sendo mantido e atualizado. Link do projeto: http://code.google.com/p/openfire-jappix/

Fim dos releases de manutenção do Asterisk 1.4 e 1.6.2


Foram lançados hoje os últimos releases de manutenção das versões 1.4 e 1.6.2 do Asterisk.

As versões 1.4.42 e 1.6.2.19 trazem a correção de várias questões reportadas pela comunidade e sua instalação é recomendada.

Apesar de ser o release final de manutenção o suporte a atualizações de segurança será mantido para ambas versões até o dia 21 de abril de 2012, como é possível ver no calendário de versões.

Colaboração em listas de e-mail e comunidades FLOSS - o caso OFMonitoringEraser

Fico muito feliz quando vejo que as iniciativas FLOSS dão frutos positivos. 

Quando criei a lista Openfire-BR há alguns anos não imaginava que ela fosse chegar onde chegou. Com mais de 550 membros, a lista virou referência para a ferramenta e também exemplo do espírito do Software Livre/Open Source.

Além das costumeiras dicas e trocas de experiências, a lista também gera contribuições da comunidade na forma de ferramentas.

Um exemplo simples: ontem surgiu novamente na lista uma discussão sobre como apagar as conversas armazenadas no banco de dados (obtidas com o uso do plugin Monitoring Service). 

Após as dicas tradicionais, sugeri, meio de que brincadeira, que seria interessante alguém criar o OFMonitoringEraser, uma interface web onde o administrador do Openfire informasse o nome do usuário e a ferramenta se encarregasse de deletar as mensagens auditadas deste no DB.

Pois bem, menos de 1 hora depois surge a seguinte mensagem na lista:
"Prezados Colegas,
Estou disponibilizando a função escrita em PHP para fazer a exclusão dos registros conforme nosso amigo Marcelo Zola deseja. Basta alterar as credenciais de acesso ao banco de dados e enviar para servidor HTTP. O mesmo foi escrito para o banco MySQL, mais é plenamente possível utilizar qualquer outro banco já que PHP é muito versátil só necessário alterar uma linha. Segue abaixo endereço para download do mesmo.
http://www.cohabbd.com.br/scripts/ofmonitoringeraser.zip
Se me sobrar um tempo talvez eu possa o desenvolver melhor e também fazer uma versão .jar para importação no openfire."
O script é bastante simples e pode ser melhorado (como o próprio desenvolvedor comentou), então se alguém mais se interessar em fazê-lo (poderia ser informado qual período deve ser deletado, os campos do período poderiam ser obtidos diretamente do DB e por aí vai) fiquem à vontade. De qualquer forma creio que a contribuição inicial já deverá ajudar muitos administradores do Openfire que passam por esse dilema.

Obrigado ao Adrielso Pinto Teodoro, membro da lista, que dedicou seu tempo e demonstrou o verdadeiro espírito FLOSS, compartilhando seu trabalho com a comunidade.

Parabéns !!!

terça-feira, 28 de junho de 2011

Instantbird - versão 1.0 é lançada


Lembram do Instantbird, sobre o qual eu já havia postado em 2007? Pois é, hoje, após anos de desenvolvimento, foi lançada a versão 1.0.


Inicialmente o Instantbird parece ser somente mais um cliente de IM, mas ele merece uma atenção especial por utilizar tecnologias de softwares já consagrados, como o Pidgin (libpurple) e Mozilla Firefox, permitindo o uso de múltiplas redes de mensagem instantânea e abrindo espaço para o desenvolvimento de Add-ons que podem enriquecer ainda mais o cliente (veja os Add-ons já disponíveis). 
Além disso, um sistema de Tags para os contatos (ao invés dos tradicionais grupos) e também uma timeline diferenciada para o Twitter chamam a atenção nessa primeira versão do software.
Leia as notas de lançamento aqui.

segunda-feira, 27 de junho de 2011

Enviando SMS interativamente (Asterisk + XMPP + Digivoice ou Khomp)


Ainda falando sobre Asterisk e XMPP e seus usos (veja mais neste post) uma ideia que tive no final de semana e coloquei hoje em testes foi o envio interativo de SMS utilizando para isso um Asterisk integrado com XMPP (e uma placa Digivoice GSM ou uma placa/EBS Khomp GSM).

Objetivo

Enviar SMS de forma interativa utilizando um servidor Asterisk conectado a um servidor XMPP.

Requisitos

Servidor Asterisk integrado com um servidor XMPP (Openfire, ejabberd, Prosody, etc...) e com o Google Talk. Saiba como realizar esta integração aqui.

O procedimento

Novamente o contexto proposto é muito simples e atende somente um ramal (já que envia a mensagem para um usuário específico) ficando aberto para melhorias via  AEL ou AGI de forma a estender o recurso para todos usuários de seu domínio XMPP e todos seus ramais.

O contexto funciona da seguinte maneira: o usuário disca para o número *767* (*SMS*) e recebe uma mensagem em seu cliente XMPP solicitando o destino do SMS. Após informar o número o usuário recebe uma nova mensagem solicitando que seja informado o conteúdo do SMS. Assim que informar o conteúdo o Asterisk envia o SMS para o destino.
[sendsms]

exten => *767*,1,Answer() ;Atende a chamada
same => n,Set(CANAL=${CUT(CHANNEL,,1)}) ;Armazena o canal
same => n,NoOp(Envio de SMS de ${CANAL}) ;Mensagem do Asterisk
same => n,NoOp(Mandando mensagem para ${JABBERDEST}@jabberpriv.propus.com.br) ;Mensagem do Asterisk
same => n,JabberSend(propuspriv,${JABBERDEST}@jabberpriv.propus.com.br,Envio de SMS - Informe a número de destino) ;Solicita o número do destinatário do SMS
same => n,Set(OPCAODEST=${JABBER_RECEIVE(propuspriv,${JABBERDEST}@jabberpriv.propus.com.br,30)}) ;Recebe o número do destinatário do SMS
same => n,JabberSend(propuspriv,${JABBERDEST}@jabberpriv.propus.com.br,Envio de SMS - Digite a mensagem) ;Solicita o conteúdo do SMS
same => n,Set(OPCAOMSG=${JABBER_RECEIVE(propuspriv,${JABBERDEST}@jabberpriv.propus.com.br,30)}) ;Recebe o conteúdo do SMS
same => n,JabberSend(propuspriv,${JABBERDEST}@jabberpriv.propus.com.br,Enviando a mensagem "${OPCAOMSG}" para ${OPCAODEST}) ;Mensagem para o usuário
same => n,DgSendSMS(g1,${OPCAODEST},${OPCAOMSG}) ;Envia o SMS (g1 = grupo de canais GSM)
same => n,HangUp
Finalizando

Novamente um recurso muito útil e facilmente implementável. E como no post anterior, melhorias no contexto são muito bem vindas. Fique à vontade para contribuir !!!

;-)

UPDATE 28/12/12: para enviar o SMS usando uma placa/EBS da Khomp altere a seguinte linha:

same => n,DgSendSMS(g1,${OPCAODEST},${OPCAOMSG}) ;Envia o SMS (g1 = grupo de canais GSM)

para:

same => n,KSendSMS(recurso,${OPCAODEST},${OPCAOMSG}) ;Envia o SMS

onde recurso pode ser tanto a placa (b0, b1) com um canal específico (b0c2, por exemplo).

sábado, 25 de junho de 2011

Discando interativamente para contas Google Talk (Asterisk + XMPP)


Objetivo

Possibilitar a realização de chamadas de voz para contas Google Talk de forma interativa utilizando um servidor Asterisk conectado a um servidor XMPP.

Requisitos

Servidor Asterisk integrado com um servidor XMPP (Openfire, ejabberd, Prosody, etc...) e com o Google Talk. Saiba como realizar esta integração aqui.

O procedimento

O contexto aqui proposto é bastante simples e atende somente um ramal (já que envia a mensagem para um usuário específico). Você pode aprimorá-lo utilizando AEL ou AGI possibilitando assim estender o recurso para todos usuários de seu domínio XMPP.

O contexto funciona da seguinte maneira: o usuário disca para o número *48255* (*GTALK*) e recebe uma mensagem em seu cliente XMPP solicitando o destino da chamada. Após informar o endereço Google Talk do destinatário o Asterisk realiza a "discagem" e o usuário de imediato já passa a escutar o tom de chamada, como em qualquer outra ligação realizada.

O contexto:
[togtalk]
exten => *48255*,1,Answer() ; atende a chamada
same => n,Set(CANAL=${CUT(CHANNEL,,1)}) ; Armazena o canal que efetuou a chamada
same => n,NoOp(Discando Gtalk de ${CANAL}) ; Mensagens no asterisk
same => n,NoOp(Mandando mensagem para marcelo@xmpp.dominio.com.br) ; Mensagens no Asterisk
same => n,JabberSend(xmpp,marcelo@xmpp.dominio.com.br,Discando Google Talk - Informe a conta de destino) ; Envia msg para o usuário solicitando o endereço GTalk do destinatário
same => n,Set(OPCAO=${JABBER_RECEIVE(xmpp,marcelo@xmpp.dominio.com.br,30)}) ; Aguarda 30 segundos pela resposta do usuário
same => n,JabberSend(xmpp,marcelo@xmpp.dominio.com.br,Discando para ${OPCAO}) ; Envia msg para o usuário informando para onde irá discar
same => n,Dial(gtalk/asterisk-gtalk/${OPCAO}) ; Realiza a chamada
same => n,HangUp
Finalizando

Como podemos observar trata-se de um recurso muito útil e de fácil implementação. 

Caso você desenvolva um contexto mais elaborado não deixe de compartilhá-lo através dos comentários.

:-)

UPDATE 30/05/2012

Segue exemplo de configuração do jabber.conf:

[asterisk-gtalk]
type=client
serverhost=talk.google.com
username=myuser@gmail.com/Talk
secret=mysecret
port=5222
usetls=yes
usesasl=yes
statusmessage="Asterisk Server"
timeout=100

phpLDAPadmin - removendo os avisos nas telas de criação e edição

Uma coisa que acho muito inconveniente nas últimas versões do phpLDAPadmin são os avisos exibidos nas telas de criação e edição.


Esse avisos são gerados quando você usa um template que define um objectClass que seu servidor LDAP não reconhece, pois não tem o respectivo schema instalado.

No entanto, remover tais avisos é uma tarefa bastante simples. Basta editar o arquivo config.php e alterar a opção  hide_template_warning para true:
$config->custom->appearance['hide_template_warning'] = true;
Essa opção, disponível apartir da versão 1.2.0.3 acaba com os avisos indesejados:


quinta-feira, 23 de junho de 2011

fisl 12 - É na próxima semana!!!


E o fisl 12 é na próxima semana!!!

Além das presenças clássicas (como Maddog, Chris Hofmann, Simon Phipps, entre outros), o fisl terá também a presença de muitos palestrantes que estarão participando do evento pela primeira vez.

Destaque (na minha opinião) para as palestras sobre Android (muitas ministradas pelos desenvolvedores do Google) e para as presenças de Jeremy Allison (Samba) e de Tobias Oetiker (RRDTool, MRTG e SmokePing).

Veja a grade de programação do evento aqui.