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

7 comentários:

  1. Nota 10.

    Mas e se eu quiser adicionar um novo grupo? Por exemplo, 4 para falar com o Help Desk?

    abraço!

    ResponderExcluir
  2. Opa, e aí Henrique!

    Aí você cria um novo parametro na aplicação queue:
    param aa-hunt4 XXXX, onde XXXX é o pilot number do Hunt Group do Help Desk, por exemplo.

    Abraço,

    Bruno

    ResponderExcluir
  3. Bruno,
    Agora que me toquei quem você é haha.
    Parabéns pelo CCIE cara !!
    Aproveitando...é possível integrar com o CUCM?
    Estou tentando aqui, mas não vai. Fica tocando a música eternamente, como se as dial-peers não funcionassem. Se não for possível, existe uma outra solução tão simples para integrar com o CUCM?
    Abraço!

    ResponderExcluir
  4. E ai cara...
    Nossa, vc sabe quem eu sou???
    Eu não tirei o CCIE ainda não... estou estudando para isso, mas ainda não fiz a prova.

    Então, com o CUCM num dá não. Essa feature é só pra CME mesmo.
    Se tiver usando o CUCM 7, vc consegue fazer algo parecido com o Attendant Console. Mas essa feature não é mais suportada na 8 em diante... uma pena!

    Abraço!

    ResponderExcluir
  5. Para não ter que decorar os parametros:
    more flash:/app-b-acd-aa-2.1.2.3.tcl | inc Required
    mostra todos parametros requeridos

    more flash:/app-b-acd-aa-2.1.2.3.tcl | inc cfg_avpair
    mostra todos parametros possiveis

    ResponderExcluir
    Respostas
    1. Obrigado Marcelo!
      O que recomendo também é na hora da prova abrir o Configuration Guide do B-ACD:
      Products >> Voice and Unified Communications >> IP Telephony >> Unified Communications Platform >> Cisco Unified Communications Manager Express >> Configuration Guides >> Cisco Unified CME B-ACD and Tcl Call-Handling Applications

      No arquivo, faça uma busca por "Embedded", e vá para o capítulo "Embedded Call-Queue and AA Tcl Scripts: Example".

      Lá já tem o script pronto, inclusive com a Dial-Peer, com os principais parâmetros. Aí é só editar no notepad! :)

      Excluir
  6. Bruno Nonogaki, excelente esse post.
    Muito útil e me ajudou bastante.
    Abraços

    ResponderExcluir