Configuração Da Fila Do Asterisk
Configuração Da Fila Do Asterisk
Configuração Da Fila Do Asterisk
conf
A fila de chamadas recebidas do Asterisk. Uma descrição detalhada da estratégia de chamada. Penalidade,
tempo limite, membro e todas as opções disponíveis. Noções básicas de como trabalhar com filas (queues)
no Asterisk.
Para criar uma fila estática, basta definir seu nome entre colchetes e a estratégia para chamar os
operadores. Os outros parâmetros serão atribuídos por padrão.
/etc/asterisk/queues.conf
[queue_01]
strategy = ringall
No futuro, o nome da fila será usado para chamá-la no Dialplan usando o comando Queue( ).
exten => s,1,Queue(queue_01)
Para usar parâmetros de fila e gerenciá-los, os comandos do console do Asterisk podem ser usados:
*CLI> queue
add reload remove reset set show pause unpause
Para recarregar todas filas usamos queue reload all. Para exibir uma fila usamos queue show
<nome_da_fila>. Isto vai exibir ela no console do Asterisk:
Alternativamente, os operadores podem ser dinâmicos, isto é, podem ser adicionados usando uma
das interfaces do Asterisk - CLI, AMI ou AGI.
Exemplo de configuração de uma fila. Comentários são fornecidos em relação ao valor especificado
no exemplo.
[queue_01]; o nome da fila, todos os parâmetros especificados depois dela e até os [...] próximos
colchetes, pertencerão a essa fila.
Persistent Members (Membros persistentes). Salve cada usuário dinâmico no banco de dados interno
do Asterisk (AstDB) ou via UnixODBC com outros Bancos de Dados, para que, após a reinicialização,
todos os usuários sejam restaurados nas entradas da fila para o Banco de Dados. Veja também
RemoveQueueMember Padrão:
persistentmembers=no
autofill = yes
Monitor Type (aplicativo para gravação de conversas). O aplicativo MixMonitor( ), grava a conversa
diretamente em um arquivo, em contraste com o monitor desatualizado, que registra separadamente
as entradas. ref. fluxos de voz.
monitor-type = MixMonitor
updatecdr = yes
shared_lastcall (última chamada geral). Se o operador (member) atender a mais de uma fila,
considere parâmetros como wrapuptime (uma pausa após a conclusão da chamada durante a qual
o operador não recebe chamadas), para todas as chamadas, de todas as filas.
shared_lastcall=no
Musicclass. Define a classe de música em espera (MOH) usada por essa fila. Essa configuração terá
precedência sobre todos, menos a variável de canal especificada no plano de discagem: Set
(CHANNEL (musicclass)=whatever).
musicclass=default
announce. Mensagem para o usuário que atende a fila. A mensagem pode ser reproduzida para o
usuário (e não para o chamador) antes que ele aceite a chamada, por exemplo, para identificar a fila
da qual a chamada foi originada, se o agente atender mais de uma fila.
announce=file_to_play
Estratégia de fila do Asterisk. A estratégia para chamar operadores de fila. O parâmetro mais
importante especifica como as chamadas entre os operadores serão distribuídas:
ringall - todos os usuários são chamados simultaneamente, até que alguém responda (por padrão);
leastrecent - ligue para o operador por mais tempo do que qualquer pessoa que não aceite
chamadas;
fewestcalls - Ligue para o operador que recebeu o menor número de chamadas;
random - distribuir as chamadas aleatoriamente;
rrmemory - round robin, depois que o agente respondeu o último;
linear - chama do primeiro na ordem da enumeração. Agentes dinâmicos serão chamados na ordem
da adição;
wrandom - chama uma interface aleatória, mas usa a penalidade desse membro como o peso no
cálculo da métrica.
Assim, o operador da penalidade 0 terá uma métrica na faixa de 0 a 1000, operador com uma
penalidade 1 de 0 a 2000, e o operador da disputa de pênaltis 2 terá uma métrica entre 0 e 3000. Por
favor, note que ao usar esta estratégia, o pontapé de grande penalidade do operador não é o mesmo,
como ao usar outras estratégias de fila. É usado SOMENTE como o fator de ponderação para calcular
a métrica.
strategy=ringall
Abaixo está um exemplo onde vemos que 89,4% da porcentagem de chamadas na fila q1 foram
respondidas em 30 segundos (SL: 89,4% dentro de 30s).
*CLI> queue show q1
q1 has 0 calls (max unlimited) in 'leastrescent' strategy (6s holdtime, 120s
talktime), W:0, C:5156, A:584, SL:89.4% within 30s
Members:
SIP/4886 (ringinuse disabled) (Not in use) has taken no calls yet
SIP/4887 (ringinuse disabled) (Not in use) has taken no calls yet
PJSIP/4889 (ringinuse disabled) (Unavailable) has taken no calls yet
No Callers
context (contexto). Indica o contexto do Dialplan no qual o assinante em espera pode inserir o DTMF
discando um dígito. No contexto, uma extensão deve ser definida para manipular essa figura. Por
exemplo, você pode usá-lo para o menu interativo.
context=context_name
penaltymemberslimit. Não use penalidade se a fila estiver atendendo o número de operadores menor
ou igual ao indicado:
penaltymemberslimit=5
Nota para os limites de tempos da fila, são considerados abaixo. O tempo limite da fila para a não
resposta, não é um parâmetro de fila, ou pode ser designado como uma opção para chamar o
aplicativo Queue(nome da fila, [opções], [url opcional], [anuncios], [tempo limite])
Exemplo:
Queue(queuename,t,,,45)
Timeout
A fila tem dois "tempos limite" diferentes associados a ela. Um deles é atribuído no queue.conf. Esse
tempo limite especifica por quanto tempo, em segundos, o telefone do membro/operador será
chamado antes de considerar que ele não respondeu. O segundo tempo de espera é o argumento
para o aplicativo Queue( ). Este é um tempo limite absoluto, após o qual a chamada sai da fila e vai
para a próxima prioridade no contexto. Em algumas situações, esses tempos limite são encontrados.
Por exemplo, se o tempo limite em queue.conf estiver definido como 5 segundos, tente novamente
(retry=4), quatro segundos e o tempo limite da Queue( ) estiver definido como 10 segundos acontece
o seguinte:
Por quanto tempo o segundo operador será chamado? 1 segundo permanece antes que o tempo
limite absoluto do aplicativo Queue( ) expire. A segunda instrução será chamada 1 segundo ou 5,
conforme especificado no tempo limite do queue.conf?
Em seguida, timeoutpriority é ignorado e o tempo limite do aplicativo é usado como um tempo limite
para chamar os operadores queues/conf.
Por outro lado, se o tempo limite do aplicativo não for especificado, o tempo limite anterior será
ignorado e o tempo limite será conf. o arquivo queues.conf é sempre usado.
Padrão: timeoutpriority=app
timeout=15
retry=5
timeoutpriority=app|conf
weight
Quanto maior o peso da fila, maior a prioridade de chamar o operador de mais de uma fila. por padrão
0.
weight=0
wrapuptime
Depois que a chamada bem-sucedida for concluída, o tempo de repouso do agente será atendido
novamente. por padrão 0.
wrapuptime=0
autopause
Configure o operador para pausar se ele não atender a chamada. ver também PauseQueueMember
no: não use pausa automática para essa fila;
yes: Pausa, apenas nesta fila;
all: Pausa em todas as filas atendidas pelo operador.
autopause=no|yes|all
Autopausedelay
Atrase a instrução para pausar o operador por um tempo, desde a última chamada com falha.
autopausedelay=60
Autopausebusy
Configurar ou não o operador para pausar, se estiver ocupado (BUSY).
autopausebusy=no
Autopauseunavail
Defina se o operador deve ou não fazer uma pausa se não estiver disponível (UNAVAILABEL).
autopauseunavail=no
maxlen
O número máximo de pessoas esperando na fila. Se excedido, as chamadas subsequentes serão
rejeitadas. 0 é ilimitado.
maxlen=0
setqueueentryvar
Se setqueueentryvar=yes, as seguintes variáveis serão atribuídas nos canais do chamador e do
operador de fila:
QEHOLDTIME é o tempo de espera para o chamador.
QEORIGINALPOS é a posição na fila.
setqueueentryvar=no
setqueuevar
Se setqueuevar=yes, as seguintes variáveis serão atribuídas nos canais do chamador e do operador
de fila, ao conectar-se ou quando o chamador deixar a fila:
membermacro
Se definido, execute Macro quando a conexão com o operador for estabelecida. Esta opção pode ser
substituída pelo parâmetro macro da Queue( ).
membermacro=macro_name[,arg1[,...][,argN]]
membergosub
Se configurado, execute o GoSub quando a conexão com o agente for estabelecida. Esta opção pode
ser substituída pelo parâmetro gosub da Queue( ).
membergosub=gosub_context_name[,arg1[,...][,argN]]
periodic-announce-frequency
Quantas vezes para fazer um periodic-announce (anúncio periódico).
periodic-announce-frequency=60
random-periodic-announce
Você quer ser notificado periodicamente em uma ordem aleatória? O padrão é não.
random-periodic-announce=no
relative-periodic-announce
Calcule o tempo para o anúncio periódico a partir do momento da conclusão do anúncio anterior, e
não desde o início. o padrão está desativado.
relative-periodic-announce=no
announce-holdtime
Deseja incluir um anúncio médio de tempo de espera no anúncio de um item de linha? Você pode
especificar sim, não ou uma vez (uma vez).
announce-holdtime=yes|no|once
announce-round-seconds (anunciar-redondo-segundos)
Arredonde os intervalos de anúncios para o valor especificado, se não = 0. Os valores possíveis são
0, 5, 10, 15, 20 e 30.
announce-round-seconds=10
Arquivos de áudio usados para anúncios
Se nenhum outro for especificado, os arquivos listados abaixo serão usados:
queue-youarenext=queue-youarenext; ("Você agora é o primeiro da fila.")
queue-thereare=queue-thereare: ("Existem");
queue-callswaiting=fila-callswaiting: ("Esperando chamadas.");
queue-holdtime=queue-holdtime: ("O atual tempo de espera é");
queue-minute=queue-minute: ("Minuto");
queue-minutes=queue-minutes: ("Minutos");
queue-seconds=queue-seconds: ("Segundos");
queue-thankyou=queue-thankyou: ("Obrigado pela sua paciência");
queue-reporthold=queue-reporthold: ("Tempo de espera");
periodic-announce=queue-periodic-announce: ("Todos os representantes ocupados/aguardam
o próximo");
queue-less-than: fila-menos-que;
queue-quantity1: quantidade de fila1;
queue-quantity2: quantidade de fila2.
Exemplo, não conecte à fila se todos os operadores tiverem um dos seguintes status:
joinempty = paused,inuse,invalid
reportholdtime
Se você precisar notificar o operador sobre quanto o assinante estava esperando na fila.
reportholdtime = no
ringinuse
Para evitar o envio de uma chamada para o operador cuja interface está no estado 'in use', defina =
no. Além do valor geral da fila, você pode definir esse parâmetro para usuários individuais da fila por
meio do comando QUEUE_MEMBER, o campo 'ringinuse' para usuários em tempo real e CLI/AMI:
somente os drivers dos canais SIP e PJSIP atualmente suportam o status de 'in use'
ringinuse=no
memberdelay
O parâmetro define o tempo de atraso entre o momento em que o agente atende a chamada e o
conecta ao assinante de chamada.
memberdelay = 0
timeoutrestart
Se o parâmetro timeoutrestart estiver definido como yes, o valor de tempo limite do agente será
redefinido se um sinal BUSY ou CONGESTION for recebido dele. Isso é útil quando um agente pode
marcar uma chamada rejeitando-a ou executando algumas ações que tenham um efeito semelhante.
(Descobriu-se que, se a chamada do agente terminava com o status NOANSWER (ring, no-answer),
isso também faz com que a chamada seja enviada para o próximo agente na fila usando o algoritmo
roundrobin).
timeoutrestart = no
defaultrule
Atribuir regras padrão. A configuração está em queuerules.conf
defaultrule = myrule
Cada membro/usuário da fila é listado em uma linha separada na forma de uma cadeia de
tecnologia/discagem. Um membro/usuário é um operador de fila. Um parâmetro de penalidade
adicional pode ser especificado após o ponto decimal.
Cada operador de fila do Asterisk possui um parâmetro de penalidade. A penalidade pode ser
determinada nas configurações do usuário da fila:
member ⇒ interface[,penalty][,membername][,state_interface][,ringinuse]
Este parâmetro determina a prioridade para enviar uma chamada para o operador, quanto menor a
penalidade, maior a prioridade ao escolher um operador para a chamada. Se uma penalidade não for
definida, o padrão será 0.
Suponha que a fila seja atendida por 3 operadores com uma penalidade - 0,1 e 2 respectivamente. O
primeiro será o operador com uma penalidade = 0 e somente se ele estiver indisponível, o operador
com uma penalidade = 1 e assim por diante recebera a chamada.
A penalidade para o operador pode ser alterada dinamicamente, por exemplo, por meio da CLI:
queue set penalty <penalty> on <interface> [in <queue>]
ou por meio de Ações da AMI QueuePenalty. Os usuários com uma pontuação de penalidade grande
têm uma prioridade menor para as chamadas. Após a segunda vírgula, um nome é atribuído. O uso
de um nome pode ser conveniente para apresentação na fila de registro. Interfaces diferentes podem
usar o mesmo nome.
Uma descrição adicional da interface é indicada após a terceira vírgula. Essa interface enviará
notificações para app_queue, mas a interface especificada no primeiro sempre será usada para a
chamada.
member => interface [,penalty][,membername][,state_interface][,ringinuse]
member => DAHDI/1
member => DAHDI/2,10
member => DAHDI/3,10,Stev Morrissev
member => Local/1000@default,0,Patty Smithoff,SIP/1000
member => Local/2000@default,0,Syd Buratinov,SIP/2000,no