sábado, 31 de março de 2012

B-ACD

O B-ACD é outra feature muito útil que podemos configurar no CME, e que com certeza pode ser testada no LAB. Basicamente, são scripts TCL desenvolvidos pela própria Cisco e executam duas funções: Auto Atendimento (Pressione 1 para isso, 2 para aquilo, etc) e tratamento de filas em Hunt Groups, coisa que o CUCM não faz (bom, fazia com o Auto Attendant até a versão 7.x, mas na 8.x não mais).
Portanto, o funcionamento dessa aplicação se da através de dois scripts, que você pode baixar através do seu CCO no site da Cisco. Esses dois scripts são:
app-b-acd-aa-2.x.x.x.tcl: Faz a parte do Auto Atendimento (AA)
app-b-acd-2.x.x.x.tcl: Faz o tratamento de filas
Dentro do arquivo zip, tem também alguns audios prontos, no formato .au.

Antes de começar a configurar o B-ACD, que é o foco desse post, vamos primeiro criar a dial-peer que será usada para chegar na aplicação, lembrando que podemos chamar uma aplicação apenas nas dial-peers de entrada. No exemplo, criarei uma voip dial-peer com incoming called-number 3000 (dial-peer de entrada) e ao mesmo tempo um destination-pattern 3000 apontando de volta para o roteador (dial-peer de saída). Logo, essa dial-peer serve tanto para entrada quanto para saída. Poderiamos ter criado 2 dial-peers separadas, mas desse jeito fica mais fácil e rápido. O nome aa em service tem que ser o mesmo que o da aplicação AA que configuraremos mais pra frente.

dial-peer voice 3000 voip
 service aa
 destination-pattern 3000
 session-target ipv4:10.10.10.1 # IP do roteador
 incoming called-number 3000
 dtmf-relay h245-alphanumeric
 codec g711ulaw
 no vad

E agora vamos configurar os nossos hunt groups no CME. Lembrando que se for ter telefone SIP dentro do hunt, precisamos configurar o voice hunt-group ao invés do ephone-hunt.

ephone-hunt 1 longest-idle     #  Vendas
 pilot 3331
 list 3050, 3051, 3052, 3053
 timeout 10

ephone-hunt 2 longest-idle     # Marketing
 pilot 3332
 list 3054, 3055, 3056, 3057
 timeout 10

voice hunt-group 3 parallel    # Suporte
 pilot 3333
 list 3058, 3059, 3060
 timeout 10

Agora sim vamos configurar as aplicações de AA e Queue:

QUEUE
application
 service queue flash:app-b-acd-2.1.2.3.tcl # Apontar o diretório corretamente
  param number-of-hunt-grps 3 # Max numero de hunt groups que a aplicação suportará (1 a 10)
  param queue-len 15  # Tamanho da fila (1 a 30)
  param aa-hunt1 3331 # Opção 1 vai para o Hunt 3331
  param aa-hunt2 3332 # Opção 2 vai para o Hunt 3332
  param aa-hunt3 3333 # Opção 3 vai para o Hunt 3333
 
AA
application
 service aa flash:app-b-acd-aa-2.1.2.3.tcl  # Apontar o diretório  corretamente 
   paramspace english location flash:       # Define o pacote de linguas e a localização na flash
  paramspace english index 1                #  Define a categoria do audio para prompts dinamicos. Não usaremos isso no exemplo  
  paramspace english language en            # Define o codigo (en) para os arquivos de audio.
  param service-name queue                  # Faz a associação com a aplicação de fila criada acima (queue)
  param handoff-string aa                   # Especifica o nome do serviço AA para informar o serviço de fila
  param aa-pilot 3000                       # Declara o número do piloto (mesmo da dial-peer)
  param welcome-prompt _bacd_welcome.au     # Prompt de Welcome
  param menu-timeout 5                      # Em segundos (0 a 10)
  param dial-by-extension-option 9          # Habilita o dial-by-extension no menu 9
  param max-extension-length 4              # Limita o numero de digitos de um ramal
  param number-of-hunt-grps 3
  param queue-overflow-extension 3999       # Se a fila estiver cheia, desvia para o 3999
  param second-greeting-time 45             # Depois de 45 segundos, toca o prompt _bacd_allagentbusy.au
  param call-retry-timer 10                 # Quantos segundos a chamada espera para tentar conectar a um hunt ou alternate number
  param max-time-call-retry 90              # Quanto tempo vai esperar na fila
  param max-time-vm-retry 2                 # Quantas vezes a chamada vai tentar chegar no Alternate Number
  param voice-mail 3999                     # Alternate Number. Pode ser um voice mail ou outro ramal
  param send-account true                   # Gera o CDR das chamadas atendidas pelo B-ACD

Resumo do Exemplo: Se alguém ligar no pilot 3000, ouvirá o audio en_bacd_welcome.au. E logo em seguida o en_bacd_option_menu.au (que podemos regravar para ficar compatível com o exemplo). Esse prompt diria: "Pressione 1 para Vendas, 2 para Marketing e 3 para Suporte. Se souber o número do ramal, pressione 9". Se ele pressionar 1, 2 ou 3 e todas as pessoas do grupo estiverem ocupadas (e caso não tenha mais do que 15 pessoas na fila), ele vai tentar conectar a alguém do grupo a cada 10 segundos. Depois de 45 segundos, um novo prompt en_bacd_allagentbusy.au tocará. Se passados 90 segundos e ninguém do grupo atender, a chamada vai ser desviada para o 3999 (param voice-mail). Se o número estiver ocupado, ele vai tentar conectar novamente por 2 vezes. Se não conectar, ele será desconectado e o prompt en_bacd_disconnect.au tocará.
 
DROP THROUGH
Outra forma de configurarmos o AA é o drop throgh. Nessa configuração, o script não vai dar as opções de menu, e ao invés disso conectará diretamente em um hunt group.
application
 service aa flash:app-b-acd-aa-2.1.2.3.tcl
 (...)
  param number-of-hunt-grps 1 ! -- Tem que ser 1, afinal, teremos apenas 1 hunt
  param drop-through-option 1 ! -- Tem que ser o mesmo configurado no aa-huntX na fila
  param drop-through-prompt _dt_prompt.au

Obs: Para o B-ACD funcionar, é necessário que o Music on Hold esteja ativo no CME:
telephony-service
 moh music-on-hold.au

sábado, 10 de março de 2012

Call Pickup no CUCM

Depois de mais de um mês, finalmente tomei vergonha na cara e resolvi atualizar o blog. Dessa vez vou escrever sobre uma feature que todos nós usamos muito no dia a dia, mas não costumamos aplicá-la de forma muito complexa nos clientes: os grupos de captura.
No CUCM, geralmente colocamos as pessoas de um departamento dentro de um mesmo grupo e boa. Só captura chamada quem estiver dentro do mesmo grupo. Até habilitamos o alerta visual (sonoro jamais! enche o saco! hehe) para facilitar a vida do usuário e tal. Mas e se o usuário quiser capturar chamadas de um outro grupo? Ah não não, aí num dá... hehehe!
O CUCM trabalha com 4 formas de captura, e vou descrever aqui cada uma delas.

1. Pickup
Esse é o Pickup normal. Se uma chamada estiver tocando em um ramal do mesmo grupo, o usuário simplesmente pressiona Pickup e a chamada é capturada.

2. Group Pickup
Esse pickup eu particularmente não acho nada prático, pois os usuários precisam memorizar o número de cada grupo. Mas enfim, se um ramal de outro grupo estiver tocando, o usuário pressiona a tecla GPickup e depois o número do grupo.

3. Other Pickup
Esse aqui já é mais interessante. Na configuração de Pickup Groups, adicionamos uma lista ordenada de grupos relacionados. Digamos que eu esteja no grupo Captura1, e tenha relacionado os grupos Captura2, Captura3 e Captura4 nessa ordem. Aí tem uma chamada tocando no grupo Captura2 e outra no Captura4. Quando eu aperto oPickup (tem que colocar esse softkey no template, porque não vem por default) eu vou capturar a chamada do Grupo2.
O interessante é que o Grupo2 eventualmente pode não ter o Grupo1 associado. Logo, eu vou conseguir capturar as chamadas dele, mas ele não vai conseguir capturar as minhas. Então podemos montar uns relacionamentos mais complexos, como a secretária conseguir capturar as chamadas do chefe e de um departamento X. Só que as pessoas desse departamento X não podem capturar as chamadas do chefe, por exemplo.

4. Directed Call Pickup
Esse é o melhor de todos. A configuração é a mesma que na situação anterior, ou seja, criamos grupos de capturas relacionados. Aí digamos que eu esteja lá no meu grupo Captura1 e quero capturar a chamada do ramal 2222 que está no grupo Captura3. Basta eu apertar GPickup e o Ramal 2222. A gente meio que usa esse método sem saber quando usamos os Speed Dials BLF com a Captura habilitada. Mesmo as duas pessoas não estando no mesmo grupo, se deixamos os grupos relacionados, podemos capturar a chamada simplesmente pressionando a tecla do BLF.

Por fim, para melhorar a experiência do usuário com essa feature, podemos habilitar o Service Parameter "Auto Call Pickup Enabled". Dessa forma, quando o usuário tenta capturar a chamada, ao invés de o telefone dele começar a tocar para ele atender, a chamada conecta direto. É o modo como a maioria dos usuários está mais habituada a trabalhar.