Criando um Tele-S3x0 com Asterisk

A primeira coisa a fazer é definir como este callcenter vai funcionar, eu acho que as seguintes regras são interessantes:

* A ura deve ser o mais pessoal possível.
* Todas as atendentes deverão ficar na mesma fila para otimizar o aproveitamento da mão de obra.
* Antes de atender elas devem saber o que o cliente espera, se loira, morena, gorda, magra , freira ou qualquer característica que a mente humana pode conceber em uma fantasia.
* As ligações não serão gravadas.
* As atendentes trabalham em turnos compartilhando os mesmos aparelhos telefônicos, mas precisamos tirar relatórios de rendimento individualmente de cada atendente.
* Como os clientes vão pagar a bagatela de R$4,50/min + impostos, se não houver atendente disponível a ligação deve demorar o máximo possível mas de forma que não caracterize alguma pratica abusiva.

Aff, acho que chega… vamos ao planejamento:

A primeira coisa a fazer é criar os agentes, portanto, assim ficaria nosso agents.conf

[general]
persistentagents=yes

[agents]
maxlogintries=5
autologoff=15
autologoffunavail=yes
ackcall=no
endcall=no
wrapuptime=5000
musiconhold => default
updatecdr=yes

agent => 1000,1234,Nome da guria 1
agent => 1001,1234,Nome da guria 2
agent => 1002,1234,Nome da guria 3
agent => 1003,1234,Nome da guria 4
agent => 1004,1234,Nome da guria 5
agent => 1005,1234,Nome da guria 6

Agora precisamos criar a fila no queues.conf

[T3l3SeX0]
musiconhold=strip
timeout=10
announce-holdtime=no
wrapuptime=1
maxlen=2
strategy=rrmemory
joinempty=no
leavewhenempty=yes
ringinuse=no

Observe que joinempty foi definido como no, leavewhenempty está como yes e maxlen 2, isso porque nós não podemos segurar os caras na fila por muito tempo e temos que tratar rapidamente a chamada se não houver ninguém para atender.

Feito isto, vamos criar o script de login/logoff dos agentes no extensions.conf

[callcenter]
exten => *999,1,VMAuthenticate(@agent|)
exten => *999,n,AddQueueMember(T3l3SeX0|local/${AUTH_MAILBOX}@agents/n)
exten => *999,n,Read(AGENT_SIP|agent-newlocation)
exten => *999,n,Set(DB(agent_sip/${AUTH_MAILBOX})=${AGENT_SIP})
exten => *999,n,Playback(agent-loginok)
exten => *999,n,Playback(goodbye)
exten => *999,n,Hangup

exten => *998,1,VMAuthenticate(@agent|)
exten => *998,n,RemoveQueueMember(T3l3SeX0|local/${AUTH_MAILBOX}@agents/n)
exten => *998,n,Set(apaga=${DB_DELETE(agent_sip/${AUTH_MAILBOX})})
exten => *998,n,Playback(agent-loggedoff)
exten => *998,n,Playback(goodbye)
exten => *998,n,Hangup

Esta macro serve apenas para dizer “Bom dia”, “Boa tarde” ou “Boa Noite” dependendo do horário da chamada.

[macro-cumprimenta]
exten => s,1,gotoiftime(18:00-23:59|*|*|*?boanoite)
exten => s,n,gotoiftime(00:00-08:00|*|*|*?bomdia)
exten => s,n,gotoiftime(08:00-12:00|*|*|*?bomdia)
exten => s,n,gotoiftime(12:01-17:59|*|*|*?boatarde)
exten => s,n(bomdia),Playback(T3l3SeX0/bomdia)
exten => s,n,goto(saifora)
exten => s,n(boatarde),Playback(T3l3SeX0/boatarde)
exten => s,n,goto(saifora)
exten => s,n(boanoite),Playback(T3l3SeX0/boanoite)
exten => s,n,goto(saifora)
exten => s,n(saifora),Noop(#### VOLTANDO PRO MENU….)

Atendimento

A idéia deste atendimento é a seguinte:
Cumprimentar.
Verificar se existem 2 ou mais pessoas esperando na fila, se existir já sai fora direto.

O áudio “SemAtendentes” pode dizer algo do tipo “Desculpe, todas as nossas atendentes estão ocupadas no momento, ligue mais tarde, nós estamos aqui 24 horas todos os dias.”

Para otimizar e personalizar o atendimento da gordinha fidida e escrota, de forma que ela possa dizer que é loira, alta de olhos verdes e dominadora nós vamos utilizar o announce da fila.

Uma opção simples seria no atendimento montar uma ura convencional onde o cara digita 1 pra loiras, 2 pra morenas, etc… mas dessa forma nossas atendentes jamais saberiam que o cara tem fetiche por morenas baixinhas e cabeçudas… então vamos fazer diferente. O anouncement da fila vai ser customizado pelo cliente a cada ligação. Para isso vamos utilizar o comando Record com um pouco de engenharia social no áudio da ura.

O áudio “Atendimento” pode conter o seguinte texto: “Olá, meu nome é Márcia e eu estou aqui para encontrar a garota perfeita para você, depois do sinal diga como é a garota com quem você gostaria de conversar”.

Então nós gravamos o que o cara disser e entregamos o áudio Aguarde antes de entregar a chamada para a fila.

O áudio “Aguarde” pode conter o seguinte: “Só um minutinho, eu já estou procurando uma garota especial pra você…”

E então o comando queue.

Como cobrar muito sem prestar serviço pode dar processo, se em 20 segundos ninguém atender, nós executamos o seguinte áudio:

SemAtendimento: “Desculpe, a garota perfeita para você está ocupada no momento, ligue mais tarde, nós estamos aqui 24 horas todos os dias.”

Ok, a teoria é bacana, mas vamos ao código…

[ATENDIMENTO]
exten => T3l3SeX0,1,SetMusicOnHold(Strip)
exten => T3l3SeX0,n,Set(CHANNEL(language)=pt_BR)
exten => T3l3SeX0,n,Answer()
exten => T3l3SeX0,n,Playback(silence/2)
exten => T3l3SeX0,n,macro(cumprimenta)
exten => T3l3SeX0,n,Set(checa=${QUEUE_WAITING_COUNT(T3l3SeX0)})
exten => T3l3SeX0,n,Gotoif($[“${checa}” >= 2]?lotado:fila)
exten => T3l3SeX0,n(fila),Playback(T3l3SeX0/Atendimento)
exten => T3l3SeX0,n,Record(Pervertidos/cliente-%d:wav)
exten => T3l3SeX0,n,Playback(T3l3SeX0/Aguarde)
exten => T3l3SeX0,n,Queue(T3l3SeX0|||${RECORDED_FILE}|20|)
exten => T3l3SeX0,n(fora),Playback(T3l3SeX0/SemAtendimento)
exten => T3l3SeX0,n,Hangup()
exten => T3l3SeX0,n(lotado),Playback(T3l3SeX0/SemAtendentes)
exten => T3l3SeX0,n,Hangup()

Deixe um comentário