TAG | VoIP
10
Colocando o Mobicents com SeamTelcoFramework para rodar
No comments · Posted by antonioams in Mobicents, Tutorial, VoIP
Post publicado originalmente no ensinar em 06/05/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
- Adicione o Jboss tools update site através do menu “Window” > “Preference” > “Install/Update” > “Available Software”
- Vá no menu “Help” > “Intall Software”
- Selecione o site “Jboss Tools” (site que foi adicionado no passo 1)
- 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.
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:
- mobicents-media-server-msc-api-1.0.0.GA.jar
- mobicents-media-server-msc-api-local-impl-1.0.0.GA.jar
- sip-servlets-seam-entrypoint-2.3.jar
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
eclipse · how to · java · jboss · Mobicents · telecom · Tutorial · VoIP
10
Mobicents: Arquitetura de uma plataforma de comunicações
No comments · Posted by antonioams in Mobicents
Post publicado originalmente no ensinar em 06/05/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:
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
11
Operadora VoIP First Class, vamos montar uma?
8 Comments · Posted by antonioams in VoIP, opensource
VoIP já uma tecnologia madura há um bom tempo, e atualmente já contamos no Brasil com várias operadoras de telefonia IP que fornecem serviços VoIP, mas infelizmente a maioria das operadoras do mercado são imaturas, e não contam com a infra-estrutura que uma operadora de telefonia necessita para prestar um serviço First Class, como nós clientes exigentes esperamos.
O serviço de telefonia fixa sempre foi um dos serviços mais confiáveis, até quando não tem energia elétrica o telefone funciona, pane na rede de telefonia fixa não um evento comum mesmo aqui no Brasil, portanto o grau de exigência das pessoas quanto a um serviço de telefonia é muito alto, e justamente por este paradigma de qualidade estabelecido, e pela falta de profissionalismo de várias operadoras VoIP, muitas pessoas acham que a tecnologia não funciona, mas ela pode funcionar muito bem, até melhor que a telefonia convencional (inclusive no quesito qualidade de audio), mas para isto acontecer existem uma série de fatores que necessitam serem levados em conta para montar um operadora VoIP First Class.
Vou começar a escrever uma série de posts com o objetivo de apresentar todos os aspectos necessários para montar uma operadora VoIP com foco em qualidade de serviço, com uma infra-estrutura 100% redundante e escalável de forma horizontal (bastando adicionar servidores), e como não basta-se tendo uma boa equação custo beneficio, pois esta infra é totalmente em servidores padrão de mercado e utilizando projetos Open Source.
Os seguintes tópicos serão abordados em vário posts subsequentes:
Infraestrutura da operadora:
- Infra-estrutura IP
- Topologia
- Planejamento Fisico e Lógico
- Implementação do Firewall em Cluster
- Link de internet
- Endereçamento IP próprio ou subcontratado
- Roteamento
- Largura de banda
- SIP Server
- Opensips
- Banco de dados
- Cluster
- Softphones e Hardphones
- Review dos principais Softphones e Hardphones do mercado
- Billing
- Sistema de mediação, rating, geração de fatura
- Terminações
- Interconexão com outras operadoras
- Serviços de valor adicionado
- PABX Virtual
- URA
- Discador Preditivo
- Mensagem Unificadas
- etc.
- Aspectos legais
- Licenças e suas variações
Infraestrutura necessária no cliente:
- Infra-estrutura IP
- Topologia
- Planejamento Fisico e Lógico
- Link de internet
A idéia é ter no mínimo um post por semana, e gostaria de fazer está série de forma interativa, ou seja aguardo os comentários de vocês para guiar a ordem dos posts, e os assuntos a serem abordados, se acharem que está faltando algum ponto a abordar deixa um comentário que será adicionado.
Qualquer dúvida sobre o assunto sintam-se a vontade para me perguntar via formspring ou email terei prazer em responder.
“A corrida para a excelência não tem linha de chegada.” David Rye
ip · opensource · operadora · telefonia · VoIP



