• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Snep arquitetura
 

Snep arquitetura

on

  • 1,405 views

Slides da apresentação no Snep Conference

Slides da apresentação no Snep Conference

Statistics

Views

Total Views
1,405
Views on SlideShare
1,405
Embed Views
0

Actions

Likes
1
Downloads
13
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Snep arquitetura Snep arquitetura Presentation Transcript

    • Amim Knabben <amim@thesource.com.br>Rafael Bozzetti <rafael@thesource.com.br>
    • Histórico - SNEP Escrito por Flávio Somensi, em PHP puro. Modelo mantido até a versão 1.2.2. Na versão 1.3.0 o ambiente Zend Framework começou a ser introduzido gradualmente. A série 1.3.x convive com dois ambientes.A série 1.4.x foi totalmente reescrita utilizando o Zend Framework.
    • Como é distribuído. A versão ISO, vem com ambiente previamenteinstalado e configurado. É baseado em Debian. Só Série 1.3.x.Código fonte disponibilizado no formato tar.gz, exige a configuração do ambiente. Pode ser obtido no repositório SVN.
    • Repositório SVN O Projeto é hospedado no Source Forge. O repositório TRUNK é a versão atual de desenvolvimento, não estável.https://snep.svn.sourceforge.net/svnroot/snep/trunk/ Os repositórios TAGS são versões fechadas e estáveis.https://snep.svn.sourceforge.net/svnroot/snep/tags/
    • Versão de Desenvolvimento Para obter do projeto é necessário o Subversion (SVN). A estrutura pode ser atualizada quando necessário.https://snep.svn.sourceforge.net/ svnroot/snep/trunk/
    • Download do Código http://192.168.0.14/dev/ Disponibilizamos o código fonte do SNEP 1.4 para acompanhamento. Baixe-o e Descompacte.tar xvf snep-1.4.tar.gz -C /var/www/
    • O Arquivo de Configuração includes/setup.conf Parametriza dados de configuração do ambiente SNEP
    • Configuração do Apache /install/snep.apacheArquivo previamente configurado que define a configuração no Apache do SNEP Copiar para /etc/apache/sites-enabled/ É baseado no ambiente Debian. Necessita que o serviço seja reiniciado.
    • Banco de DadosA estrutura do banco e os dados iniciais do SNEP estão na pasta default/installer/schema.sql Estrutura de tabelas.system_data.sql Dados iniciais do SNEP.cnl-data.sql Dados para localização de chamadas.
    • Atualização de Banco install / update /● As atualizações do ├── 1.1.0 banco são versionadas │ └── database.sql e encontram-se na ├── 1.1.3 pasta install/update/. │ └── database.sql ├── 1.1.6 │ └── database.sql ├── 1.2.0● A atualização do banco │ └── database.sql de dados deve ser ├── 1.3.0 gradual, versão a │ └── database.sql ├── 1.3.1 versão. │ └── database.sql └── 1.3.2 └── database.sql
    • /etc/asterisk O SNEP possui sua própria estrutura de configuração para o Asterisk.Os arquivos de configuração do SNEP são incluídos pelos do Asterisk.Não devem ser manipulados manualmente. Estão em install/etc/asterisk/
    • AGIs O Asterisk delega o roteamento de ligações ao SNEP. Isso é feito por intermédio do AGI.Deve ser criado um link simbólico chamado /var/lib/asterisk/agi-bin/snep Os Agis do SNEP estão na pasta /agi/
    • Arquivos de SomAs rotinas do SNEP precisam de acesso aos arquivos de som do Asterisk. São os arquivos de áudio padrão e as músicas em espera.Essa integração é feita por links simbólicos criados na pasta /sounds/ pt_BR - /var/lib/asterisk/sounds/pt_BR moh - /var/lib/asterisk/moh
    • UnixodbcO acesso do Asterisk ao banco de dados é feito por intermédio do Unixodbc. O SNEP também disponibiliza os arquivos de referência para a configuração do mesmo. Esta referência diz respeito ao res_odbc.conf Estão na pasta install/etc/ São unixodbc.ini e odbcinst.ini
    • Hands On● Estrutura de Arquivos● setup.conf● Apache.● Banco de dados.● Arquivos /etc/asterisk/● Integração AGI● Arquivos de Som● Unixodbc
    • Estrutura do Projeto Interface do Usuário ( web ) Manipula Dados no Banco de Dados Manipula Arquivos de Configuração Interage com Asterisk via AMI. Interface com Asterisk ( agi )Asterisk delega a Lógica de ligações ao SNEP Por intermédio do AGI
    • Padrão - MVCO MVC é um padrão de arquitetura que o SNEP segue, é utilizado para construir as rotinas da aplicação. Divide de forma organizada as categorias de: VIEW – Apresentação. CONTROLLER - Lógica de Negócio MODEL - Acesso de Dados do projeto. Norteia o desenvolvimento no SNEP.
    • Padrão - MVC ControllerModel View
    • ControllersControllers são classes que representam as rotinas da aplicação.Uma classe de controlador deve estender a classe Zend_Controller_Action. Cada método terá a sua Views. Controle as requisições da aplicação.
    • Controllers<?phpclass AgentsController extendsZend_Controller_Action { public function indexAction() { } public function addAction() { } public function removeAction() { } public function editAction() { }}?>
    • ControllersA estrutura do Controlador e seus métodos definem a URL da aplicação.modulo/controlador/index/modulo/controlador/add/modulo/controlador/remove/modulo/controlador/edit/
    • ViewsAs visões são a interface com o usuário. Emprega PHP, HTML e Javascript. São organizadas por pastas com o nome do controlador.Cada método tem uma view arquivo.phtml
    • Hands On● Estrutura do MVC.● Escrever um controlador.● Escrever uma view.
    • Bibliotecas Representam a camada Model do MVC.lib/Zend – Dá suporte a aplicação como um todo.lib/Snep – Persistência de dados no banco e/ouarquivos de configuração.lib/PBX – Abstração do PBX.
    • lib/SnepPossui classes para manipulação de dados.Estão associadas a interface web do SNEP.Manipula informações do banco de dados earquivos de configuração do SNEP/Asterisk. Classes mais especializadas. Snep_Form, Snep_Db
    • Hands On● Estrutura de Classes.● Exemplo de uso no controlador criado.● CostCenter_Manager● Mostra Snep_Form uma especialização de Zend_Form.
    • lib/PBXClasses que abstraem diversos aspectos do PBX. Interface (Ramais, Troncos) Regra de Negócio Ação de Regra de NegócioInterface com o Asterisk via AMI.
    • lib/PBX$asterisk = PBX_Asterisk_AMI::getInstance();$asterisk->Command(“core show channels”);PBX_Trunks::getAll();
    • AGI Regras DialAsterisk Plan SNEP De Negócio Dialplan Dialplan Interfaces Interfaces Regras Regras Troncos Troncos Ramais Ramais Ações Ações
    • Hands On● Consultas no Asterisk utilizando a classe PBX_Asterisk_AMI.● Exemplo com Ramais
    • lib/ZendBiblioteca Zend, dão suporte a aplicação.Podem ser estendidas por outras Classes.
    • Zend_Registry É um recipiente onde objetos sãoarmazenados. Objetos ficam disponíveis em toda aplicação.Esse mecanismo substitui o uso de variáveis globais. register_globals = Off. Zend_Registry::set(objeto, $objeto); $objeto = Zend_Registry::get(index);
    • Zend_Db$db = Zend_Registry::get(“db”);$select = $db->select() ->from(“peers”) ->where(“name != admin”) ->order(“id”);$stmt = $db->query( $select );$resultado = $stmt->fetchAll( );
    • Zend_Config Faz o parse de arquivos de configuração. .ini ou .xml O SNEP utiliza Zend_Config_Ini para ler o setup.conf e Zend_Registry para guarda-lo.Os parâmetros do setup.conf podem ser obtidosZend_Config::get(config)->system->debug;
    • Zend_TranslateA versão 1.4 do SNEP conta com suporte ainternacionalização.Toda e qualquer string deve ser definida comZend_Translate, desta forma ela torna-sedinâmica.Como o Zend_Translate é um atributo daView, seu uso é diferente na Visão, Controladore Modelo.
    • Zend_Translate// Uso na Visãoecho $this->translate(“Texto”);// Uso no Controladorecho $this->view->translate(“Texto”);// No Model deve-se recuperar a instancia.$i18n = Zend_Registry::get(i18n);$i18n->translate(“Texto”);
    • FormsCada form é definido em XML seguindo um padrão.Define tipo do elemento e validação do formulário.$xml = new Zend_Config_Xml("example.xml");$form = new Snep_Form( $xml );$this->view->form = $form;
    • Forms<?xml version="1.0" encoding="UTF-8"?><form> <elements> <nome> <type>text</type> <options> <label> Nome </label> <required>true</required> </options> </nome> <id> <type> hidden </type> </id> </elements></form>
    • FormsUm objeto do tipo Snep_Form possui diversos métodos herdados de Zend_Form. O método isValid() é responsável por validar os dados do formulário.$isValid = $form->isValid( $_POST );if ( $isValid ) { echo “Form Válido!”;} else { echo “Form Inválido!”;}
    • Hands On● Zend_Config● Zend_Db● Zend_Form● Zend_Translate
    • Obrigado! Perguntas? Sugestões?Rafael Bozzettirafael@thesource.com.brrafael@opens.com.br@rafaelbozzetti