Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.
Rodrigo Ricardo Passos Construindo URA e Sistemas de Call Center com Asterisk  www.encontrovoipcenter.com.br
Apresentação <ul><li>Rodrigo Ricardo Passos </li></ul><ul><li>[email_address] </li></ul><ul><li>Cursou Ciências da Computa...
Objetivos <ul><li>Orientar desenvolvedores sobre a utilização do Asterisk para desempenhar o papel de uma URA com programa...
Agenda <ul><li>Asterisk e AEL </li></ul><ul><li>Elaborando o Projeto URA </li></ul><ul><li>Desenvolvimento de URA </li></u...
Asterisk AEL <ul><li>O que é AEL (Asterisk Extension Language) </li></ul><ul><li>Uma estrutura de desenvolvimento de plano...
Asterisk AEL <ul><li>Estrutura do AEL </li></ul><ul><li>Módulo </li></ul><ul><ul><li>/usr/lib/asterisk/modules/pbx_ael.so ...
Asterisk AEL <ul><li>Estrutura do AEL </li></ul><ul><li>Declaração de variáveis globais </li></ul><ul><ul><li>globals { </...
Asterisk AEL
Asterisk AEL
Asterisk AEL
Elaborando o Projeto URA <ul><li>O que preciso fazer antes de programar uma URA? </li></ul><ul><ul><li>Mapear os pontos de...
Elaborando o Projeto URA
Elaborando o Projeto URA
Elaborando o Projeto URA
Elaborando o Projeto URA
Elaborando o Projeto URA
Elaborando o Projeto URA
Desenvolvimento de URA <ul><li>Código da URA em AEL </li></ul><ul><li>Código Cliente do Web Service </li></ul><ul><li>Códi...
Desenvolvimento de URA <ul><li>Asterisk – /etc/asterisk/func_odbc.conf </li></ul><ul><ul><li>[AgentLogin] </li></ul></ul><...
Desenvolvimento de URA <ul><li>Asterisk – /etc/asterisk/func_odbc.conf </li></ul><ul><ul><li>[Audit] </li></ul></ul><ul><u...
Implementação do Projeto URA <ul><li>O que foi utilizado? </li></ul><ul><ul><li>Servidor HP ML110 </li></ul></ul><ul><ul><...
Elaborando o Projeto Contact/Call Center <ul><li>No que devo pensar? </li></ul><ul><ul><li>Requisições do cliente </li></u...
Elaborando o Projeto Contact/Call Center <ul><li>Cenário padrão – comum e precisa ser evitado </li></ul><ul><ul><li>Baixo ...
Elaborando o Projeto Contact/Call Center
Elaborando o Projeto Contact/Call Center O resultado, segundo Charles Darwin!!!   A empresa O Cliente
Elaborando o Projeto Contact/Call Center <ul><li>Então, onde estou errando? </li></ul><ul><li>Meus problemas são: </li></u...
Elaborando o Projeto Contact/Call Center
Elaborando o Projeto Contact/Call Center <ul><li>A solução precisa: </li></ul><ul><ul><li>Ser escalável, ou seja, ter capa...
Elaborando o Projeto Contact/Call Center <ul><li>Informações necessárias </li></ul><ul><ul><li>Quantidade de troncos </li>...
Elaborando o Projeto Contact/Call Center <ul><li>Design de cenários </li></ul><ul><ul><li>Sistema requer gravação de ligaç...
Elaborando o Projeto Contact/Call Center
Elaborando o Projeto Contact/Call Center <ul><li>Design técnico </li></ul><ul><ul><li>Banco de dados MySQL com Replicação ...
Elaborando o Projeto Contact/Call Center <ul><li>Design técnico </li></ul><ul><ul><li>Asterisk 1.4.26 no DAC </li></ul></u...
Elaborando o Projeto Contact/Call Center <ul><li>Design técnico </li></ul><ul><ul><li>Asterisk 1.4.26 no GW </li></ul></ul...
Desenvolvimento do Projeto Contact/Call Center <ul><li>Implementado o DAC </li></ul><ul><ul><li>Antes de começarmos a inst...
Desenvolvimento do Projeto Contact/Call Center <ul><li>Implementado o DAC </li></ul><ul><ul><li>Filas e Agentes – Realtime...
Desenvolvimento do Projeto Contact/Call Center <ul><li>Implementado o DAC </li></ul><ul><ul><li>Plano de discagem </li></u...
Desenvolvimento do Projeto Contact/Call Center <ul><li>Implementado o DAC </li></ul><ul><ul><li>Plano de discagem </li></u...
Desenvolvimento do Projeto Contact/Call Center <ul><li>Implementado o DAC </li></ul><ul><ul><li>Plano de discagem </li></u...
Desenvolvimento do Projeto Contact/Call Center <ul><li>Implementado o DAC </li></ul><ul><ul><li>Plano de discagem </li></u...
Desenvolvimento do Projeto Contact/Call Center <ul><li>Implementado o DAC </li></ul><ul><ul><li>Plano de discagem </li></u...
Desenvolvimento do Projeto Contact/Call Center <ul><li>Implementado o DAC </li></ul><ul><ul><li>Plano de discagem </li></u...
Desenvolvimento do Projeto Contact/Call Center <ul><li>Implementado o DAC </li></ul><ul><ul><li>Plano de discagem </li></u...
Desenvolvimento do Projeto Contact/Call Center <ul><li>Implementado o DAC </li></ul><ul><ul><li>Relatórios </li></ul></ul>...
Desenvolvimento do Projeto Contact/Call Center <ul><li>Implementado o DAC </li></ul><ul><ul><li>Relatórios </li></ul></ul>...
Desenvolvimento do Projeto Contact/Call Center <ul><li>Implementado o DAC </li></ul><ul><ul><li>Relatórios </li></ul></ul>...
Desenvolvimento do Projeto Contact/Call Center <ul><ul><ul><ul><ul><li>AGENTCALLBACKLOGOFF – Agente sai da Fila ACD atravé...
Desenvolvimento do Projeto Contact/Call Center <ul><ul><ul><ul><ul><li>EXITEMPTY – Informa quando um cliente foi desconect...
Desenvolvimento do Projeto Contact/Call Center <ul><li>Implementado o DAC </li></ul><ul><ul><li>Relatórios </li></ul></ul>...
Desenvolvimento do Projeto Contact/Call Center <ul><ul><ul><ul><li>Criar o queue_log como um “ named pipe ” através do com...
Desenvolvimento do Projeto Contact/Call Center <ul><li>Snapshot do queue_log </li></ul><ul><li>1252095064|1252095039.6310|...
Desenvolvimento do Projeto Contact/Call Center <ul><li>Implementado o DAC </li></ul><ul><ul><li>Relatórios </li></ul></ul>...
Desenvolvimento do Projeto Contact/Call Center <ul><ul><ul><li>DROP PROCEDURE `sp_ProcRelatorioQueueCompleted`// </li></ul...
Desenvolvimento do Projeto Contact/Call Center <ul><li>Utilizando o LinuxHA </li></ul><ul><ul><li>O que é necessário: </li...
Desenvolvimento do Projeto Contact/Call Center <ul><li>Configurando o Heatbeat nos servidores DAC01 e DAC02 </li></ul><ul>...
Desenvolvimento do Projeto Contact/Call Center <ul><li>Configurando o MySQL Master-Master no servidores DAC01 e DAC02 </li...
Desenvolvimento do Projeto Contact/Call Center <ul><li>Configurando o MySQL Master-Master no servidores DAC01 e DAC02 </li...
Desenvolvimento do Projeto Contact/Call Center <ul><li>Configurando o MySQL Master-Master no servidores DAC01 e DAC02 </li...
Desenvolvimento do Projeto Contact/Call Center <ul><li>Configurando o MySQL Master-Master no servidores DAC01 e DAC02 </li...
Segmentos de mercado Open Source com Asterisk <ul><li>Open Source  </li></ul><ul><ul><li>AACC - Asterisk Advanced Call Cen...
???? PERGUNTAS ???? <ul><li>E agora... </li></ul>
Empresa <ul><li>IAXCOMM Informática </li></ul><ul><ul><li>Uma empresa 100% brasileira que atua no mercado de redes corpora...
Prochain SlideShare
Chargement dans…5
×

Construindo URA e Sistemas de Call Center com Asterisk

32 740 vues

Publié le

Orientar desenvolvedores sobre a utilização do Asterisk para desempenhar o papel de uma URA com programação avançada.
Estabelecer uma infra-estrutura para empresas que precisam de um sistema de Contact/Call Center
Prover conhecimento para empresas que querem partir para o desenvolvimento de uma solução de Contact/Call Center baseado em Asterisk

Publié dans : Technologie, Business
  • Posso recomendar um site. Ele realmente me ajudou. Chama-se ⇒ www.boaaluna.club ⇐ Eles me ajudaram a escrever minha dissertação.
       Répondre 
    Voulez-vous vraiment ?  Oui  Non
    Votre message apparaîtra ici
  • Verifique a fonte ⇒ www.boaaluna.club ⇐. Este site me ajudou escrever uma monografia.
       Répondre 
    Voulez-vous vraiment ?  Oui  Non
    Votre message apparaîtra ici
  • Você pode obter ajuda de ⇒ www.boaaluna.club ⇐ Sucesso e cumprimentos!
       Répondre 
    Voulez-vous vraiment ?  Oui  Non
    Votre message apparaîtra ici
  • DOWNLOAD THE BOOK INTO AVAILABLE FORMAT (New Update) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download Full EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download Full doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... ......................................................................................................................... ................................................................................................................................... eBook is an electronic version of a traditional print book THE can be read by using a personal computer or by using an eBook reader. (An eBook reader can be a software application for use on a computer such as Microsoft's free Reader application, or a book-sized computer THE is used solely as a reading device such as Nuvomedia's Rocket eBook.) Users can purchase an eBook on diskette or CD, but the most popular method of getting an eBook is to purchase a downloadable file of the eBook (or other reading material) from a Web site (such as Barnes and Noble) to be read from the user's computer or reading device. Generally, an eBook can be downloaded in five minutes or less ......................................................................................................................... .............. Browse by Genre Available eBOOK .............................................................................................................................. Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, CookBOOK, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult, Crime, EBOOK, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, ......................................................................................................................... ......................................................................................................................... .....BEST SELLER FOR EBOOK RECOMMEND............................................................. ......................................................................................................................... Blowout: Corrupted Democracy, Rogue State Russia, and the Richest, Most Destructive Industry on Earth,-- The Ride of a Lifetime: Lessons Learned from 15 Years as CEO of the Walt Disney Company,-- Call Sign Chaos: Learning to Lead,-- StrengthsFinder 2.0,-- Stillness Is the Key,-- She Said: Breaking the Sexual Harassment Story THE Helped Ignite a Movement,-- Atomic Habits: An Easy &amp; Proven Way to Build Good Habits &amp; Break Bad Ones,-- Everything Is Figureoutable,-- What It Takes: Lessons in the Pursuit of Excellence,-- Rich Dad Poor Dad: What the Rich Teach Their Kids About Money THE the Poor and Middle Class Do Not!,-- The Total Money Makeover: Classic Edition: A Proven Plan for Financial Fitness,-- Shut Up and Listen!: Hard Business Truths THE Will Help You Succeed, ......................................................................................................................... .........................................................................................................................
       Répondre 
    Voulez-vous vraiment ?  Oui  Non
    Votre message apparaîtra ici
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (2019 Update) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download Full EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download Full doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... ......................................................................................................................... ................................................................................................................................... eBook is an electronic version of a traditional print book THIS can be read by using a personal computer or by using an eBook reader. (An eBook reader can be a software application for use on a computer such as Microsoft's free Reader application, or a book-sized computer THIS is used solely as a reading device such as Nuvomedia's Rocket eBook.) Users can purchase an eBook on diskette or CD, but the most popular method of getting an eBook is to purchase a downloadable file of the eBook (or other reading material) from a Web site (such as Barnes and Noble) to be read from the user's computer or reading device. Generally, an eBook can be downloaded in five minutes or less ......................................................................................................................... .............. Browse by Genre Available eBooks .............................................................................................................................. Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, ......................................................................................................................... ......................................................................................................................... .....BEST SELLER FOR EBOOK RECOMMEND............................................................. ......................................................................................................................... Blowout: Corrupted Democracy, Rogue State Russia, and the Richest, Most Destructive Industry on Earth,-- The Ride of a Lifetime: Lessons Learned from 15 Years as CEO of the Walt Disney Company,-- Call Sign Chaos: Learning to Lead,-- StrengthsFinder 2.0,-- Stillness Is the Key,-- She Said: Breaking the Sexual Harassment Story THIS Helped Ignite a Movement,-- Atomic Habits: An Easy &amp; Proven Way to Build Good Habits &amp; Break Bad Ones,-- Everything Is Figureoutable,-- What It Takes: Lessons in the Pursuit of Excellence,-- Rich Dad Poor Dad: What the Rich Teach Their Kids About Money THIS the Poor and Middle Class Do Not!,-- The Total Money Makeover: Classic Edition: A Proven Plan for Financial Fitness,-- Shut Up and Listen!: Hard Business Truths THIS Will Help You Succeed, ......................................................................................................................... .........................................................................................................................
       Répondre 
    Voulez-vous vraiment ?  Oui  Non
    Votre message apparaîtra ici

Construindo URA e Sistemas de Call Center com Asterisk

  1. 1. Rodrigo Ricardo Passos Construindo URA e Sistemas de Call Center com Asterisk www.encontrovoipcenter.com.br
  2. 2. Apresentação <ul><li>Rodrigo Ricardo Passos </li></ul><ul><li>[email_address] </li></ul><ul><li>Cursou Ciências da Computação na Universidade Católica de Petrópolis. Atualmente tem desempenhado o papel de gestor da IAXCOMM, um empresa prestadora de serviços na área de desenvolvimento de projetos em Telecomunicações. Foi gestor da Plataforma e Serviços de Comunicações dos clientes do InfoLink, que visa integrar redes de dados e telefonia bem como todo o relacionamento com fornecedores e modelagem do projeto desde o pré-venda até o pós-venda. É especialista em Redes e possui amplo conhecimento em engenharia de tráfego e Gestão de Segurança da Informação. Atuou em grandes projetos de start-up no Rio de Janeiro e em projetos de telecomunicações. Possui profundo conhecimento em Asterisk, equipamentos Cisco, e Sistemas Operacionais Linux, FreeBSD e OpenBSD. </li></ul>
  3. 3. Objetivos <ul><li>Orientar desenvolvedores sobre a utilização do Asterisk para desempenhar o papel de uma URA com programação avançada. </li></ul><ul><li>Estabelecer uma infra-estrutura para empresas que precisam de um sistema de Contact/Call Center </li></ul><ul><li>Prover conhecimento para empresas que querem partir para o desenvolvimento de uma solução de Contact/Call Center baseado em Asterisk </li></ul>
  4. 4. Agenda <ul><li>Asterisk e AEL </li></ul><ul><li>Elaborando o Projeto URA </li></ul><ul><li>Desenvolvimento de URA </li></ul><ul><li>Implementação do Projeto URA </li></ul><ul><li>Elaborando o Projeto Contact/Call Center </li></ul><ul><li>Desenvolvimento do Projeto Contact/Call Center </li></ul><ul><li>Segmentos de mercado Open e Clouse Source com Asterisk </li></ul>
  5. 5. Asterisk AEL <ul><li>O que é AEL (Asterisk Extension Language) </li></ul><ul><li>Uma estrutura de desenvolvimento de plano de discagem em forma de linguagem de programação </li></ul><ul><li>Com o AEL o plano de discagem se torna mais dinâmico o que garante uma elasticidade no tratamento das ligações no Asterisk </li></ul>
  6. 6. Asterisk AEL <ul><li>Estrutura do AEL </li></ul><ul><li>Módulo </li></ul><ul><ul><li>/usr/lib/asterisk/modules/pbx_ael.so </li></ul></ul><ul><li>Arquivo de configuração </li></ul><ul><ul><li>/etc/asterisk/extensions.ael </li></ul></ul>
  7. 7. Asterisk AEL <ul><li>Estrutura do AEL </li></ul><ul><li>Declaração de variáveis globais </li></ul><ul><ul><li>globals { </li></ul></ul><ul><ul><ul><li>PLANORAMAIS=&quot;_5XX&quot;; </li></ul></ul></ul><ul><ul><ul><li>VIRTUAL=&quot;_415[2-9]&quot;; </li></ul></ul></ul><ul><ul><li>}; </li></ul></ul><ul><li>Contextos e extensões </li></ul><ul><ul><li>context EntradaPSTN { </li></ul></ul><ul><ul><li>${VIRTUAL} => { </li></ul></ul><ul><ul><li>Set(RAMAL=${EXTEN}); </li></ul></ul><ul><ul><li>&MGravaRamal(${RAMAL},${CALLERID(num)); </li></ul></ul><ul><ul><li>Dial(SIP/${RAMAL},60,Ttr); </li></ul></ul><ul><ul><li>Congestion(); </li></ul></ul><ul><ul><li>} </li></ul></ul><ul><ul><li>}; </li></ul></ul><ul><li>Macros </li></ul><ul><ul><li>macro MGravaRamalSaida(RAMAL,ORIGEM) { </li></ul></ul><ul><ul><li>Set(recordLocation=saida/PA); </li></ul></ul><ul><ul><li>Set(DateDir=${STRFTIME(${EPOCH},,%d-%m-%Y)}); </li></ul></ul><ul><ul><li>System(/bin/mkdir /var/spool/asterisk/monitor/${recordLocation}/${DateDir}); </li></ul></ul><ul><ul><li>MixMonitor(${recordLocation}/${DateDir}/Hora-${STRFTIME(${EPOCH},,%H-%M-%S)}-Origem-${RAMAL}-Origem-${Origem}.wav,W(4)); </li></ul></ul><ul><ul><li>return; </li></ul></ul><ul><li>}; </li></ul>
  8. 8. Asterisk AEL
  9. 9. Asterisk AEL
  10. 10. Asterisk AEL
  11. 11. Elaborando o Projeto URA <ul><li>O que preciso fazer antes de programar uma URA? </li></ul><ul><ul><li>Mapear os pontos de funções </li></ul></ul><ul><ul><li>Mapear as informações que serão enviadas pelo DTMF </li></ul></ul><ul><ul><li>Criar um dicionário de dados </li></ul></ul><ul><ul><li>Mapear as exceções </li></ul></ul><ul><ul><li>Criar mensagens de áudio para orientar os usuários </li></ul></ul><ul><ul><li>Criar o fluxograma </li></ul></ul>
  12. 12. Elaborando o Projeto URA
  13. 13. Elaborando o Projeto URA
  14. 14. Elaborando o Projeto URA
  15. 15. Elaborando o Projeto URA
  16. 16. Elaborando o Projeto URA
  17. 17. Elaborando o Projeto URA
  18. 18. Desenvolvimento de URA <ul><li>Código da URA em AEL </li></ul><ul><li>Código Cliente do Web Service </li></ul><ul><li>Código Cliente do Banco de Dados Oracle </li></ul>
  19. 19. Desenvolvimento de URA <ul><li>Asterisk – /etc/asterisk/func_odbc.conf </li></ul><ul><ul><li>[AgentLogin] </li></ul></ul><ul><ul><li>dsn=ironvox </li></ul></ul><ul><ul><li>read=select IdUsuario from IronvoxUser where IdUsuario='${SQL_ESC(${ARG1})}' </li></ul></ul><ul><ul><li>prefix=IRONVOX </li></ul></ul><ul><ul><li>[TaskView] </li></ul></ul><ul><ul><li>dsn=ironvox </li></ul></ul><ul><ul><li>read=select idIronvoxTaskView, NumOS, TaskToExec, TaskDone, TaskDHinicial from IronvoxTaskView where NumOS='${SQL_ESC(${ARG1})}' </li></ul></ul><ul><ul><li>prefix=IRONVOX </li></ul></ul><ul><ul><li>[TaskInclude] </li></ul></ul><ul><ul><li>dsn=ironvox </li></ul></ul><ul><ul><li>write=insert into IronvoxTaskView (NumOS, TaskToExec, TaskDHinicial) values ('${SQL_ESC(${VAL1})}', '${SQL_ESC(${VAL2})}', '${SQL_ESC(${VAL3})}') </li></ul></ul><ul><ul><li>prefix=IRONVOX </li></ul></ul><ul><ul><li>[TaskUpdate] </li></ul></ul><ul><ul><li>dsn=ironvox </li></ul></ul><ul><ul><li>write=UPDATE IronvoxTaskView SET TaskDone='${SQL_ESC(${VAL1})}' WHERE idIronvoxTaskView='${SQL_ESC(${ARG1})}' </li></ul></ul><ul><ul><li>prefix=IRONVOX </li></ul></ul>
  20. 20. Desenvolvimento de URA <ul><li>Asterisk – /etc/asterisk/func_odbc.conf </li></ul><ul><ul><li>[Audit] </li></ul></ul><ul><ul><li>dsn=ironvox </li></ul></ul><ul><ul><li>write=INSERT into UraAudit (datahora,idContatos,posicaoura,descricao) values ('${SQL_ESC(${VAL1})}','${SQL_ESC(${VAL2})}','${SQL_ESC(${VAL3})}','${SQL_ESC(${VAL4})}') </li></ul></ul><ul><ul><li>prefix= IRONVOX </li></ul></ul><ul><ul><li>[CloseOS] </li></ul></ul><ul><ul><li>dsn=ironvox </li></ul></ul><ul><ul><li>write=INSERT into OSFechamento (datahora,idContatos,tipoos,numeroos,permissor) values ('${SQL_ESC(${VAL1})}','${SQL_ESC(${VAL2})}','${SQL_ESC(${VAL3})}','${SQL_ESC(${VAL4})}' </li></ul></ul><ul><ul><li>,'${SQL_ESC(${VAL5})}') </li></ul></ul><ul><ul><li>prefix= IRONVOX </li></ul></ul>
  21. 21. Implementação do Projeto URA <ul><li>O que foi utilizado? </li></ul><ul><ul><li>Servidor HP ML110 </li></ul></ul><ul><ul><li>Placa Digivoice </li></ul></ul><ul><ul><li>Debian Linux </li></ul></ul><ul><ul><li>Banco de Dados Mysql </li></ul></ul><ul><ul><li>Perl </li></ul></ul><ul><ul><ul><li>DBD::Mysql </li></ul></ul></ul><ul><ul><ul><li>DBD::Oracle </li></ul></ul></ul><ul><ul><ul><li>SOAP::Lite </li></ul></ul></ul><ul><ul><li>UnixODBC </li></ul></ul><ul><ul><li>Asterisk 1.4.25 </li></ul></ul>
  22. 22. Elaborando o Projeto Contact/Call Center <ul><li>No que devo pensar? </li></ul><ul><ul><li>Requisições do cliente </li></ul></ul><ul><ul><ul><li>Integração com CRM </li></ul></ul></ul><ul><ul><ul><li>Quantidade de ligações </li></ul></ul></ul><ul><ul><ul><li>Gravações de chamadas </li></ul></ul></ul><ul><ul><ul><li>Rota de menor custo </li></ul></ul></ul><ul><ul><ul><li>Relatórios </li></ul></ul></ul><ul><ul><ul><ul><li>Filas ACD </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Agentes </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Tarifação </li></ul></ul></ul></ul><ul><ul><li>Infra-estrutura </li></ul></ul><ul><ul><ul><li>Servidor </li></ul></ul></ul><ul><ul><ul><li>Meio de comunicação (R2, ISDN, SIP Trunk) </li></ul></ul></ul><ul><ul><ul><li>Rede Interna </li></ul></ul></ul><ul><ul><ul><ul><li>Cabeamento de rede </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Switch </li></ul></ul></ul></ul><ul><ul><ul><li>Telefonia </li></ul></ul></ul><ul><ul><ul><ul><li>Telefone IP </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Soft Phone </li></ul></ul></ul></ul><ul><ul><ul><ul><li>FXS </li></ul></ul></ul></ul>
  23. 23. Elaborando o Projeto Contact/Call Center <ul><li>Cenário padrão – comum e precisa ser evitado </li></ul><ul><ul><li>Baixo custo de implementação </li></ul></ul><ul><ul><li>Alto custo de suporte </li></ul></ul><ul><ul><li>Cliente insatisfeito </li></ul></ul><ul><ul><li>Técnico escravo da solução </li></ul></ul><ul><ul><li>Design do ambiente </li></ul></ul><ul><ul><ul><li>Servidor convencional </li></ul></ul></ul><ul><ul><ul><li>Placa E1 sem cancelamento de eco </li></ul></ul></ul><ul><ul><ul><li>Switch sem QoS </li></ul></ul></ul><ul><ul><ul><li>Gateway FXS </li></ul></ul></ul><ul><ul><ul><li>Telefones Analógicos </li></ul></ul></ul><ul><ul><ul><li>Gravação de todos os PA´s </li></ul></ul></ul><ul><ul><ul><li>Relatórios </li></ul></ul></ul>
  24. 24. Elaborando o Projeto Contact/Call Center
  25. 25. Elaborando o Projeto Contact/Call Center O resultado, segundo Charles Darwin!!! A empresa O Cliente
  26. 26. Elaborando o Projeto Contact/Call Center <ul><li>Então, onde estou errando? </li></ul><ul><li>Meus problemas são: </li></ul><ul><ul><li>Quando executo um relatório, as ligações picotam? </li></ul></ul><ul><ul><li>Estou consumindo mais 90% do processamento do meu servidor. </li></ul></ul><ul><ul><li>O que sei: </li></ul></ul><ul><ul><ul><li>Estou com 26 chamadas </li></ul></ul></ul><ul><ul><ul><li>Tenho 4 chamadas na fila de espera </li></ul></ul></ul><ul><ul><ul><li>O cliente reclama que ouve sua própria voz e que a voz do operador está baixa </li></ul></ul></ul><ul><ul><ul><li>O operador diz que a ligação picota e pede ao cliente que repita o que disse </li></ul></ul></ul>
  27. 27. Elaborando o Projeto Contact/Call Center
  28. 28. Elaborando o Projeto Contact/Call Center <ul><li>A solução precisa: </li></ul><ul><ul><li>Ser escalável, ou seja, ter capacidade de crescimento, seja ele na demanda de processamento ou na demanda de crescimento de atendimento; </li></ul></ul><ul><ul><li>Ser redundante. Não pode parar, seja qual for motivo. Quem tem um, não tem nenhum! </li></ul></ul><ul><ul><li>Prover segurança. O cliente confia que não perderá informações das chamadas, sejam as gravações, tarifações ou simplesmente deseja manter histórico do seu atendimento </li></ul></ul><ul><ul><li>Estar de acordo com as leis: DECRETO Nº 6.523, DE 31 DE JULHO DE 2008. </li></ul></ul>
  29. 29. Elaborando o Projeto Contact/Call Center <ul><li>Informações necessárias </li></ul><ul><ul><li>Quantidade de troncos </li></ul></ul><ul><ul><ul><li>Calculadora de Erlang B </li></ul></ul></ul><ul><ul><li>Quantidade de agentes </li></ul></ul><ul><ul><ul><li>Calculadora de Erlang C </li></ul></ul></ul><ul><ul><li>Onde encontro as calculadoras </li></ul></ul><ul><ul><ul><li>http://www.erlang.com.br </li></ul></ul></ul>
  30. 30. Elaborando o Projeto Contact/Call Center <ul><li>Design de cenários </li></ul><ul><ul><li>Sistema requer gravação de ligações </li></ul></ul><ul><ul><li>2 E1´S ISDN com 70% de taxa de ocupação </li></ul></ul><ul><ul><li>Operação requer escuta de ligações </li></ul></ul><ul><ul><li>O projeto prevê solução com alta disponibilidade </li></ul></ul><ul><ul><li>O cliente é um Call Center hibrido </li></ul></ul><ul><ul><li>Rede interna possui switches gerenciáveis e fazem QoS </li></ul></ul>
  31. 31. Elaborando o Projeto Contact/Call Center
  32. 32. Elaborando o Projeto Contact/Call Center <ul><li>Design técnico </li></ul><ul><ul><li>Banco de dados MySQL com Replicação Master-Master </li></ul></ul><ul><ul><li>LinuxHA (Heartbeat) </li></ul></ul><ul><ul><li>Rsync para sincronizar gravações de chamadas </li></ul></ul><ul><ul><li>Pacotes SIP e RTP marcados com o DiffServ </li></ul></ul><ul><ul><ul><li>SIP CS3 </li></ul></ul></ul><ul><ul><ul><li>RTP EF </li></ul></ul></ul><ul><ul><li>Switch gerenciável com filas de prioridades para pacotes SIP e RTP </li></ul></ul><ul><ul><li>E1 (R2 ou ISDN) com cancelamento de eco na interface </li></ul></ul><ul><ul><li>Servidores DAC de fabricante XPTO com processador Dual Xeon Quad </li></ul></ul><ul><ul><li>Servidores GW de fabricante XPTO com processador Xeon escalável até 4 E1 </li></ul></ul><ul><ul><li>DAC gerencia as filas, os ramais SIP e grava as ligações </li></ul></ul><ul><ul><li>GW gerencia chamadas da PSTN e faz entroncamento SIP com o DAC </li></ul></ul><ul><ul><li>DTMF RFC2833 </li></ul></ul><ul><ul><li>Codec G711A </li></ul></ul><ul><ul><li>Gateway FXS do fabricante XPTO com 24 portas </li></ul></ul><ul><ul><li>Telefones IP do fabricante XPTO com suporte a 2 linhas </li></ul></ul><ul><ul><li>Soft Phone com Headset USB do fabricante XPTO com processador DSP </li></ul></ul>
  33. 33. Elaborando o Projeto Contact/Call Center <ul><li>Design técnico </li></ul><ul><ul><li>Asterisk 1.4.26 no DAC </li></ul></ul><ul><ul><ul><li>Plano de discagem em AEL </li></ul></ul></ul><ul><ul><ul><li>Integração com Banco de Dados MySQL com UnixODBC </li></ul></ul></ul><ul><ul><ul><li>Ramais SIP em Realtime </li></ul></ul></ul><ul><ul><ul><li>Filas utilizando Realtime </li></ul></ul></ul><ul><ul><ul><li>Agentes utilizando Realtime </li></ul></ul></ul><ul><ul><ul><li>Gravação utilizando Mixmonitor </li></ul></ul></ul><ul><ul><ul><li>Escuta das ligações utilizando o ChanSpy </li></ul></ul></ul><ul><ul><ul><li>Integração com CRM/ERP utilizando Web Services </li></ul></ul></ul><ul><ul><ul><li>XMPP para envio de mensagem ao Operador </li></ul></ul></ul>
  34. 34. Elaborando o Projeto Contact/Call Center <ul><li>Design técnico </li></ul><ul><ul><li>Asterisk 1.4.26 no GW </li></ul></ul><ul><ul><ul><li>Plano de discagem em AEL </li></ul></ul></ul><ul><ul><ul><li>URA institucional </li></ul></ul></ul><ul><ul><ul><li>Mensagens da URA gravadas no forma WAV </li></ul></ul></ul><ul><ul><ul><li>Troncos SIP utilizando Realtime </li></ul></ul></ul>
  35. 35. Desenvolvimento do Projeto Contact/Call Center <ul><li>Implementado o DAC </li></ul><ul><ul><li>Antes de começarmos a instalar o DAC precisamos acertar as seguintes configurações de Banco de Dados. </li></ul></ul><ul><ul><ul><li>Criando tabelas no MySQL </li></ul></ul></ul><ul><ul><ul><li>Configurando o UnixODBC </li></ul></ul></ul><ul><ul><ul><ul><li>/etc/odbc.ini </li></ul></ul></ul></ul><ul><ul><ul><ul><li>/etc/asterisk/res_odbc.conf </li></ul></ul></ul></ul>
  36. 36. Desenvolvimento do Projeto Contact/Call Center <ul><li>Implementado o DAC </li></ul><ul><ul><li>Filas e Agentes – Realtime </li></ul></ul><ul><ul><ul><li>/etc/asterisk/extconfig.conf </li></ul></ul></ul><ul><ul><ul><li>Informações adicionais em: </li></ul></ul></ul><ul><ul><ul><ul><li>http://www.voip-info.org/wiki/view/Asterisk+RealTime+Queue </li></ul></ul></ul></ul>
  37. 37. Desenvolvimento do Projeto Contact/Call Center <ul><li>Implementado o DAC </li></ul><ul><ul><li>Plano de discagem </li></ul></ul><ul><ul><ul><li>Login, Logout, Pausas no DAC utilizando o AEL </li></ul></ul></ul><ul><ul><ul><ul><li>context funcoes { </li></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>_*72 => { </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>&MProfile(2); </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>Hangup(); </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>} </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>_*73 => { </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>&MProfile(3); </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>Hangup(); </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>} </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>_*82 => { </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>&MProfile(1); </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>Hangup(); </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>} </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>_*83 => { </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>&MProfile(4); </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>Hangup(); </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>} </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><li>} </li></ul></ul></ul></ul>
  38. 38. Desenvolvimento do Projeto Contact/Call Center <ul><li>Implementado o DAC </li></ul><ul><ul><li>Plano de discagem </li></ul></ul><ul><ul><ul><li>Login, Logout, Pausas no DAC utilizando o AEL </li></ul></ul></ul><ul><ul><ul><ul><li>macro MProfile(TIPO) { </li></ul></ul></ul></ul><ul><ul><ul><ul><li>NoCDR(); </li></ul></ul></ul></ul><ul><ul><ul><ul><li>NoOp(${CHANNEL:0:7}); </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Read(senha|pin|4); </li></ul></ul></ul></ul><ul><ul><ul><ul><li>if (${TIPO} = 1){ </li></ul></ul></ul></ul><ul><ul><ul><ul><li>NoOp(&quot;Chamando o agi para autenticacao&quot;); </li></ul></ul></ul></ul><ul><ul><ul><ul><li>AGI(profile.pl|${TIPO}|${senha}|${CHANNEL:0:7}); </li></ul></ul></ul></ul><ul><ul><ul><ul><li>} </li></ul></ul></ul></ul><ul><ul><ul><ul><li>else if (${TIPO} = 2) { </li></ul></ul></ul></ul><ul><ul><ul><ul><li>NoOp(&quot;Chamando o agi para logout&quot;); </li></ul></ul></ul></ul><ul><ul><ul><ul><li>AGI(profile.pl|${TIPO}|${senha}); </li></ul></ul></ul></ul><ul><ul><ul><ul><li>} </li></ul></ul></ul></ul><ul><ul><ul><ul><li>else if (${TIPO} = 3) { </li></ul></ul></ul></ul><ul><ul><ul><ul><li>NoOp(&quot;Adicionando uma pausa no agente&quot;); </li></ul></ul></ul></ul><ul><ul><ul><ul><li>AGI(profile.pl|${TIPO}|${senha}); </li></ul></ul></ul></ul><ul><ul><ul><ul><li>} </li></ul></ul></ul></ul><ul><ul><ul><ul><li>else if (${TIPO} = 4) { </li></ul></ul></ul></ul><ul><ul><ul><ul><li>NoOp(&quot;removendo a pausa do agente&quot;); </li></ul></ul></ul></ul><ul><ul><ul><ul><li>AGI(profile.pl|${TIPO}|${senha}); </li></ul></ul></ul></ul><ul><ul><ul><ul><li>} </li></ul></ul></ul></ul><ul><ul><ul><ul><li>}; </li></ul></ul></ul></ul>
  39. 39. Desenvolvimento do Projeto Contact/Call Center <ul><li>Implementado o DAC </li></ul><ul><ul><li>Plano de discagem </li></ul></ul><ul><ul><ul><li>Login, Logout, Pausas no DAC utilizando o AEL </li></ul></ul></ul><ul><ul><ul><ul><li>AGI em Perl </li></ul></ul></ul></ul>
  40. 40. Desenvolvimento do Projeto Contact/Call Center <ul><li>Implementado o DAC </li></ul><ul><ul><li>Plano de discagem </li></ul></ul><ul><ul><ul><li>Enviando a chamada para um Agente </li></ul></ul></ul><ul><ul><ul><ul><li>context DAC { </li></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>${PLANORAMAIS} => { </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>Set(CHANNEL(language)=pt_BR); </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>Set(extensao=SIP/${EXTEN}); </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>NoOp(${extensao}); </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>NoOp(&quot;Member Interface: ${MEMBERINTERFACE}&quot;); </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>if (&quot;${extensao}&quot; != &quot;&quot;) { </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>NoOp('Chamada para Queue do numero ${CALLERID(num)}'); </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>NoOp(&quot;Estado do Device da extensao ${extensao}: ${DEVSTATE(${extensao})}&quot;); </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>if (&quot;${DEVSTATE(${extensao})}&quot; = &quot;NOT_INUSE&quot;) { </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>SIPAddHeader(Alert-Info: Bellcore-r7); </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>Set(jabber=${DB(jabber/${extensao})}); </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>NoOp(${CALLERID(num)}); </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>&MToXMPP(${CALLERID(num)}|${jabber}); </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>Dial(${extensao},60,Ttr); </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>} </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>else if (&quot;${DEVSTATE(${extensao})}&quot; = &quot;INUSE&quot;){ </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>Busy(); </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>} </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>} </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>} </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><li>}; </li></ul></ul></ul></ul>
  41. 41. Desenvolvimento do Projeto Contact/Call Center <ul><li>Implementado o DAC </li></ul><ul><ul><li>Plano de discagem </li></ul></ul><ul><ul><ul><li>Enviando a chamada para um Agente </li></ul></ul></ul><ul><ul><ul><ul><li>macro MToXMPP(CNumero,DST){ </li></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>AGI(intranet.pl|${CNumero}|${DST}); </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><li>Set(MENSAGEM=Mensagem do PABX - Voce recebera uma ligacao do telefone ${CALLERID(num)}); </li></ul></ul></ul></ul><ul><ul><ul><ul><li>if (&quot;${MATRICULA}&quot; != &quot;&quot;) { </li></ul></ul></ul></ul><ul><ul><ul><ul><li>NoOp('Cliente ${CLIENTE} e Maricula ${MATRICULA}'); </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Set(MENSAGEM=${MENSAGEM} - Provavel Cliente ${CLIENTE}: http:///intranet.xpto.com.br/usuario.itm?Matricula=${MATRICULA}); </li></ul></ul></ul></ul><ul><ul><ul><ul><li>} </li></ul></ul></ul></ul><ul><ul><ul><ul><li>JAbberSend(ipbx,${jabber},${MENSAGEM}); </li></ul></ul></ul></ul><ul><ul><ul><ul><li>}; </li></ul></ul></ul></ul>
  42. 42. Desenvolvimento do Projeto Contact/Call Center <ul><li>Implementado o DAC </li></ul><ul><ul><li>Plano de discagem </li></ul></ul><ul><ul><ul><li>Enviando a chamada para um Agente </li></ul></ul></ul><ul><ul><ul><ul><li>AGI do CTI </li></ul></ul></ul></ul>
  43. 43. Desenvolvimento do Projeto Contact/Call Center <ul><li>Implementado o DAC </li></ul><ul><ul><li>Plano de discagem </li></ul></ul><ul><ul><ul><li>Enviando a chamada para um Agente </li></ul></ul></ul><ul><ul><ul><ul><li>Descrição do processo </li></ul></ul></ul></ul>
  44. 44. Desenvolvimento do Projeto Contact/Call Center <ul><li>Implementado o DAC </li></ul><ul><ul><li>Relatórios </li></ul></ul><ul><ul><ul><li>Depois que uma chamada é atendida entra em uma determinada Fila ACD e é enviada para um agente, todo processo é registrado no /var/log/asterisk/queue_log e se por um acaso não for configurado um NoCDR no plano de discagem todo o processo percorrido por uma ligação fica registrado no MySQL (CDR). </li></ul></ul></ul>
  45. 45. Desenvolvimento do Projeto Contact/Call Center <ul><li>Implementado o DAC </li></ul><ul><ul><li>Relatórios </li></ul></ul><ul><ul><ul><li>Entendendo o queue_log </li></ul></ul></ul><ul><ul><ul><ul><li>O queue_log tem os seguintes registros: </li></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>epoch timestamp of listed action </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>uniqueid of call </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>queue name </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>bridged channel </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>event </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>event parameter 1 </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>event parameter 2 </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>event parameter 3 </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><li>Informações: http://www.voip-info.org/wiki/view/Asterisk+log+queue_log </li></ul></ul></ul></ul>
  46. 46. Desenvolvimento do Projeto Contact/Call Center <ul><li>Implementado o DAC </li></ul><ul><ul><li>Relatórios </li></ul></ul><ul><ul><ul><li>Entendendo o queue_log </li></ul></ul></ul><ul><ul><ul><ul><li>O campo event dá a diretiva do que está acontecendo no app_queue, ou seja, este campo é de extrema importância para encontrar informações sobre o curso de uma chamada em uma Fila ACD </li></ul></ul></ul></ul><ul><ul><ul><ul><li>A informações do campo event são: </li></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>ABANDON – O Cliente que ligou para a Fila ACD abandona/desiste de sua posição na fila. Este evento possui os seguintes parâmetros: position|origposition|waittime </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>AGENTDUMP - O Agente sofre um “Dump” quando espera pelo anuncio da uma chamada </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>AGENTLOGIN – Agente entra na Fila ACD. Este evento possui o seguinte parâmetro: channel </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>AGENTCALLBACKLOGIN – Agente entra na Fila ACD através da aplicação AgentCallbackLogin. Este evento possui o seguinte parâmetro: exten@context </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>AGENTLOGOFF- Agente saiu da Fila ACD. Este evento possui os seguintes parâmetros: channel|logintime </li></ul></ul></ul></ul></ul>
  47. 47. Desenvolvimento do Projeto Contact/Call Center <ul><ul><ul><ul><ul><li>AGENTCALLBACKLOGOFF – Agente sai da Fila ACD através da aplicação AgentCallbackLogin. Este evento possui os seguinte parâmetros: exten@context|logintime|reason </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>COMPLETEAGENT – Informa se a chamada foi desligada pelo Agente. Este evento possui os seguintes parâmetros: holdtime|calltime|origposition </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>COMPLETECALLER – Informa se a chamada foi desligada pelo Cliente. Este evento tem os seguintes parâmetros: holdtime|calltime|origposition </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>CONFIGRELOAD – Informa se o app_queue sofreu um reload nas configurações. </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>CONNECT – Informa quando uma ligação foi conectada a um Agente. Este evento possui os seguintes parâmetros: holdtime|bridgedchannel|uniqueid </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>ENTERQUEUE – Informa quando uma chamada entrou na Fila ACD. Este evento possui os seguintes parâmetros: url|callerid </li></ul></ul></ul></ul></ul>
  48. 48. Desenvolvimento do Projeto Contact/Call Center <ul><ul><ul><ul><ul><li>EXITEMPTY – Informa quando um cliente foi desconectado da fila quando nenhum agente encontrava-se presente. Este evento possui os seguintes parâmetros: position|origposition|waittime </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>EXITWITHKEY – Informa quando um cliente saiu da fila digitando uma tecla no telefone. Este tecla dispara uma ação no app_queue e pode ser vista na aplicação Queue. Este evento possui os seguintes parâmetros: key|position </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>EXITWITHTIMEOUT – Informa quando um cliente foi desconectado da fila porque o tempo de espera excedeu. Este evento possui o seguinte parâmetro: position </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>QUEUESTART – Informa o momento em que a app_queue foi iniciada. </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>SYSCOMPAT - Informa quando uma chamada do atendida por uma agente mas houve uma incompatibilidade pelo tipo de canal e a chamada foi descartada. </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>TRANSFER – Informa quando uma chamada foi transferida por uma agente para um ramal ou uma extensão dentro do Asterisk. Este evento possui os seguintes parâmetros: extension|context|holdtime|calltime </li></ul></ul></ul></ul></ul>
  49. 49. Desenvolvimento do Projeto Contact/Call Center <ul><li>Implementado o DAC </li></ul><ul><ul><li>Relatórios </li></ul></ul><ul><ul><ul><li>O Asterisk, na versão 1.4 não inclui os registros que são gerados pelo app_queue no arquivo queue_log automaticamente, para isso faz-se necessário uma aplicação que lê o queue_log e adicione as informações no MySQL. </li></ul></ul></ul><ul><ul><ul><li>Para resolver esse problema, fez-se necessário o seguintes procedimentos: </li></ul></ul></ul>
  50. 50. Desenvolvimento do Projeto Contact/Call Center <ul><ul><ul><ul><li>Criar o queue_log como um “ named pipe ” através do comando mkfifo : </li></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>mkfifo queue_log </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><li>Criar uma aplicação em Perl que leia o named pipe e faça a inclusão das informações no Banco de Dados MySQL: </li></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>/usr/local/bin/queuelog.pl </li></ul></ul></ul></ul></ul>
  51. 51. Desenvolvimento do Projeto Contact/Call Center <ul><li>Snapshot do queue_log </li></ul><ul><li>1252095064|1252095039.6310|Ouvidoria|mcspereira|CONNECT|16|1252095048.6311 </li></ul><ul><li>1252095155|1252095039.6310|Ouvidoria|mcspereira|COMPLETECALLER|16|91|1 </li></ul><ul><li>1252095294|1252094906.6301|Ouvidoria|lbortolini|COMPLETEAGENT|51|327|1 </li></ul><ul><li>1252095303|NONE|Ouvidoria|lbortolini|PAUSE| </li></ul><ul><li>1252095303|NONE|Publico|lbortolini|PAUSE| </li></ul><ul><li>1252095411|1252095401.6318|Ouvidoria|NONE|ENTERQUEUE||3135613816 </li></ul><ul><li>1252095419|1252095401.6318|Ouvidoria|mcspereira|CONNECT|8|1252095411.6319 </li></ul><ul><li>1252095668|NONE|Ouvidoria|lbortolini|UNPAUSE| </li></ul><ul><li>1252095668|NONE|Publico|lbortolini|UNPAUSE| </li></ul><ul><li>1252095717|1252095401.6318|Ouvidoria|mcspereira|COMPLETECALLER|8|298|1 </li></ul><ul><li>1252096784|1252096774.6340|Ouvidoria|NONE|ENTERQUEUE||5132094847 </li></ul><ul><li>1252096790|1252096774.6340|Ouvidoria|mcspereira|CONNECT|6|1252096784.6341 </li></ul><ul><li>1252096860|1252096850.6345|Ouvidoria|NONE|ENTERQUEUE||4232225291 </li></ul><ul><li>1252096867|1252096850.6345|Ouvidoria|lbortolini|CONNECT|7|1252096860.6346 </li></ul><ul><li>1252096926|1252096774.6340|Ouvidoria|mcspereira|COMPLETECALLER|6|136|1 </li></ul><ul><li>1252096945|1252096935.6350|Ouvidoria|NONE|ENTERQUEUE||3732761147 </li></ul><ul><li>1252096950|1252096935.6350|Ouvidoria|mcspereira|CONNECT|5|1252096945.6351 </li></ul><ul><li>1252097059|1252096935.6350|Ouvidoria|mcspereira|COMPLETEAGENT|5|109|1 </li></ul><ul><li>1252097204|1252097202.6356|Ouvidoria|Local/518@DAC/n|REMOVEMEMBER| </li></ul><ul><li>1252097204|1252097202.6356|Publico|Local/518@DAC/n|REMOVEMEMBER| </li></ul><ul><li>1252097262|1252096850.6345|Ouvidoria|lbortolini|COMPLETEAGENT|7|395|1 </li></ul><ul><li>1252097410|1252097400.6364|Ouvidoria|NONE|ENTERQUEUE||3732761147 </li></ul><ul><li>1252097419|1252097400.6364|Ouvidoria|lbortolini|CONNECT|9|1252097410.6365 </li></ul><ul><li>1252097567|1252097564.6369|Publico|Local/518@DAC/n|ADDMEMBER| </li></ul>
  52. 52. Desenvolvimento do Projeto Contact/Call Center <ul><li>Implementado o DAC </li></ul><ul><ul><li>Relatórios </li></ul></ul><ul><ul><ul><li>Feito a importação do queue_log para o Banco de Dados MySQL, pode-se fazer query´s que permitam unir os registros da tabela cdr com a tabela queue_log. A relação entre as tabelas é o campo uniqueid. </li></ul></ul></ul><ul><ul><ul><li>Exemplo de uma query “stored procedure”: </li></ul></ul></ul>
  53. 53. Desenvolvimento do Projeto Contact/Call Center <ul><ul><ul><li>DROP PROCEDURE `sp_ProcRelatorioQueueCompleted`// </li></ul></ul></ul><ul><ul><ul><li>CREATE DEFINER=`root`@`%` PROCEDURE `sp_ProcRelatorioQueueCompleted`(IN dataInicial varchar(12), IN dataFinal varchar(12), IN queueNome varchar(20)) </li></ul></ul></ul><ul><ul><ul><li>BEGIN </li></ul></ul></ul><ul><ul><ul><li>DECLARE diaInicial varchar(2); </li></ul></ul></ul><ul><ul><ul><li>DECLARE mesInicial varchar(2); </li></ul></ul></ul><ul><ul><ul><li>DECLARE anoInicial varchar(4); </li></ul></ul></ul><ul><ul><ul><li>DECLARE diaFinal varchar(2); </li></ul></ul></ul><ul><ul><ul><li>DECLARE mesFinal varchar(2); </li></ul></ul></ul><ul><ul><ul><li>DECLARE anoFinal varchar(4); </li></ul></ul></ul><ul><ul><ul><li>DECLARE InitialDate VARCHAR(20); </li></ul></ul></ul><ul><ul><ul><li>DECLARE FinalDate VARCHAR(20); </li></ul></ul></ul><ul><ul><ul><li>SET diaInicial = SUBSTR(dataInicial,1,2); </li></ul></ul></ul><ul><ul><ul><li>SET mesInicial = SUBSTR(dataInicial,4,2); </li></ul></ul></ul><ul><ul><ul><li>SET anoInicial = SUBSTR(dataInicial,7,4); </li></ul></ul></ul><ul><ul><ul><li>SET diaFinal = SUBSTR(dataFinal,1,2); </li></ul></ul></ul><ul><ul><ul><li>SET mesFinal = SUBSTR(dataFinal,4,2); </li></ul></ul></ul><ul><ul><ul><li>SET anoFinal = SUBSTR(dataFinal,7,4); </li></ul></ul></ul><ul><ul><ul><li>SET InitialDate = CONCAT(anoInicial,'-',mesInicial,'-',diaInicial,' 00:00:00'); </li></ul></ul></ul><ul><ul><ul><li>SET FinalDate = CONCAT(anoFinal,'-',mesFinal,'-',diaFinal,' 23:59:59'); </li></ul></ul></ul><ul><ul><ul><li>SELECT c.src,q.id,logdate,q.`timestamp`,q.callid,q.qname,q.agent,q.`action`,q.info1,q.info2,q.info3 </li></ul></ul></ul><ul><ul><ul><li>FROM queuelog as q left join cdr as c on q.callid = c.uniqueid </li></ul></ul></ul><ul><ul><ul><li>where q.qname = queueNome and q.logdate >= InitialDate and q.logdate <= FinalDate and q.`action` like 'COMPLETE%'; </li></ul></ul></ul><ul><ul><ul><li>END </li></ul></ul></ul>
  54. 54. Desenvolvimento do Projeto Contact/Call Center <ul><li>Utilizando o LinuxHA </li></ul><ul><ul><li>O que é necessário: </li></ul></ul><ul><ul><ul><li>Heartbeat </li></ul></ul></ul><ul><ul><ul><li>MySQL Master-Master </li></ul></ul></ul>
  55. 55. Desenvolvimento do Projeto Contact/Call Center <ul><li>Configurando o Heatbeat nos servidores DAC01 e DAC02 </li></ul><ul><ul><li>/etc/hosts </li></ul></ul><ul><ul><ul><li>172.16.0.13 dac02. xpto.com.br dac02 </li></ul></ul></ul><ul><ul><ul><li>172.16.0.12 dac01. xpto.com.br dac01 </li></ul></ul></ul><ul><ul><li>/etc/ha.d/ha.cf </li></ul></ul><ul><ul><ul><li>debugfile /var/log/ha-debug </li></ul></ul></ul><ul><ul><ul><li>logfile /var/log/ha-log </li></ul></ul></ul><ul><ul><ul><li>logfacility local0 </li></ul></ul></ul><ul><ul><ul><li>keepalive 2 </li></ul></ul></ul><ul><ul><ul><li>deadtime 5 </li></ul></ul></ul><ul><ul><ul><li>initdead 20 </li></ul></ul></ul><ul><ul><ul><li>udpport 694 </li></ul></ul></ul><ul><ul><ul><li>ucast eth0 172.16.0.13 # Quando for o dac01, colocar 172.16.0.12 </li></ul></ul></ul><ul><ul><ul><li>auto_failback off # Quando for o dac01, colocar remove off e coloca on </li></ul></ul></ul><ul><ul><ul><li>node gw01.xpto.com.br </li></ul></ul></ul><ul><ul><ul><li>node gw02. xpto.com.br </li></ul></ul></ul><ul><ul><li>/etc/ha.d/haresources </li></ul></ul><ul><ul><ul><li>dac01.xpto.com.br IPaddr::172.16.0.10/24/eth0 asterisk </li></ul></ul></ul><ul><ul><li>/etc/asterisk/sip.conf </li></ul></ul><ul><ul><ul><li>bindaddr=172.16.0.10 </li></ul></ul></ul>
  56. 56. Desenvolvimento do Projeto Contact/Call Center <ul><li>Configurando o MySQL Master-Master no servidores DAC01 e DAC02 </li></ul><ul><ul><li>DAC01 como Master </li></ul></ul><ul><ul><ul><li>Editando o /etc/my.cnf </li></ul></ul></ul><ul><ul><ul><li>[mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock old_passwords=1 log-bin binlog-do-db=<asterisk>  # input the database which should be replicated binlog-ignore-db=mysql            # input the database that should be ignored for replication binlog-ignore-db=test server-id=1 [mysql.server] user=mysql basedir=/var/lib [mysqld_safe] err-log=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid </li></ul></ul></ul><ul><ul><ul><li>Rodar o seguinte comando no mysql: </li></ul></ul></ul><ul><ul><ul><ul><li>grant replication slave on *.* to 'replication'@172.16.0.13 identified by 'slave‘; </li></ul></ul></ul></ul><ul><ul><ul><li>Restart no mysql </li></ul></ul></ul><ul><ul><ul><ul><li>service mysqld restart </li></ul></ul></ul></ul>
  57. 57. Desenvolvimento do Projeto Contact/Call Center <ul><li>Configurando o MySQL Master-Master no servidores DAC01 e DAC02 </li></ul><ul><ul><li>DAC02 como Slave </li></ul></ul><ul><ul><ul><li>Editando o /etc/my.cnf </li></ul></ul></ul><ul><ul><ul><ul><li>[mysqld] </li></ul></ul></ul></ul><ul><ul><ul><ul><li>datadir=/var/lib/mysql </li></ul></ul></ul></ul><ul><ul><ul><ul><li>socket=/var/lib/mysql/mysql.sock </li></ul></ul></ul></ul><ul><ul><ul><ul><li>old_passwords=1 </li></ul></ul></ul></ul><ul><ul><ul><ul><li>server-id=2 </li></ul></ul></ul></ul><ul><ul><ul><ul><li>master-host = 172.16.0.12 </li></ul></ul></ul></ul><ul><ul><ul><ul><li>master-user = replication </li></ul></ul></ul></ul><ul><ul><ul><ul><li>master-password = slave </li></ul></ul></ul></ul><ul><ul><ul><ul><li>master-port = 3306 </li></ul></ul></ul></ul><ul><ul><ul><ul><li>[mysql.server] </li></ul></ul></ul></ul><ul><ul><ul><ul><li>user=mysql </li></ul></ul></ul></ul><ul><ul><ul><ul><li>basedir=/var/lib </li></ul></ul></ul></ul><ul><ul><ul><ul><li>[mysqld_safe] </li></ul></ul></ul></ul><ul><ul><ul><ul><li>err-log=/var/log/mysqld.log </li></ul></ul></ul></ul><ul><ul><ul><ul><li>pid-file=/var/run/mysqld/mysqld.pid </li></ul></ul></ul></ul><ul><ul><ul><li>Restart no mysqk </li></ul></ul></ul><ul><ul><ul><ul><li>service mysqld restart </li></ul></ul></ul></ul><ul><ul><ul><li>Rodar o seguinte comando no mysql: </li></ul></ul></ul><ul><ul><ul><ul><li>start slave; </li></ul></ul></ul></ul>
  58. 58. Desenvolvimento do Projeto Contact/Call Center <ul><li>Configurando o MySQL Master-Master no servidores DAC01 e DAC02 </li></ul><ul><ul><li>DAC02 como Master </li></ul></ul><ul><ul><ul><li>Editando o /etc/my.cnf e adicionar após a configuração do master-port </li></ul></ul></ul><ul><ul><ul><ul><li>log-bin                     </li></ul></ul></ul></ul><ul><ul><ul><ul><li>binlog-do-db=asterisk </li></ul></ul></ul></ul><ul><ul><ul><li>Rodar o seguinte comando no mysql: </li></ul></ul></ul><ul><ul><ul><ul><li>grant replication slave on *.* to 'replication'@172.16.0.12 identified by 'slave2‘; </li></ul></ul></ul></ul>
  59. 59. Desenvolvimento do Projeto Contact/Call Center <ul><li>Configurando o MySQL Master-Master no servidores DAC01 e DAC02 </li></ul><ul><ul><li>DAC01 como Slave </li></ul></ul><ul><ul><ul><li>Editando o /etc/my.cnf e adicionar após a configuração do server-id=1 </li></ul></ul></ul><ul><ul><ul><ul><li>master-host = 172.16.0.13 </li></ul></ul></ul></ul><ul><ul><ul><ul><li>master-user = replication </li></ul></ul></ul></ul><ul><ul><ul><ul><li>master-password = slave2 </li></ul></ul></ul></ul><ul><ul><ul><ul><li>master-port = 3306 </li></ul></ul></ul></ul><ul><ul><li>Reiniciar o MySQL no DAC01 e no DAC02 como o comando: service mysqld restart </li></ul></ul><ul><ul><li>DAC01 </li></ul></ul><ul><ul><ul><li>Rodar o seguinte comando no mysql: </li></ul></ul></ul><ul><ul><ul><ul><li>start slave; </li></ul></ul></ul></ul><ul><li>Informações em: http://www.howtoforge.com/mysql_master_master_replication </li></ul>
  60. 60. Segmentos de mercado Open Source com Asterisk <ul><li>Open Source </li></ul><ul><ul><li>AACC - Asterisk Advanced Call Center </li></ul></ul><ul><ul><ul><li>http://sourceforge.net/projects/hanashidialer/ </li></ul></ul></ul><ul><ul><li>Vicidial </li></ul></ul><ul><ul><ul><li>www.vicidial.org </li></ul></ul></ul><ul><ul><li>Elastix </li></ul></ul><ul><ul><ul><li>www.elastix.org </li></ul></ul></ul><ul><ul><li>QueueMetrics – com reservas !!!!! </li></ul></ul><ul><ul><ul><li>http://www.queuemetrics.com/ </li></ul></ul></ul>
  61. 61. ???? PERGUNTAS ???? <ul><li>E agora... </li></ul>
  62. 62. Empresa <ul><li>IAXCOMM Informática </li></ul><ul><ul><li>Uma empresa 100% brasileira que atua no mercado de redes corporativas e projetos de telecomunicações. Tem sua sede em Petrópolis, interior do Rio de Janeiro. </li></ul></ul><ul><ul><li>Endereço: Rua Marechal Deodoro, 209 – Sala 101 </li></ul></ul><ul><ul><li>Centro - Petrópolis - RJ </li></ul></ul><ul><ul><li>Telefones: (21) 3514-6100 – (11) 3508-8777 </li></ul></ul><ul><ul><li>Contato: </li></ul></ul><ul><ul><ul><li>Rodrigo Ricardo Passos </li></ul></ul></ul><ul><ul><ul><li>Email: rodrigopassos@iaxcomm.com.br </li></ul></ul></ul>

×