Archive for the ‘Mobicents’ Category

JBoss In Bossa – Apresentação Mobicents

maio 8, 2010

Pessoal,

Hoje eu e o Antonio fomos ao JBoss In Bossa 2010 palestrar sobre Mobicents.Estávamos meio ansiosos em relação a palestra porque telefonia não é um assunto que seja do conhecimento e do cotidiano da maioria dos desenvolvedores.

Estavam presentes cerca de 20 pessoas e como a maioria não conhecia de telefonia, que é o esperado neste tipo de evento, fizemos uma apresentação que apresentou mais conceitos nos 45 minutos iniciais e na cerca de 1 hora e 15 minutos restantes mostramos o código necessário para esta implementação.

Espero que as pessoas presentes  gostaram da palestra e fiquem à vontade para entrar em contato. Quem quiser acesso ao código é só ir no Git Hub do Antonio: http://github.com/antonioams .

Segue a apresentação que foi utilizada no evento. Maiores informações podem ser obtidas na página com detalhes da Palestra.

Mobicents: Arquitetura de uma plataforma de comunicações

maio 6, 2010

Como já foi dito no post inicial da série o Mobicents é um servidor de aplicação focado em aplicações de convergentes, entende-se por aplicações de convergentes aquelas que demandam de todos os recursos que um servidor de aplicações padrão (Web Container, Message Driven Beans, Enterprise JavaBeans, ORM, etc.) fornecem, e além disto, demandam de suporte a diversos protocolos de comunicação Real Time (SIP, XMPP/Jabber, MGCP, etc.), possibilitando a implementação de aplicações que integram recursos web com recursos de telecomunicações.

O Mobicents é a primeira implementação Opensource da JSR-240 JAIN SLEE (Service Logic Execution Environment) esta JSR define uma padrão para o desenvolvimento de um container para aplicações de telecomunicações que exigem um ambiente de execução de aplicações de alta capacidade de Throughput, com baixa latência, e alta escalabilidade, mais detalhes sobre o JAIN SLEE pode ser visto em: http://www.jainslee.org

Neste post iremos fornecer uma visão geral sobre a arquitetura do Mobicents, e também sobre os recursos fornecidos pelo mesmo.

O Mobicents foi desenvolvido em cima do JBoss, portanto ele desfruta de todos os recursos que o mais famoso servidor de aplicações open source fornece, tais como: console de gerenciamento Web, interface de gerenciamento JMX, SNMP, Container Web, JMS, EJB, ORM, etc.

A novidade que o Mobicents traz, fica por conta dos Resource Adapters ou simplesmente RA, pois todos os protocolos de comunicações suportados por ele são implementados como um RA, na figura abaixo temos as principais camadas da arquitetura do Mobicents:

Arquitetura Mobicents

JSLEE + J2EE Application Server

Container de aplicações, nesta camada temos o JBoss como um servidor de aplicações JavaEE, e além disto temos a implementação do JAIN SLEE, esta camada é responsável pela hospedagem das aplicações e gerenciamentos dos seus diversos recursos.

Management Interfaces

Nesta camada temos todas as interfaces de gerenciamento fornecidas pelo JBoss, Web Management Console, JMX Console, SNMP, etc. desta forma todos os recursos e aplicações disponíveis no Mobicents podem ser gerenciadas por todas as interfaces fornecidas pelo mesmo.

External Resources

Esta é a camada responsável por trazer todos os protocolos de comunicações, e/ou recursos necessários para o desenvolvimento de aplicações de telecomunicações para dentro do Application Server possibilitando as aplicações se utilizarem deste recursos externos que são chamados de RA ou Resource Adapters.

Cada Resource Adapter é responsável pela implementação de um protocolo de comunicação, ou de controle de um recurso externo, desta forma, temos RA’s para implementar protocolos como: SIP, Jabber, XMPP, MGCP, Diameter, dentre outros, e temos RA’s para controlar o Asterisk, e o próprio Mobicents MediaServer para agregar a capacidade de processamento de media (gravação, reprodução de aúdio e vídeo, reconhecimento de dígitos, transcodificação, etc.) dentro das aplicações.

Abaixo temos um exemplo, de qual componente roda em qual camada, além de exemplificar como as mesma se comunicam:

Funcionalidades fornecidas pelo Mobicents:

Protocolos de comunicações suportados

  • SIP
  • Jabber
  • XMPP/Jingle
  • Parlay
  • Diameter
  • MGCP
  • SMPP
  • SS7
  • Camel
  • XCAP
  • TCAP

Recursos de Media

  • RTP formats: G711, G729, GSM, SPEEX, PCM 16bit 8-44kHz (Mono/Stereo)
  • Audio Codecs: G711,G729,GSM, SPEEX
  • Geração e Detecção de sinais DTMF, BUSY, etc. for inband and outofband (RFC-2833) mode
  • Media files *.wav (G711, GSM, PCM), *.spx(SPEEX), *.gsm

Recursos JavaEE

  • JSP Container
  • JMS
  • MDB
  • EJB
  • LDAP
  • HTTP/HTTPS
  • JMX
  • SNMP
  • Etc.

Alta disponibilidade

  • Load Balancer
  • Multi node cluster
  • Session replication

Performance

  • Capacidade de processar até 750 Caps em um único servidor.
  • Possbilidade de montar um cluster com multiplos servidores em Load Balance

Aplicações que podem ser implementadas sob o Mobicents

  • Aplicações IVR
  • Voicemail
  • Unified Messaging
  • Plataforma de Pré pago
  • Plataforma de 0800
  • Softswitch
  • Location Based Services
  • Instant Messaging
  • Presence Server
  • Etc.

Como vocês podem ver quando se trata de aplicações para a Telecom o céu é o limite do Mobicents, pois com todos os recursos que ele já tem embutido mais as possibilidade que o próprio JBoss tem, é uma questão de criatividade, e tempo para implementar uma aplicação.

Abraços,

Antonio Anderson Souza

Colocando o Mobicents com SeamTelcoFramework para rodar

maio 6, 2010

Este post é um tutorial que visa guiar a instalação completa do ambiente de desenvolvimento de aplicações de telecomunicações com foco no protocolo SIP e tratamento de recursos de Media, utilizando o Mobicents e o SeamTelcoFramework o exemplo mais clássico deste tipo de aplicações são as tão famosas URA’s.

Estou utilizando um CentOS 5.4 como base para este tutorial, para quem estiver utilizando este tutorial em outro S.O. só tome cuidado com os caminhos de diretórios, pois podem ser diferentes.

Instalando o Eclipse

Efetue o Download do Eclipse Galileo Eclipse IDE for Java EE Developers para instalar o mesmo basta descompactar na pasta desejada.

Apenas para referencia o meu foi instalado em:

/home/usuario/apps/eclipse

Instalando o Mobicents

Efetue o Download do Mobicents 1.0 com Jboss 4.2.3 (estamos utilizando esta versão pois o SeamTelcoFramework ainda não é compatível com o Mobicents 2 e JBoss 5), para instalar o mesmo basta descompactar na pasta desejada.

Apenas para referencia o meu foi instalado em:

/home/usuario/apps/mss-1.0-jboss-4.2.3.GA

Instalando plugins necessários para o eclipse

  1. Adicione o Jboss tools update site através do menu “Window” > “Preference” > “Install/Update” > “Available Software”
  2. Vá no menu “Help” > “Intall Software”
  3. Selecione o site “Jboss Tools” (site que foi adicionado no passo 1)
  4. Selecione os pulgins listados abaixo que estão dentro de “All JBoss Tools” e prossiga com a instalação dos mesmos:
  • JBoss Tools RichFaces
  • JBossAS Tools
  • JBoss Seam

Instalar o Seam Runtime

Efetue o Download do JBoss Seam 2.1.1GA, para instalar o mesmo basta descompactar na pasta desejada.

Apenas para referencia o meu foi instalado em:

/home/usuario/apps/jboss-seam-2.1.1.GA

Configurando o JBoss Runtime Environment no Eclipse

Vá em “Window”> “Preferences” > “Server” > “Runtime environments” e adicione o Mobicents como um JBoss Community 4.2

Vá em “Window” > “Show view” > “Servers” Adicione um novo servidor baseado no JBoss 4.2 Runtime environment.

Configurando o Seam Runtime no Eclipse

Vá em “Window”> “Preferences” > “JBoss Tools” > “Web” > “Seam” e adicione o JBoss Seam 2.1.1

Pronto neste momento o seu ambiente de desenvolvimento está totalmente instalado, agora é começar a brincar com um projeto.

Criando o primeiro projeto

Crie um novo projeto do tipo “Seam web project”, clique em next até o formulário “Configure Seam Facts Settings”, neste formulário faca as seguintes configurações:

  • Crie um datasource
  • Renomeia os pacotes padrão para um nome apropriado
  • Desative a checkbox “create test project” (Não abordarei sobre os testes neste tutorial).
  • Feito isto clique em “Finish”

Ativar o SeamTelcoFramework em nosso projeto

Adicione os seguintes arquivos a pasta “WEB-INF/lib” do projeto:

Adicione o arquivo sip.xml ao diretório “WEB-INF” do projeto.

Pronto neste momento já temos tudo pronto para começarmos a implementar a lógica da aplicação.

Criando uma Classe para tratar as chamadas SIP

Adicione a classe FirstTelcoClass.java dentro do pacote “<seu pacote>.session”, esta classe implementa uma simples lógica de observar as requisições SIP (INVITE, BYE), quando receber um INVITE atender a chamada e anexar uma sessão de media do Mobicents a mesma, reproduzir um arquivo wav para que você possa ouvir a aplicação funcionando, e depois fazer um eco dos dígitos recebidos (a cada DTMF que você discar a aplicação reproduzirá o mesmo audio).

Inicie a o Servidor, aguarde até 0 Seam iniciar, pois as vezes ele demora algums segundos para subir, para ter certeza que o Seam iniciou verifique a seguinte mensagem no console “13:39:41,641 INFO  [SipApplicationDispatcherImpl] SipApplicationName : FirstTelcoProject/ServletName : SeamEntryPointServlet

Configurando o Mobicents para rotear as request INVITE para nossa aplicação

Após o servidor ter iniciado abra um browser com o seguinte endereço: http://127.0.0.1:8080/sip-servlets-management na coluna que tem o header INVITE adicione a nossa aplicação, apos adicionar clique em save.

Agora nossa aplicação esta pronta para atender chamadas e falar conosco.

Configurando o Ekiga para fazer chamadas

Adicione uma nova conta no Ekiga “Edit” > “Accounts”  > “New” e configure a mesma igual a imagem ao lado (senha pode colocar qualquer coisa).

Não esqueća de ativar a conta criada, deixando ativo a checkbox da mesma.

Hora de testar se tudo isto que fizemos esta funcionando

Utilizando o Ekiga digite qualquer string na caixa de texto na tela principal do mesmo, e clique no icone localizado a direita desta caixa de texto, neste momento o Ekiga enivará uma request INVITE para a nossa aplicaćão, que da forma que esta programada atendera a chamada e reproduzira um audio.

Bom pessoal é isto, agora já temos uma aplicaćão de telefonia baseada no SeamTelcoFramework rodando dentro do Mobicents, agora é hora de botar a sua cachola para funcionar e modificar esta aplicaćão adicionando novas funcionalidades, se quiser depurar a mesma é só colocar um breakpoint no eclipse e fazer a chamada no Ekiga.

Espero que este conetúdo seja util para vocês, qualquer duvida, sugestão, whatever deixa o seu comentário aqui, pois teremos prazer em responder.

Referencias:

http://groups.google.com/group/mobicents-public/web/seam-telco-framework-for-sip-servlets

http://groups.google.com/group/mobicents-public/web/user-guide

Abraços,

Antonio Anderson Souza

Mobicents: Visão Geral – parte 1

março 8, 2010

Aqui iniciamos o primeiro episódio da série de posts sobre o Mobicents. Inaugurando mais um projeto da equipe do Ensinar, formada por profissionais e ex-profissionais da Voice Technology. Nos primeiros artigos da série, iremos dar uma visão geral sobre o Mobicents. E mais uma vez contamos com a participação de vocês, leitores (as), para poder nos dá o feedback da série, fazendo sugestões, críticas, elogios, perguntas, etc. 🙂

Preparem a pipoca, pois o Ensinar Séries começa agora!

Contextualização

No mundo de desenvolvimento de sistemas, existem plataformas de desenvolvimento, cuja existência é voltada para facilitar e prover funcionalidades para que o desenvolvedor possa desenvolver o seu software.

Falando metaforicamente, poderíamos pensar que a plataforma seria como um escritório, por exemplo: um escritório de advocacia é onde advogados exercem as suas funções, e esse tem características diferentes de um escritório de uma empresa de TI.

Analisando melhor a metáfora, percebemos que cada escritório é voltado para um público específico, afinal cada escritório precisa atender as necessidades de quem o utiliza. E uma plataforma de desenvolvimento também é voltada para um público específico.

No caso do Mobicents, ele é voltado para desenvolvedores Java, que objetivam desenvolver soluções para a área de Telecomunicações, possibilitando desenvolver aplicações que tire proveito de diversos protocolos de comunicações, tais como: SIP, MGCP, JABBER, SS7, SMPP, etc. (aqui entra em cartaz a sopa de letrinhas da área de telecom). Apesar de todos os protocolos suportados, uma das maiores aplicações é o desenvolvimento de aplicações VoIP. Quem trabalha ou já teve contato com o mundo de desenvolvimento de sistemas VoIP, deve saber que desenvolver um sistema VoIP não é uma missão tão simples assim. E um dos motivos para isso é que não temos uma plataforma “padrão”/largamente utilizada, aliás, até pouco tempo atrás, nem existia uma plataforma voltada para o desenvolvimento de aplicações VoIP.

Percebendo essa necessidade e a expansão do mercado VoIP, a Redhat adquiriu um projeto iniciado por um pessoal  da Portugal Telecom,  o Mobicents.

O Mobicents é para desenvolvedores. Não tem tanta coisa pronta como no Asterisk, mas é muito melhor do que você começar a desenvolver um servidor SIP do zero. Além disso, ele parece ter sido muito bem feito.

O que é o Mobicents?

Como foi dito anteriormente o Mobicents é uma plataforma para o desenvolvimento de soluções para a área de Telecomunicações, mais precisamente para a área de telefonia VoIP.

O Mobicents é a primeira e única plataforma VoIP Open Source certificada para JSLEE 1.1 e SIP Servlets 1.1. Ele fornece um modelo de componente e um ambiente de execução robusto para as aplicações de Telecom, permitindo o desenvolvimento de aplicações de voz, vídeo e dados.

Ele traz consigo vários outros subprojetos:

  • Um servidor totalmente certificado e compátivel com o JSLEE. Ele ainda implementa algumas das funcionalidades propostas no JAIN SLEE 1.1;
  • Mobicents Sip Servlets, que implementa a JSR-289. O Mobicents Sip Servlets também disponível para ser utilizado a parte, nesta caso usando o servidor de aplicações JBoss ou o Apache Tomcat;
  • Mobicents Media Server,  que suporta tocar media, gravar e conferência em tempo real utilizando o protocolo RTP;
  • Presence Server e outros componentes reutilizáveis para facilitar o desenvolvimento de aplicações.

O primeiro episódio encerra aqui. Não se assuste com tantas siglas, iremos ao longo da série comentar sobre algumas, embora esse não seja o foco. Portanto, se quiser saber mais, acesse os links. 😀

Esta sequência de posts visa mostrar justamente o que o Mobicents é. Será criado um grupo de estudo para produzirmos conteúdo associado ao Mobicents até o dia 15 de abril.

Se nossa meta de conteúdo for cumprida, teremos uma comemoração no Hopi Hari para aqueles que colaborarem na criação do conteúdo.

Participe! Envie e-mail para ensinar@googlegroups.com, dizendo que deseja participar.

Autores:

André Pantalião

Antonio Anderson Souza

Fabrício Ferrari de Campos

Revisado por:

Rodrigo Ribeiro

Fonte:

http://www.mobicents.org/products.html

http://en.wikipedia.org/wiki/Mobicents