Вы находитесь на странице: 1из 62

Construindo URA e Sistemas de Call Center com Asterisk

Rodrigo Ricardo Passos

www.encontrovoipcenter.com.br

Apresentao
Rodrigo Ricardo Passos rodrigopassos@iaxcomm.com.br
Cursou Cincias da Computao na Universidade Catlica de Petrpolis. Atualmente tem desempenhado o papel de gestor da IAXCOMM, um empresa prestadora de servios na rea de desenvolvimento de projetos em Telecomunicaes. Foi gestor da Plataforma e Servios de Comunicaes 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 ps-venda. especialista em Redes e possui amplo conhecimento em engenharia de trfego e Gesto de Segurana da Informao. Atuou em grandes projetos de start-up no Rio de Janeiro e em projetos de telecomunicaes. Possui profundo conhecimento em Asterisk, equipamentos Cisco, e Sistemas Operacionais Linux, FreeBSD e OpenBSD.

Objetivos Orientar desenvolvedores sobre a utilizao do Asterisk para desempenhar o papel de uma URA com programao avanada. 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 soluo de Contact/Call Center baseado em Asterisk

Agenda Asterisk e AEL Elaborando o Projeto URA Desenvolvimento de URA Implementao do Projeto URA Elaborando o Projeto Contact/Call Center Desenvolvimento do Projeto Contact/Call Center Segmentos de mercado Open e Clouse Source com Asterisk

Asterisk AEL O que AEL (Asterisk Extension Language) Uma estrutura de desenvolvimento de plano de discagem em forma de linguagem de programao Com o AEL o plano de discagem se torna mais dinmico o que garante uma elasticidade no tratamento das ligaes no Asterisk

Asterisk AEL Estrutura do AEL Mdulo /usr/lib/asterisk/modules/pbx_ael.so Arquivo de configurao /etc/asterisk/extensions.ael

Asterisk AEL
Estrutura do AEL Declarao de variveis globais globals {
PLANORAMAIS="_5XX"; VIRTUAL="_415[2-9]";

}; Contextos e extenses context EntradaPSTN { ${VIRTUAL} => { Set(RAMAL=${EXTEN}); &MGravaRamal(${RAMAL},${CALLERID(num)); Dial(SIP/${RAMAL},60,Ttr); Congestion(); } }; Macros macro MGravaRamalSaida(RAMAL,ORIGEM) { Set(recordLocation=saida/PA); Set(DateDir=${STRFTIME(${EPOCH},,%d-%m-%Y)}); System(/bin/mkdir /var/spool/asterisk/monitor/${recordLocation}/${DateDir}); MixMonitor(${recordLocation}/${DateDir}/Hora-${STRFTIME(${EPOCH},,%H-%M-%S)}-Origem-${RAMAL}-Origem${Origem}.wav,W(4)); return; };

Asterisk AEL Estrutura do AEL Includes


context RamalTotal { includes { funcoes; Emergencia; LigacaoCobrar; ZeroOitocentos; ServicosOperadoras; Interno; } };

Comentrios
// Este um comentrio no AEL

Variveis
context teste { Set(Numero=1234);
Numero=1234; Set(CALLERID(num)=21212121); CALLERID(num)=21212121;

};

Asterisk AEL
Estrutura do AEL Condicionais
macro MDND(ramal,tipo) { if (${tipo} = ON) { NoCDR(); Set(DB(${ramal}/dnd/disponivel)=1); Playback(do-not-disturb&activated); Hangup(); } else { if (${tipo} = OFF) { NoCDR(); Set(null=${DB_DELETE(${ramal}/dnd/disponivel)}); Playback(do-not-disturb&de-activated); Hangup(); } } };

Laos
context loops { 1 => { for (x=0; ${x} < 3; x=${x} + 1) { Verbose(x is ${x} !); }; }; 2 => { y=10; while (${y} >= 0) { Verbose(y is ${y} !); y=${y}-1; }; }; };

Asterisk AEL Estrutura do AEL Goto e Label


context gotoexample { s => { begin: NoOp(Infinite Loop! yay!); Wait(1); goto begin; }; 3 => { goto s|begin; }; 4 => { goto gotoexample|s|begin; }; }; context gotoexample2 { s => { end: goto gotoexample|s|begin; }; };

Jumps
context incoming { s => { NoOp(Handle the call here); }; 18665551212 => jump s; }; context home { 399 => jump s@incoming; };

Elaborando o Projeto URA


O que preciso fazer antes de programar uma URA? Mapear os pontos de funes Mapear as informaes que sero enviadas pelo DTMF Criar um dicionrio de dados Mapear as excees Criar mensagens de udio para orientar os usurios Criar o fluxograma

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 Cdigo da URA em AEL Cdigo Cliente do Web Service Cdigo Cliente do Banco de Dados Oracle

Desenvolvimento de URA
Asterisk /etc/asterisk/func_odbc.conf [AgentLogin] dsn=ironvox read=select IdUsuario from IronvoxUser where IdUsuario='${SQL_ESC(${ARG1})}' prefix=IRONVOX [TaskView] dsn=ironvox read=select idIronvoxTaskView, NumOS, TaskToExec, TaskDone, TaskDHinicial from IronvoxTaskView where NumOS='${SQL_ESC(${ARG1})}' prefix=IRONVOX [TaskInclude] dsn=ironvox write=insert into IronvoxTaskView (NumOS, TaskToExec, TaskDHinicial) values ('${SQL_ESC(${VAL1})}', '${SQL_ESC(${VAL2})}', '${SQL_ESC(${VAL3})}') prefix=IRONVOX [TaskUpdate] dsn=ironvox write=UPDATE IronvoxTaskView SET TaskDone='${SQL_ESC(${VAL1})}' WHERE idIronvoxTaskView='${SQL_ESC(${ARG1})}' prefix=IRONVOX

Desenvolvimento de URA
Asterisk /etc/asterisk/func_odbc.conf [Audit] dsn=ironvox write=INSERT into UraAudit (datahora,idContatos,posicaoura,descricao) values ('${SQL_ESC(${VAL1})}','${SQL_ESC(${VAL2})}','${SQL_ESC(${VAL3})}','${SQL_ESC( ${VAL4})}') prefix=IRONVOX [CloseOS] dsn=ironvox write=INSERT into OSFechamento (datahora,idContatos,tipoos,numeroos,permissor) values ('${SQL_ESC(${VAL1})}','${SQL_ESC(${VAL2})}','${SQL_ESC(${VAL3})}','${SQL_ESC( ${VAL4})}' ,'${SQL_ESC(${VAL5})}') prefix=IRONVOX

Implementao do Projeto URA


O que foi utilizado? Servidor HP ML110 Placa Digivoice Debian Linux Banco de Dados Mysql Perl
DBD::Mysql DBD::Oracle SOAP::Lite

UnixODBC Asterisk 1.4.25

Elaborando o Projeto Contact/Call Center


No que devo pensar? Requisies do cliente
Integrao com CRM Quantidade de ligaes Gravaes de chamadas Rota de menor custo Relatrios
Filas ACD Agentes Tarifao

Infra-estrutura
Servidor Meio de comunicao (R2, ISDN, SIP Trunk) Rede Interna
Cabeamento de rede Switch Telefone IP Soft Phone FXS

Telefonia

Elaborando o Projeto Contact/Call Center


Cenrio padro comum e precisa ser evitado Baixo custo de implementao Alto custo de suporte Cliente insatisfeito Tcnico escravo da soluo Design do ambiente
Servidor convencional Placa E1 sem cancelamento de eco Switch sem QoS Gateway FXS Telefones Analgicos Gravao de todos os PAs Relatrios

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


Ento, onde estou errando? Meus problemas so: Quando executo um relatrio, as ligaes picotam? Estou consumindo mais 90% do processamento do meu servidor. O que sei:
Estou com 26 chamadas Tenho 4 chamadas na fila de espera O cliente reclama que ouve sua prpria voz e que a voz do operador est baixa O operador diz que a ligao picota e pede ao cliente que repita o que disse

Elaborando o Projeto Contact/Call Center

Elaborando o Projeto Contact/Call Center


A soluo precisa: Ser escalvel, ou seja, ter capacidade de crescimento, seja ele na demanda de processamento ou na demanda de crescimento de atendimento; Ser redundante. No pode parar, seja qual for motivo. Quem tem um, no tem nenhum! Prover segurana. O cliente confia que no perder informaes das chamadas, sejam as gravaes, tarifaes ou simplesmente deseja manter histrico do seu atendimento Estar de acordo com as leis: DECRETO N 6.523, DE 31 DE JULHO DE 2008.

Elaborando o Projeto Contact/Call Center

Informaes necessrias Quantidade de troncos


Calculadora de Erlang B

Quantidade de agentes
Calculadora de Erlang C

Onde encontro as calculadoras


http://www.erlang.com.br

Elaborando o Projeto Contact/Call Center

Design de cenrios Sistema requer gravao de ligaes 2 E1S ISDN com 70% de taxa de ocupao Operao requer escuta de ligaes O projeto prev soluo com alta disponibilidade O cliente um Call Center hibrido Rede interna possui switches gerenciveis e fazem QoS

Elaborando o Projeto Contact/Call Center

Elaborando o Projeto Contact/Call Center


Design tcnico Banco de dados MySQL com Replicao Master-Master LinuxHA (Heartbeat) Rsync para sincronizar gravaes de chamadas Pacotes SIP e RTP marcados com o DiffServ
SIP CS3 RTP EF

Switch gerencivel com filas de prioridades para pacotes SIP e RTP E1 (R2 ou ISDN) com cancelamento de eco na interface Servidores DAC de fabricante XPTO com processador Dual Xeon Quad Servidores GW de fabricante XPTO com processador Xeon escalvel at 4 E1 DAC gerencia as filas, os ramais SIP e grava as ligaes GW gerencia chamadas da PSTN e faz entroncamento SIP com o DAC DTMF RFC2833 Codec G711A Gateway FXS do fabricante XPTO com 24 portas Telefones IP do fabricante XPTO com suporte a 2 linhas Soft Phone com Headset USB do fabricante XPTO com processador DSP

Elaborando o Projeto Contact/Call Center

Design tcnico Asterisk 1.4.26 no DAC


Plano de discagem em AEL Integrao com Banco de Dados MySQL com UnixODBC Ramais SIP em Realtime Filas utilizando Realtime Agentes utilizando Realtime Gravao utilizando Mixmonitor Escuta das ligaes utilizando o ChanSpy Integrao com CRM/ERP utilizando Web Services XMPP para envio de mensagem ao Operador

Elaborando o Projeto Contact/Call Center

Design tcnico Asterisk 1.4.26 no GW


Plano de discagem em AEL URA institucional Mensagens da URA gravadas no forma WAV Troncos SIP utilizando Realtime

Desenvolvimento do Projeto Contact/Call Center

Implementado o DAC Antes de comearmos a instalar o DAC precisamos acertar as seguintes configuraes de Banco de Dados.
Criando tabelas no MySQL Configurando o UnixODBC
/etc/odbc.ini /etc/asterisk/res_odbc.conf

Desenvolvimento do Projeto Contact/Call Center

Implementado o DAC Filas e Agentes Realtime


/etc/asterisk/extconfig.conf Informaes adicionais em:
http://www.voip-info.org/wiki/view/Asterisk+RealTime+Queue

Desenvolvimento do Projeto Contact/Call Center


Implementado o DAC Plano de discagem
Login, Logout, Pausas no DAC utilizando o AEL
context funcoes { _*72 => { &MProfile(2); Hangup(); } _*73 => { &MProfile(3); Hangup(); } _*82 => { &MProfile(1); Hangup(); } _*83 => { &MProfile(4); Hangup(); } }

Desenvolvimento do Projeto Contact/Call Center


Implementado o DAC Plano de discagem
Login, Logout, Pausas no DAC utilizando o AEL
macro MProfile(TIPO) { NoCDR(); NoOp(${CHANNEL:0:7}); Read(senha|pin|4); if (${TIPO} = 1){ NoOp("Chamando o agi para autenticacao"); AGI(profile.pl|${TIPO}|${senha}|${CHANNEL:0:7}); } else if (${TIPO} = 2) { NoOp("Chamando o agi para logout"); AGI(profile.pl|${TIPO}|${senha}); } else if (${TIPO} = 3) { NoOp("Adicionando uma pausa no agente"); AGI(profile.pl|${TIPO}|${senha}); } else if (${TIPO} = 4) { NoOp("removendo a pausa do agente"); AGI(profile.pl|${TIPO}|${senha}); } };

Desenvolvimento do Projeto Contact/Call Center

Implementado o DAC Plano de discagem


Login, Logout, Pausas no DAC utilizando o AEL
AGI em Perl

Desenvolvimento do Projeto Contact/Call Center


Implementado o DAC Plano de discagem
Enviando a chamada para um Agente
context DAC { ${PLANORAMAIS} => { Set(CHANNEL(language)=pt_BR); Set(extensao=SIP/${EXTEN}); NoOp(${extensao}); NoOp("Member Interface: ${MEMBERINTERFACE}"); if ("${extensao}" != "") { NoOp('Chamada para Queue do numero ${CALLERID(num)}'); NoOp("Estado do Device da extensao ${extensao}: ${DEVSTATE(${extensao})}"); if ("${DEVSTATE(${extensao})}" = "NOT_INUSE") { SIPAddHeader(Alert-Info: Bellcore-r7); Set(jabber=${DB(jabber/${extensao})}); NoOp(${CALLERID(num)}); &MToXMPP(${CALLERID(num)}|${jabber}); Dial(${extensao},60,Ttr); } else if ("${DEVSTATE(${extensao})}" = "INUSE"){ Busy(); } } } };

Desenvolvimento do Projeto Contact/Call Center

Implementado o DAC Plano de discagem


Enviando a chamada para um Agente
macro MToXMPP(CNumero,DST){
AGI(intranet.pl|${CNumero}|${DST}); Set(MENSAGEM=Mensagem do PABX - Voce recebera uma ligacao do telefone ${CALLERID(num)}); if ("${MATRICULA}" != "") { NoOp('Cliente ${CLIENTE} e Maricula ${MATRICULA}'); Set(MENSAGEM=${MENSAGEM} - Provavel Cliente ${CLIENTE}: http:///intranet.xpto.com.br/usuario.itm?Matricula=${MATRICULA}); } JAbberSend(ipbx,${jabber},${MENSAGEM});

};

Desenvolvimento do Projeto Contact/Call Center

Implementado o DAC Plano de discagem


Enviando a chamada para um Agente
AGI do CTI

Desenvolvimento do Projeto Contact/Call Center

Implementado o DAC
Plano de discagem
Enviando a chamada para um Agente
Descrio do processo

Desenvolvimento do Projeto Contact/Call Center

Implementado o DAC Relatrios


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 no for configurado um NoCDR no plano de discagem todo o processo percorrido por uma ligao fica registrado no MySQL (CDR).

Desenvolvimento do Projeto Contact/Call Center

Implementado o DAC Relatrios


Entendendo o queue_log
O queue_log tem os seguintes registros: epoch timestamp of listed action uniqueid of call queue name bridged channel event event parameter 1 event parameter 2 event parameter 3 Informaes: http://www.voip-info.org/wiki/view/Asterisk+log+queue_log

Desenvolvimento do Projeto Contact/Call Center


Implementado o DAC Relatrios
Entendendo o queue_log
O campo event d a diretiva do que est acontecendo no app_queue, ou seja, este campo de extrema importncia para encontrar informaes sobre o curso de uma chamada em uma Fila ACD A informaes do campo event so: ABANDON O Cliente que ligou para a Fila ACD abandona/desiste de sua posio na fila. Este evento possui os seguintes parmetros: position|origposition|waittime AGENTDUMP - O Agente sofre um Dump quando espera pelo anuncio da uma chamada AGENTLOGIN Agente entra na Fila ACD. Este evento possui o seguinte parmetro: channel AGENTCALLBACKLOGIN Agente entra na Fila ACD atravs da aplicao AgentCallbackLogin. Este evento possui o seguinte parmetro: exten@context AGENTLOGOFF- Agente saiu da Fila ACD. Este evento possui os seguintes parmetros: channel|logintime

Desenvolvimento do Projeto Contact/Call Center


AGENTCALLBACKLOGOFF Agente sai da Fila ACD atravs da aplicao AgentCallbackLogin. Este evento possui os seguinte parmetros: exten@context|logintime|reason COMPLETEAGENT Informa se a chamada foi desligada pelo Agente. Este evento possui os seguintes parmetros: holdtime|calltime|origposition COMPLETECALLER Informa se a chamada foi desligada pelo Cliente. Este evento tem os seguintes parmetros: holdtime|calltime|origposition CONFIGRELOAD Informa se o app_queue sofreu um reload nas configuraes. CONNECT Informa quando uma ligao foi conectada a um Agente. Este evento possui os seguintes parmetros: holdtime|bridgedchannel|uniqueid ENTERQUEUE Informa quando uma chamada entrou na Fila ACD. Este evento possui os seguintes parmetros: url|callerid

Desenvolvimento do Projeto Contact/Call Center


EXITEMPTY Informa quando um cliente foi desconectado da fila quando nenhum agente encontrava-se presente. Este evento possui os seguintes parmetros: position|origposition|waittime EXITWITHKEY Informa quando um cliente saiu da fila digitando uma tecla no telefone. Este tecla dispara uma ao no app_queue e pode ser vista na aplicao Queue. Este evento possui os seguintes parmetros: key|position EXITWITHTIMEOUT Informa quando um cliente foi desconectado da fila porque o tempo de espera excedeu. Este evento possui o seguinte parmetro: position QUEUESTART Informa o momento em que a app_queue foi iniciada. SYSCOMPAT - Informa quando uma chamada do atendida por uma agente mas houve uma incompatibilidade pelo tipo de canal e a chamada foi descartada. TRANSFER Informa quando uma chamada foi transferida por uma agente para um ramal ou uma extenso dentro do Asterisk. Este evento possui os seguintes parmetros: extension|context|holdtime|calltime

Desenvolvimento do Projeto Contact/Call Center

Implementado o DAC Relatrios


O Asterisk, na verso 1.4 no inclui os registros que so gerados pelo app_queue no arquivo queue_log automaticamente, para isso faz-se necessrio uma aplicao que l o queue_log e adicione as informaes no MySQL. Para resolver esse problema, fez-se necessrio o seguintes procedimentos:

Desenvolvimento do Projeto Contact/Call Center


Criar o queue_log como um named pipe atravs do comando mkfifo: mkfifo queue_log Criar uma aplicao em Perl que leia o named pipe e faa a incluso das informaes no Banco de Dados MySQL: /usr/local/bin/queuelog.pl

Desenvolvimento do Projeto Contact/Call Center


Snapshot do queue_log

1252095064|1252095039.6310|Ouvidoria|mcspereira|CONNECT|16|1252095048.6311 1252095155|1252095039.6310|Ouvidoria|mcspereira|COMPLETECALLER|16|91|1 1252095294|1252094906.6301|Ouvidoria|lbortolini|COMPLETEAGENT|51|327|1 1252095303|NONE|Ouvidoria|lbortolini|PAUSE| 1252095303|NONE|Publico|lbortolini|PAUSE| 1252095411|1252095401.6318|Ouvidoria|NONE|ENTERQUEUE||3135613816 1252095419|1252095401.6318|Ouvidoria|mcspereira|CONNECT|8|1252095411.6319 1252095668|NONE|Ouvidoria|lbortolini|UNPAUSE| 1252095668|NONE|Publico|lbortolini|UNPAUSE| 1252095717|1252095401.6318|Ouvidoria|mcspereira|COMPLETECALLER|8|298|1 1252096784|1252096774.6340|Ouvidoria|NONE|ENTERQUEUE||5132094847 1252096790|1252096774.6340|Ouvidoria|mcspereira|CONNECT|6|1252096784.6341 1252096860|1252096850.6345|Ouvidoria|NONE|ENTERQUEUE||4232225291 1252096867|1252096850.6345|Ouvidoria|lbortolini|CONNECT|7|1252096860.6346 1252096926|1252096774.6340|Ouvidoria|mcspereira|COMPLETECALLER|6|136|1 1252096945|1252096935.6350|Ouvidoria|NONE|ENTERQUEUE||3732761147 1252096950|1252096935.6350|Ouvidoria|mcspereira|CONNECT|5|1252096945.6351 1252097059|1252096935.6350|Ouvidoria|mcspereira|COMPLETEAGENT|5|109|1 1252097204|1252097202.6356|Ouvidoria|Local/518@DAC/n|REMOVEMEMBER| 1252097204|1252097202.6356|Publico|Local/518@DAC/n|REMOVEMEMBER| 1252097262|1252096850.6345|Ouvidoria|lbortolini|COMPLETEAGENT|7|395|1 1252097410|1252097400.6364|Ouvidoria|NONE|ENTERQUEUE||3732761147 1252097419|1252097400.6364|Ouvidoria|lbortolini|CONNECT|9|1252097410.6365 1252097567|1252097564.6369|Publico|Local/518@DAC/n|ADDMEMBER|

Desenvolvimento do Projeto Contact/Call Center

Implementado o DAC Relatrios


Feito a importao do queue_log para o Banco de Dados MySQL, pode-se fazer querys que permitam unir os registros da tabela cdr com a tabela queue_log. A relao entre as tabelas o campo uniqueid. Exemplo de uma query stored procedure:

Desenvolvimento do Projeto Contact/Call Center


DROP PROCEDURE `sp_ProcRelatorioQueueCompleted`// CREATE DEFINER=`root`@`%` PROCEDURE `sp_ProcRelatorioQueueCompleted`(IN dataInicial varchar(12), IN dataFinal varchar(12), IN queueNome varchar(20)) BEGIN DECLARE diaInicial varchar(2); DECLARE mesInicial varchar(2); DECLARE anoInicial varchar(4); DECLARE diaFinal varchar(2); DECLARE mesFinal varchar(2); DECLARE anoFinal varchar(4); DECLARE InitialDate VARCHAR(20); DECLARE FinalDate VARCHAR(20); SET diaInicial = SUBSTR(dataInicial,1,2); SET mesInicial = SUBSTR(dataInicial,4,2); SET anoInicial = SUBSTR(dataInicial,7,4); SET diaFinal = SUBSTR(dataFinal,1,2); SET mesFinal = SUBSTR(dataFinal,4,2); SET anoFinal = SUBSTR(dataFinal,7,4); SET InitialDate = CONCAT(anoInicial,'-',mesInicial,'-',diaInicial,' 00:00:00'); SET FinalDate = CONCAT(anoFinal,'-',mesFinal,'-',diaFinal,' 23:59:59');

SELECT c.src,q.id,logdate,q.`timestamp`,q.callid,q.qname,q.agent,q.`action`,q.info1,q.info2,q.info3 FROM queuelog as q left join cdr as c on q.callid = c.uniqueid where q.qname = queueNome and q.logdate >= InitialDate and q.logdate <= FinalDate and q.`action` like 'COMPLETE%'; END

Desenvolvimento do Projeto Contact/Call Center

Utilizando o LinuxHA O que necessrio:


Heartbeat MySQL Master-Master

Desenvolvimento do Projeto Contact/Call Center


Configurando o Heatbeat nos servidores DAC01 e DAC02 /etc/hosts
172.16.0.13 172.16.0.12 dac02. xpto.com.br dac02 dac01. xpto.com.br dac01

/etc/ha.d/ha.cf
debugfile /var/log/ha-debug logfile /var/log/ha-log logfacility local0 keepalive 2 deadtime 5 initdead 20 udpport 694 ucast eth0 172.16.0.13 # Quando for o dac01, colocar 172.16.0.12 auto_failback off # Quando for o dac01, colocar remove off e coloca on node gw01.xpto.com.br node gw02. xpto.com.br

/etc/ha.d/haresources
dac01.xpto.com.br IPaddr::172.16.0.10/24/eth0 asterisk

/etc/asterisk/sip.conf
bindaddr=172.16.0.10

Desenvolvimento do Projeto Contact/Call Center


Configurando o MySQL Master-Master no servidores DAC01 e DAC02 DAC01 como Master
Editando o /etc/my.cnf [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 Rodar o seguinte comando no mysql:
grant replication slave on *.* to 'replication'@172.16.0.13 identified by 'slave;

Restart no mysql
service mysqld restart

Desenvolvimento do Projeto Contact/Call Center


Configurando o MySQL Master-Master no servidores DAC01 e DAC02 DAC02 como Slave
Editando o /etc/my.cnf
[mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock old_passwords=1 server-id=2 master-host = 172.16.0.12 master-user = replication master-password = slave master-port = 3306 [mysql.server] user=mysql basedir=/var/lib [mysqld_safe] err-log=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid

Restart no mysqk
service mysqld restart

Rodar o seguinte comando no mysql:


start slave;

Desenvolvimento do Projeto Contact/Call Center

Configurando o MySQL Master-Master no servidores DAC01 e DAC02 DAC02 como Master


Editando o /etc/my.cnf e adicionar aps a configurao do master-port
log-bin binlog-do-db=asterisk

Rodar o seguinte comando no mysql:


grant replication slave on *.* to 'replication'@172.16.0.12 identified by 'slave2;

Desenvolvimento do Projeto Contact/Call Center


Configurando o MySQL Master-Master no servidores DAC01 e DAC02 DAC01 como Slave
Editando o /etc/my.cnf e adicionar aps a configurao do server-id=1
master-host = 172.16.0.13 master-user = replication master-password = slave2 master-port = 3306

Reiniciar o MySQL no DAC01 e no DAC02 como o comando: service mysqld restart DAC01
Rodar o seguinte comando no mysql:
start slave;

Informaes em: http://www.howtoforge.com/mysql_master_master_replication

Segmentos de mercado Open Source com Asterisk

Open Source AACC - Asterisk Advanced Call Center


http://sourceforge.net/projects/hanashidialer/

Vicidial
www.vicidial.org

Elastix
www.elastix.org

QueueMetrics com reservas !!!!!


http://www.queuemetrics.com/

E agora...
???? PERGUNTAS ????

Empresa
IAXCOMM Informtica Uma empresa 100% brasileira que atua no mercado de redes corporativas e projetos de telecomunicaes. Tem sua sede em Petrpolis, interior do Rio de Janeiro. Endereo: Rua Marechal Deodoro, 209 Sala 101 Centro - Petrpolis - RJ Telefones: (21) 3514-6100 (11) 3508-8777 Contato:
Rodrigo Ricardo Passos Email: rodrigopassos@iaxcomm.com.br

Вам также может понравиться