PDA

Voir la version complète : Temps d'attente sans sonnerie entre 2 agents d'une File d'attente



flotho
15/07/2011, 11h03
Bonjour,

J'ai une dizaine de postes configurés sous asterisk 1.6.2.18-1_centos5.
J'ai deux files d'attentes. Tout fonctionne globalement bine sauf que certains comportement sont difficiles à maîtriser.
Mon problème est le suivant :
Lorsqu'un appel entrant entre dans la file d'attente, si le premier agent n'est pas joignable (peu importe la raison) il y a un temps incompressible d'environ 10secondes entre la fin de la précédente sonnerie et le début de la suivante.
J'ai déjà posté par ailleurs et on m'a demandé de vérifier le paramètre retry, ce que j'ai fait.
Voici le fichier de conf de la file :


[0860]
announce-frequency=30
announce-holdtime=no
announce-position=yes
autofill=no
eventmemberstatus=no
eventwhencalled=no
joinempty=yes
leavewhenempty=no
maxlen=0
memberdelay=0
music=default
penaltymemberslimit=0
periodic-announce-frequency=0
queue-callswaiting=queue-callswaiting
queue-thankyou=queue-thankyou
queue-thereare=queue-thereare
queue-youarenext=queue-youarenext
reportholdtime=no
retry=0
ringinuse=yes
servicelevel=60
strategy=linear
timeout=15
timeoutpriority=app
timeoutrestart=no
weight=0
wrapuptime=0
member=Local/5030@from-queue/n,0,toto
member=Local/5034@from-queue/n,0,tata
member=Local/5032@from-queue/n,0,titi

Si l'un d'entre vous a une piste à me fournir pour avancer sur ce sujet, cela serait appréciable.

Merci à la communauté.

Reaper
15/07/2011, 12h49
Le paramètre retry est utilisé lorsque tout les membres de la file ont sonné.
Est ce que le changement de système de distribution depuis linear vers round robin with memory aide ? Pouvez vous tester ?

flotho
15/07/2011, 14h15
Bonjour,

merci pour la réponse rapide.
malheureusement, cette nouvelle configuration n'a rien changé.
Voici le log :


[Jul 15 14:30:05] VERBOSE[25232] app_dial.c: -- Called 5030
[Jul 15 14:30:05] VERBOSE[25230] app_queue.c: -- Local/5030@from-queue-ba73;1 is ringing
[Jul 15 14:30:05] VERBOSE[25232] app_dial.c: -- SIP/5030-00000065 is ringing
[Jul 15 14:30:05] VERBOSE[25230] app_queue.c: -- Local/5030@from-queue-ba73;1 is ringing
[Jul 15 14:30:21] VERBOSE[25230] app_queue.c: -- Nobody picked up in 15000 ms
[Jul 15 14:30:21] VERBOSE[25232] app_macro.c: == Spawn extension (macro-dial-one, s, 38) exited non-zero on 'Local/5030@from-queue-ba73;2' in macro 'dial-one'
[Jul 15 14:30:21] VERBOSE[25232] pbx.c: == Spawn extension (from-queue-exten-internal, 5030, 3) exited non-zero on 'Local/5030@from-queue-ba73;2'
[Jul 15 14:30:21] VERBOSE[25232] pbx.c: -- Executing [h@from-queue-exten-internal:1] Macro("Local/5030@from-queue-ba73;2", "hangupcall,") in new stack
[Jul 15 14:30:21] VERBOSE[25232] pbx.c: -- Executing [s@macro-hangupcall:1] GotoIf("Local/5030@from-queue-ba73;2", "1?theend") in new stack
[Jul 15 14:30:21] VERBOSE[25232] pbx.c: -- Goto (macro-hangupcall,s,3)
[Jul 15 14:30:21] VERBOSE[25232] pbx.c: -- Executing [s@macro-hangupcall:3] Hangup("Local/5030@from-queue-ba73;2", "") in new stack
[Jul 15 14:30:21] VERBOSE[25232] app_macro.c: == Spawn extension (macro-hangupcall, s, 3) exited non-zero on 'Local/5030@from-queue-ba73;2' in macro 'hangupcall'
[Jul 15 14:30:21] VERBOSE[25232] pbx.c: == Spawn extension (from-queue-exten-internal, h, 1) exited non-zero on 'Local/5030@from-queue-ba73;2'
[Jul 15 14:30:26] VERBOSE[25233] pbx.c: -- Executing [5034@from-queue:1] Set("Local/5034@from-queue-0c79;2", "QAGENT=5034") in new stack
[Jul 15 14:30:26] VERBOSE[25233] pbx.c: -- Executing [5034@from-queue:2] Goto("Local/5034@from-queue-0c79;2", "0860,1") in new stack
[Jul 15 14:30:26] VERBOSE[25233] pbx.c: -- Goto (from-queue,0860,1)
[Jul 15 14:30:26] VERBOSE[25233] pbx.c: -- Executing [0860@from-queue:1] Goto("Local/5034@from-queue-0c79;2", "from-queue-exten-internal,5034,1") in new stack
[Jul 15 14:30:26] VERBOSE[25233] pbx.c: -- Goto (from-queue-exten-internal,5034,1)
[Jul 15 14:30:26] VERBOSE[25233] pbx.c: -- Executing [5034@from-queue-exten-internal:1] Set("Local/5034@from-queue-0c79;2", "RingGroupMethod=none") in new stack
[Jul 15 14:30:26] VERBOSE[25233] pbx.c: -- Executing [5034@from-queue-exten-internal:2] Macro("Local/5034@from-queue-0c79;2", "record-enable,5034,IN") in new stack
[Jul 15 14:30:26] VERBOSE[25233] pbx.c: -- Executing [s@macro-record-enable:1] GotoIf("Local/5034@from-queue-0c79;2", "1?check") in new stack
[Jul 15 14:30:26] VERBOSE[25233] pbx.c: -- Goto (macro-record-enable,s,4)
[Jul 15 14:30:26] VERBOSE[25233] pbx.c: -- Executing [s@macro-record-enable:4] ExecIf("Local/5034@from-queue-0c79;2", "0?MacroExit()") in new stack
[Jul 15 14:30:26] VERBOSE[25233] pbx.c: -- Executing [s@macro-record-enable:5] GotoIf("Local/5034@from-queue-0c79;2", "0?Group:OUT") in new stack
[Jul 15 14:30:26] VERBOSE[25233] pbx.c: -- Goto (macro-record-enable,s,14)
[Jul 15 14:30:26] VERBOSE[25233] pbx.c: -- Executing [s@macro-record-enable:14] GotoIf("Local/5034@from-queue-0c79;2", "1?IN") in new stack
[Jul 15 14:30:26] VERBOSE[25233] pbx.c: -- Goto (macro-record-enable,s,18)
[Jul 15 14:30:26] VERBOSE[25233] pbx.c: -- Executing [s@macro-record-enable:18] ExecIf("Local/5034@from-queue-0c79;2", "1?MacroExit()") in new stack
[Jul 15 14:30:26] VERBOSE[25233] pbx.c: -- Executing [5034@from-queue-exten-internal:3] Macro("Local/5034@from-queue-0c79;2", "dial-one,,trM(auto-blkvm),5034") in new stack
[Jul 15 14:30:26] VERBOSE[25233] pbx.c: -- Executing [s@macro-dial-one:1] Set("Local/5034@from-queue-0c79;2", "DEXTEN=5034") in new stack
[Jul 15 14:30:26] VERBOSE[25233] pbx.c: -- Executing [s@macro-dial-one:2] Set("Local/5034@from-queue-0c79;2", "DIALSTATUS_CW=") in new stack
[Jul 15 14:30:26] VERBOSE[25233] pbx.c: -- Executing [s@macro-dial-one:3] GosubIf("Local/5034@from-queue-0c79;2", "0?screen,1") in new stack
[Jul 15 14:30:26] VERBOSE[25233] pbx.c: -- Executing [s@macro-dial-one:4] GosubIf("Local/5034@from-queue-0c79;2", "0?cf,1") in new stack
[Jul 15 14:30:26] VERBOSE[25233] pbx.c: -- Executing [s@macro-dial-one:5] GotoIf("Local/5034@from-queue-0c79;2", "1?skip1") in new stack
[Jul 15 14:30:26] VERBOSE[25233] pbx.c: -- Goto (macro-dial-one,s,8)
[Jul 15 14:30:26] VERBOSE[25233] pbx.c: -- Executing [s@macro-dial-one:8] GotoIf("Local/5034@from-queue-0c79;2", "0?nodial") in new stack
[Jul 15 14:30:26] VERBOSE[25233] pbx.c: -- Executing [s@macro-dial-one:9] GotoIf("Local/5034@from-queue-0c79;2", "0?continue") in new stack
[Jul 15 14:30:26] VERBOSE[25233] pbx.c: -- Executing [s@macro-dial-one:10] Set("Local/5034@from-queue-0c79;2", "EXTHASCW=ENABLED") in new stack
[Jul 15 14:30:26] VERBOSE[25233] pbx.c: -- Executing [s@macro-dial-one:11] GotoIf("Local/5034@from-queue-0c79;2", "0?next1:cwinusebusy") in new stack
[Jul 15 14:30:26] VERBOSE[25233] pbx.c: -- Goto (macro-dial-one,s,23)
[Jul 15 14:30:26] VERBOSE[25233] pbx.c: -- Executing [s@macro-dial-one:23] GotoIf("Local/5034@from-queue-0c79;2", "1?next3:continue") in new stack
[Jul 15 14:30:26] VERBOSE[25233] pbx.c: -- Goto (macro-dial-one,s,24)
[Jul 15 14:30:26] VERBOSE[25233] pbx.c: -- Executing [s@macro-dial-one:24] ExecIf("Local/5034@from-queue-0c79;2", "0?Set(DIALSTATUS_CW=BUSY)") in new stack
[Jul 15 14:30:26] VERBOSE[25233] pbx.c: -- Executing [s@macro-dial-one:25] GotoIf("Local/5034@from-queue-0c79;2", "0?nodial") in new stack
[Jul 15 14:30:26] VERBOSE[25233] pbx.c: -- Executing [s@macro-dial-one:26] GosubIf("Local/5034@from-queue-0c79;2", "1?dstring,1:dlocal,1") in new stack
[Jul 15 14:30:26] VERBOSE[25233] pbx.c: -- Executing [dstring@macro-dial-one:1] Set("Local/5034@from-queue-0c79;2", "DSTRING=") in new stack
[Jul 15 14:30:26] VERBOSE[25233] pbx.c: -- Executing [dstring@macro-dial-one:2] Set("Local/5034@from-queue-0c79;2", "DEVICES=5034") in new stack
[Jul 15 14:30:26] VERBOSE[25233] pbx.c: -- Executing [dstring@macro-dial-one:3] ExecIf("Local/5034@from-queue-0c79;2", "0?Return()") in new stack
[Jul 15 14:30:26] VERBOSE[25233] pbx.c: -- Executing [dstring@macro-dial-one:4] ExecIf("Local/5034@from-queue-0c79;2", "0?Set(DEVICES=034)") in new stack
[Jul 15 14:30:26] VERBOSE[25233] pbx.c: -- Executing [dstring@macro-dial-one:5] Set("Local/5034@from-queue-0c79;2", "LOOPCNT=1") in new stack
[Jul 15 14:30:26] VERBOSE[25233] pbx.c: -- Executing [dstring@macro-dial-one:6] Set("Local/5034@from-queue-0c79;2", "ITER=1") in new stack
[Jul 15 14:30:26] VERBOSE[25233] pbx.c: -- Executing [dstring@macro-dial-one:7] Set("Local/5034@from-queue-0c79;2", "THISDIAL=SIP/5034") in new stack
[Jul 15 14:30:26] VERBOSE[25233] pbx.c: -- Executing [dstring@macro-dial-one:8] GosubIf("Local/5034@from-queue-0c79;2", "1?zap2dahdi,1") in new stack
[Jul 15 14:30:26] VERBOSE[25233] pbx.c: -- Executing [zap2dahdi@macro-dial-one:1] ExecIf("Local/5034@from-queue-0c79;2", "0?Return()") in new stack
[Jul 15 14:30:26] VERBOSE[25233] pbx.c: -- Executing [zap2dahdi@macro-dial-one:2] Set("Local/5034@from-queue-0c79;2", "NEWDIAL=") in new stack

En espérant que cela puisse aider.

Merci d'avance

Thera
19/07/2011, 09h20
Tu dis que ce temps est incompressible "quelle que soit la raison", je ne pense pas. Ton problème ici, c'est que tu utilises des agents statiques (dans ta queue tu as toujours tes agents qui correspondent eux-même à un téléphone).
Ici en l’occurrence, ton agent n'est pas là mais le téléphone correspondant à l'agent sonne. Asterisk attend donc le timer. Si le téléphone était occupé, Asterisk passerait au suivant.
Si tu ne veux pas changer ta conf de fond en comble, tu peux mettre un mode "Ne Pas Déranger" sur les postes que les agents pourraient activer quand ils sont absent.

flotho
23/07/2011, 16h21
Tu dis que ce temps est incompressible "quelle que soit la raison", je ne pense pas. Ton problème ici, c'est que tu utilises des agents statiques (dans ta queue tu as toujours tes agents qui correspondent eux-même à un téléphone).
Ici en l’occurrence, ton agent n'est pas là mais le téléphone correspondant à l'agent sonne.
Je suis pas sûr d'avoir compris la notion d'agent alors. En l'occurrence, si nous avons pu nous rendre compte de ce délai de 5 secondes c'est que lorsque le téléphone bascule d'une extension à une autre il y a 5 secondes d'attente pendant lesquelles aucun téléphone ne sonne. Du coup c'est peut être pas le bon terme "entre agents" mais plutôt entre extensions.


Asterisk attend donc le timer. Si le téléphone était occupé, Asterisk passerait au suivant.
Si tu ne veux pas changer ta conf de fond en comble, tu peux mettre un mode "Ne Pas Déranger" sur les postes que les agents pourraient activer quand ils sont absent.

Je comprends mais je trouve toutefois étrange le comportement de la queue qui ne fait sonner aucune extension pendant 5 seconde

Thera
25/07/2011, 11h07
Ça doit être ça :


timeoutrestart

; If timeoutrestart is set to yes, then the time out for an agent to answer is reset if a BUSY or CONGESTION is received.
; This can be useful if agents are able to cancel a call with reject or similar.
;(I found that when agents return NOANSWER (ring, no-answer) this also causes the queue to move to the next agent in a round robin)
;timeoutrestart = yes

Donc si tu le mets à yes ça devrait le faire.

flotho
25/07/2011, 18h43
Merci pour le tuyau,

Je pense malheureusement que ce n'est plus un problème de configuration :
http://www.freepbx.org/forum/freepbx/general-help/strange-queue-behaviour-between-2-agents

D'ailleurs j'ai testé votre proposition mais rien n'a changé.

Je vous tiens au courant dès que je fais une MAJ.

Avec mes pleins remerciements

flotho
21/08/2012, 16h20
Bonjour Thera,

Merci encore pour vos réponses.

Le message date mais je n'ai pas eu l'opportunité de progresser avant.
Donc je tourne sur asterisk 1.8.2. Le problème est le même.
Toujours ce temps de latence entre deux extensions. Les tentatives de conf n'y changent rien.

Quand vous parlez d'agents, vous parlez de personne physique ou d'une notion astersik particulière?