Queue mit einem Teilnehmer funktioniert nicht richtig

Guard-X

Aktives Mitglied
Mitglied seit
14 Mai 2005
Beiträge
2,497
Punkte für Reaktionen
0
Punkte
36
Hallo,

ich habe eine Queue mit nur einem Teilnehmer (Zentrale) eingerichtet.

Jetzt habe ich das Problem, wenn der Teilnehmer besetzt ist, das er sofort aus der Queue wieder rausfliegt.

Natürlich soll er auch drin bleiben wenn das Telefon besetzt ist, wie kann ich das ändern? Ist das so überhaupt möglich?

Code:
[95310]
musiconhold = default
;announce = queue-markq
;strategy = ringall
;context = qoutcon
timeout = 40
;retry = 5
;wrapuptime=15
;maxlen = 0
;announce-frequency = 90 
;announce-holdtime = yes
;announce-round-seconds = 10
;queue-youarenext = queue-youarenext		;	("You are now first in line.")
;queue-thereare	= queue-thereare		;	("There are")
;queue-callswaiting = queue-callswaiting	;	("calls waiting.")
;queue-holdtime = queue-holdtime		;	("The current est. holdtime is")
;queue-minutes = queue-minutes			;	("minutes.")
;queue-seconds = queue-seconds			;	("seconds.")
;queue-thankyou = queue-thankyou		;	("Thank you for your patience.")
;monitor-format = gsm|wav|wav49
;monitor-join = yes
;joinempty = yes
;eventwhencalled = yes
member => SIP/95310
 
Zuletzt bearbeitet:
Ich habe so das Gefühl, eine Queue kann das gar nicht...
 
Doch das geht sicher. Wie sieht denn der wählplan an der Stelle aus? Schon mal Queue(95310||||40) dort versucht? Und was passiert denn im Wählplan/Asterisk-CLI, wenn der Teilnehmer besetzt ist?
 
Queue(95310||||40) -> muss das nicht so heissen: Queue(95310|||||40)

Wenn Member SIP/95310 besetzt ist, hört der Anrufer noch ca. 2-3s die Wartemusik, danach springt er raus. Der Anrufer soll aber so lange drin bleiben, bis der Agent wieder frei ist!?
 
Der Member wird mit "show agents" auch korrekt angezeigt, obwohl er grade besetzt ist?
Die Seite hier ist ganz interessant, falls noch nicht bekannt: http://www.oinko.net/astrecipes/index.php?n=118
Ich schaue mir diese Queue Sache die nächsten Tage mal an, ich brauch das nämlich auch bald ;-)
 
Leidensgenosse

vorab: ich kämpf mit dem gleichen problem! ;/

Guard-X schrieb:
Queue(95310||||40) -> muss das nicht so heissen: Queue(95310|||||40)
nein, das ist nen | zuviel!
siehe http://www.voip-info.org/wiki/view/Asterisk+cmd+Queue, Timeout ist der 5. Parameter, nicht der 6.

aber ich muss zugeben ich hab das mit den Timeouts noch nicht wirklich ganz verstanden auch wenn ich mir schon alle verlinkten und ergoogleten Artikel durchgelesen habe! Das einzige was ich nachvollziehen kann ist:
Code:
exten => 79,n,Queue(zentrale|tn|||)
in den extentions und
Code:
timout=300
in der queue.conf; denn dann fliegt der Anrufer nach 300sec (5min) bimmeln an der Zentrale raus und landet in der ext+1

@Speedy: Ich weiss nicht wie es bei Guard-X ist, aber ich nutze nicht die Agents, sondern gebe in der voicemail.conf direkt den SIP Teilnehmer an, also
Code:
member => SIP/test
wie konfiguriere ich einen SIP-Teilnehmer denn automatisch als Agent ohne das der sich extra anmelden muss?! Vielleicht liegt hier die ganze crux dass der "Wiederwahlversuch" auch erfolgreich durchgeführt werden kann!


anbei mal meine derzeitige test-Konfig:
Code:
exten => test,1,Goto(79,1)
exten => 79,hint,SIP/test

exten => 79,1,GotoIfTime(*|sat-sun|*|*?mailbox|m00|1)   ; if weekday, goto next else goto Mailbox
exten => 79,n,GotoIfTime(*|*|1|jan?mailbox|m00|1)       ; 1. Januar
exten => 79,n,GotoIfTime(*|*|1|may?mailbox|m00|1)       ; 1. Mai
exten => 79,n,GotoIfTime(*|*|3|oct?mailbox|m00|1)       ; Tag der deutschen Einheit
exten => 79,n,GotoIfTime(*|*|1|nov?mailbox|m00|1)       ; Allerheiligen
exten => 79,n,GotoIfTime(*|*|25|dec?mailbox|m00|1)      ; 1. Weihnachtsfeiertag
exten => 79,n,GotoIfTime(*|*|26|dec?mailbox|m00|1)      ; 2. Weihnachtsfeiertag

exten => 79,n,GotoIfTime(*|*|6|apr?mailbox|m00|1)       ; Ostern 2007
exten => 79,n,GotoIfTime(*|*|9|apr?mailbox|m00|1)       ; Ostern 2007
exten => 79,n,GotoIfTime(*|*|25|may?mailbox|m00|1)      ; Christi Himmelfahrt 2006
exten => 79,n,GotoIfTime(*|*|5|jun?mailbox|m00|1)       ; Pfingstmontag 2006
exten => 79,n,GotoIfTime(*|*|15|jun?mailbox|m00|1)      ; Fronleichnam 2006

exten => 79,n,GotoIfTime(8:55-17:05|mon-fri|*|*?24)     ; if workingtime goto 24, else to next

; ausserhalb der Kernarbeitszeit 15 sec Klingeln, wenn besetzt, dann besetztzeichen, wenn nicht, dann AB
exten => 79,14,Dial(SIP/test,15,j)              ; jump to 115 if busy
exten => 79,n,Goto(mailbox,m00,1)               ; else play mailbox after 15 sec
exten => 79,n,Hangup()

; innerhalb der Kernarbeitszeiten, 15sec klingeln, andernfalls Warteschleife
exten => 79,24,Dial(SIP/test,15)
exten => 79,n,Playback(welcome&sorry-all-busy&well-connect-you)
exten => 79,n,Queue(zentrale|tn|||)
exten => 79,n,VoiceMail(sb00@default)
exten => 79,n,Hangup()

exten => 79,115,Busy()                          ; busy calls on workday out of 9-17 o'clock get busy tone

und

Code:
[general]
persistentmembers=yes
[zentrale]
musiconhold=default
strategy=ringall
retry=15
timeout=300
wrapuptime=10
maxlen=0
announce-frequency=0
announce-holdtime=no
joinempty=strict
timeoutrestart=yes
member => SIP/test

mit wrapuptime wird zumindest nach dem ersten Besetz-versuch der Anrufer weitere 10sek in der Queue gehalten, dann aber nicht mehr probiert sondern fliegt direkt raus. Irgendwie scheint dieser member dann immer noch also "busy" markiert zu sein!

Ich werd nun nochmal mit den Timeouts in der Queue() rumspielen, mal sehn ob sich noch was ergibt!
any ideas welcome ;)

LG
Marcel

[edit1]
zum Queue Timeout:
Queue(xyz||||10) bewirkt dass ein Teilnehmer maximal 10sek in der Warteschleife warten darf OHNE dass es irgendwo klingelt. richtig?
timeout=15 heisst, dass es bei dem Teilnehmer maximal 15sek läutet, dann der nächste "member" probiert wird...
heisst also mit obigem Beispielzahlen, es klingelt 10sek beim member, dann bleibt der Anrufer noch 10sek in der schleife und fliegt dann raus. ist besetzt, wartet er nur 10sek und fliegt dann direkt raus...
aber genau hier ist das Problem, es gibt keinen weiteren member, und der alte ist noch als "busy" markiert. Wie bring ich der Queue also bei dass er es bei den andren auch nochmal probieren soll?!
genau hier erhoffte ich mir von der Einstellung:
timeoutrestart=yes
besserung, aber irgendwie bringt das grad gar nichts ;/

verzeiht wenn ich so vor mich hin brabbel, aber vielleicht bring ich so jemanden auf nen andren gedanken respektive finde selbst einen neuen Weg, getreu dem Motto: "geteiltes Leid ist halbes Leid ";)
[/edit1]

[edit2]
das kann doch nicht sein, also wie machen diejenigen es denn die mehrere members haben?! dort muss doch ein Anruf auch nach einer gewissen Zeit nochmal bei allen Versucht werden die vorher besetzt waren, zwischenzeitlich aber wieder frei sind?!!? *verzweifel*
[/edit2]

[edit3]
also nach studieren von:
http://astrecipes.net/index.php?from=118&q=AstRecipes/Configuring a queue
kam ich auf die Idee mal nen ,1 anzufügen, aber das bringt genausowenig, wie in der example.conf beschrieben:
Code:
 An optional penalty may be specified after a comma, such that entries with higher penalties are considered last.
Werden Agents wirklich anders behandelt und deren "busy" Status anders gesetzt / überwacht?!
gibt es denn keine genauere Doku zu dem sch**** ich glaub gleich zerpflück ich den Source, vielleicht werd ich ja dadraus schlau ;/
[/edit3]

[edit4] Nein, Agenten werde nicht anders behandelt als SIP-Channel-Members ;/ Problem besteht weiterhin![/edit4]

[edit5]
speedy1980 schrieb:
Der Member wird mit "show agents" auch korrekt angezeigt, obwohl er grade besetzt ist?
leider erscheinen die members dort immer nur als "not in Use" als würde er gar nicht telefonieren!
Code:
    -- Executing Queue("SIP/test-245d", "zentrale|tn|||") in new stack
    -- Started music on hold, class 'default', on channel 'SIP/test-245d'
    -- outgoing agentcall, to agent '00', on 'Local/56@local-ef38,1'
    -- Executing Dial("Local/56@local-ef38,2", "SIP/marcel|15|j") in new stack
    -- Called marcel
    -- Called Agent/00
    -- Called SIP/marcel
    -- Got SIP response 486 "Busy Here" back from 192.168.2.13
    -- SIP/marcel-f7e9 is busy
  == Everyone is busy/congested at this time (1:1/0/0)
    -- Executing Busy("Local/56@local-ef38,2", "") in new stack
    -- Agent/00 is busy
  == Spawn extension (local, 56, 102) exited non-zero on 'Local/56@local-ef38,2'
    -- Executing Hangup("Local/56@local-ef38,2", "") in new stack
  == Spawn extension (local, h, 1) exited non-zero on 'Local/56@local-ef38,2'
    -- Got SIP response 486 "Busy Here" back from 192.168.2.13
    -- SIP/marcel-1295 is busy
obelix*CLI> show queues
zentrale     has 1 calls (max unlimited) in 'ringall' strategy (0s holdtime), W:0, C:0, A:1, SL:0.0% within 0s
   Members:
      SIP/marcel (dynamic) (Not in use) has taken no calls yet
      Agent/00 (Not in use) has taken no calls yet
   Callers:
      1. SIP/test-245d (wait: 0:02, prio: 0)
[/edit5]
 
Zuletzt bearbeitet von einem Moderator:
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.