{"id":164,"date":"2011-09-05T12:51:06","date_gmt":"2011-09-05T15:51:06","guid":{"rendered":"http:\/\/blog.abratel.com.br\/?p=164"},"modified":"2011-09-05T12:51:06","modified_gmt":"2011-09-05T15:51:06","slug":"criando-um-tele-s3x0-com-asterisk","status":"publish","type":"post","link":"https:\/\/blog.abratel.com.br\/?p=164","title":{"rendered":"Criando um Tele-S3x0 com Asterisk"},"content":{"rendered":"<p>A primeira coisa a fazer \u00e9 definir como este callcenter vai funcionar, eu acho que as seguintes regras s\u00e3o interessantes:<\/p>\n<p>    * A ura deve ser o mais pessoal poss\u00edvel.<br \/>\n    * Todas as atendentes dever\u00e3o ficar na mesma fila para otimizar o aproveitamento da m\u00e3o de obra.<br \/>\n    * Antes de atender elas devem saber o que o cliente espera, se loira, morena, gorda, magra , freira ou qualquer caracter\u00edstica que a mente humana pode conceber em uma fantasia.<br \/>\n    * As liga\u00e7\u00f5es n\u00e3o ser\u00e3o gravadas.<br \/>\n    * As atendentes trabalham em turnos compartilhando os mesmos aparelhos telef\u00f4nicos, mas precisamos tirar relat\u00f3rios de rendimento individualmente de cada atendente.<br \/>\n    * Como os clientes v\u00e3o pagar a bagatela de R$4,50\/min + impostos, se n\u00e3o houver atendente dispon\u00edvel a liga\u00e7\u00e3o deve demorar o m\u00e1ximo poss\u00edvel  mas de forma que n\u00e3o caracterize alguma pratica abusiva.<\/p>\n<p>Aff, acho que chega\u2026 vamos ao planejamento:<\/p>\n<p>A primeira coisa a fazer \u00e9 criar os agentes, portanto, assim ficaria nosso agents.conf<\/p>\n<p>[general]<br \/>\npersistentagents=yes<\/p>\n<p>[agents]<br \/>\nmaxlogintries=5<br \/>\nautologoff=15<br \/>\nautologoffunavail=yes<br \/>\nackcall=no<br \/>\nendcall=no<br \/>\nwrapuptime=5000<br \/>\nmusiconhold => default<br \/>\nupdatecdr=yes<\/p>\n<p>agent => 1000,1234,Nome da guria 1<br \/>\nagent => 1001,1234,Nome da guria 2<br \/>\nagent => 1002,1234,Nome da guria 3<br \/>\nagent => 1003,1234,Nome da guria 4<br \/>\nagent => 1004,1234,Nome da guria 5<br \/>\nagent => 1005,1234,Nome da guria 6<\/p>\n<p>Agora precisamos criar a fila no queues.conf<\/p>\n<p>[T3l3SeX0]<br \/>\nmusiconhold=strip<br \/>\ntimeout=10<br \/>\nannounce-holdtime=no<br \/>\nwrapuptime=1<br \/>\nmaxlen=2<br \/>\nstrategy=rrmemory<br \/>\njoinempty=no<br \/>\nleavewhenempty=yes<br \/>\nringinuse=no<\/p>\n<p>Observe que joinempty foi definido como no, leavewhenempty est\u00e1 como yes e maxlen 2, isso porque n\u00f3s n\u00e3o podemos segurar os caras na fila por muito tempo e temos que tratar rapidamente a chamada se n\u00e3o houver ningu\u00e9m para atender.<\/p>\n<p>Feito isto, vamos criar o script de login\/logoff dos agentes no extensions.conf<\/p>\n<p>[callcenter]<br \/>\nexten => *999,1,VMAuthenticate(@agent|)<br \/>\nexten => *999,n,AddQueueMember(T3l3SeX0|local\/${AUTH_MAILBOX}@agents\/n)<br \/>\nexten => *999,n,Read(AGENT_SIP|agent-newlocation)<br \/>\nexten => *999,n,Set(DB(agent_sip\/${AUTH_MAILBOX})=${AGENT_SIP})<br \/>\nexten => *999,n,Playback(agent-loginok)<br \/>\nexten => *999,n,Playback(goodbye)<br \/>\nexten => *999,n,Hangup<\/p>\n<p>exten => *998,1,VMAuthenticate(@agent|)<br \/>\nexten => *998,n,RemoveQueueMember(T3l3SeX0|local\/${AUTH_MAILBOX}@agents\/n)<br \/>\nexten => *998,n,Set(apaga=${DB_DELETE(agent_sip\/${AUTH_MAILBOX})})<br \/>\nexten => *998,n,Playback(agent-loggedoff)<br \/>\nexten => *998,n,Playback(goodbye)<br \/>\nexten => *998,n,Hangup<\/p>\n<p>Esta macro serve apenas para dizer \u201cBom dia\u201d, \u201cBoa tarde\u201d ou \u201cBoa Noite\u201d dependendo do hor\u00e1rio da chamada.<\/p>\n<p>[macro-cumprimenta]<br \/>\nexten => s,1,gotoiftime(18:00-23:59|*|*|*?boanoite)<br \/>\nexten => s,n,gotoiftime(00:00-08:00|*|*|*?bomdia)<br \/>\nexten => s,n,gotoiftime(08:00-12:00|*|*|*?bomdia)<br \/>\nexten => s,n,gotoiftime(12:01-17:59|*|*|*?boatarde)<br \/>\nexten => s,n(bomdia),Playback(T3l3SeX0\/bomdia)<br \/>\nexten => s,n,goto(saifora)<br \/>\nexten => s,n(boatarde),Playback(T3l3SeX0\/boatarde)<br \/>\nexten => s,n,goto(saifora)<br \/>\nexten => s,n(boanoite),Playback(T3l3SeX0\/boanoite)<br \/>\nexten => s,n,goto(saifora)<br \/>\nexten => s,n(saifora),Noop(#### VOLTANDO PRO MENU\u2026.)<\/p>\n<p>Atendimento<\/p>\n<p>A id\u00e9ia deste atendimento \u00e9 a seguinte:<br \/>\nCumprimentar.<br \/>\nVerificar se existem 2 ou mais pessoas esperando na fila, se existir j\u00e1 sai fora direto.<\/p>\n<p>O \u00e1udio \u201cSemAtendentes\u201d pode dizer algo do tipo \u201cDesculpe, todas as nossas atendentes est\u00e3o ocupadas no momento, ligue mais tarde, n\u00f3s estamos aqui 24 horas todos os dias.\u201d<\/p>\n<p>Para otimizar e personalizar o atendimento da gordinha fidida e escrota, de forma que ela possa dizer que \u00e9 loira, alta de olhos verdes e dominadora n\u00f3s vamos utilizar o announce da fila.<\/p>\n<p>Uma op\u00e7\u00e3o simples seria no atendimento montar uma ura convencional onde o cara digita 1 pra loiras, 2 pra morenas, etc\u2026 mas dessa forma nossas atendentes jamais saberiam que o cara tem fetiche por morenas baixinhas e cabe\u00e7udas\u2026 ent\u00e3o vamos fazer diferente.  O anouncement da fila vai ser customizado pelo cliente a cada liga\u00e7\u00e3o. Para isso vamos utilizar o comando Record com um pouco de engenharia social no \u00e1udio da ura.<\/p>\n<p>O \u00e1udio \u201cAtendimento\u201d pode conter o seguinte texto: \u201cOl\u00e1, meu nome \u00e9 M\u00e1rcia e eu estou aqui para encontrar a garota perfeita para voc\u00ea, depois do sinal diga como \u00e9 a garota com quem voc\u00ea gostaria de conversar\u201d.<\/p>\n<p>Ent\u00e3o n\u00f3s gravamos o que o cara disser e entregamos o \u00e1udio Aguarde antes de entregar a chamada para a fila.<\/p>\n<p>O \u00e1udio \u201cAguarde\u201d pode conter o seguinte: \u201cS\u00f3 um minutinho, eu j\u00e1 estou procurando uma garota especial pra voc\u00ea\u2026\u201d<\/p>\n<p>E ent\u00e3o o comando queue.<\/p>\n<p>Como cobrar muito sem prestar servi\u00e7o pode dar processo, se em 20 segundos ningu\u00e9m atender, n\u00f3s executamos o seguinte \u00e1udio:<\/p>\n<p>SemAtendimento: \u201cDesculpe, a garota perfeita para voc\u00ea est\u00e1 ocupada no momento, ligue mais tarde, n\u00f3s estamos aqui 24 horas todos os dias.\u201d<\/p>\n<p>Ok, a teoria \u00e9 bacana, mas vamos ao c\u00f3digo\u2026<\/p>\n<p>[ATENDIMENTO]<br \/>\nexten => T3l3SeX0,1,SetMusicOnHold(Strip)<br \/>\nexten => T3l3SeX0,n,Set(CHANNEL(language)=pt_BR)<br \/>\nexten => T3l3SeX0,n,Answer()<br \/>\nexten => T3l3SeX0,n,Playback(silence\/2)<br \/>\nexten => T3l3SeX0,n,macro(cumprimenta)<br \/>\nexten => T3l3SeX0,n,Set(checa=${QUEUE_WAITING_COUNT(T3l3SeX0)})<br \/>\nexten => T3l3SeX0,n,Gotoif($[&#8220;${checa}&#8221; >= 2]?lotado:fila)<br \/>\nexten => T3l3SeX0,n(fila),Playback(T3l3SeX0\/Atendimento)<br \/>\nexten => T3l3SeX0,n,Record(Pervertidos\/cliente-%d:wav)<br \/>\nexten => T3l3SeX0,n,Playback(T3l3SeX0\/Aguarde)<br \/>\nexten => T3l3SeX0,n,Queue(T3l3SeX0|||${RECORDED_FILE}|20|)<br \/>\nexten => T3l3SeX0,n(fora),Playback(T3l3SeX0\/SemAtendimento)<br \/>\nexten => T3l3SeX0,n,Hangup()<br \/>\nexten => T3l3SeX0,n(lotado),Playback(T3l3SeX0\/SemAtendentes)<br \/>\nexten => T3l3SeX0,n,Hangup()<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A primeira coisa a fazer \u00e9 definir como este callcenter vai funcionar, eu acho que as seguintes regras s\u00e3o interessantes: * A ura deve ser o mais pessoal poss\u00edvel. * Todas as atendentes dever\u00e3o ficar na mesma fila para otimizar o aproveitamento da m\u00e3o de&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[],"_links":{"self":[{"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=\/wp\/v2\/posts\/164"}],"collection":[{"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=164"}],"version-history":[{"count":0,"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=\/wp\/v2\/posts\/164\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=164"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=164"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=164"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}