[HowTo + Frage]Anmeldung in Queue / nacheinander klingeln

udosw

Aktives Mitglied
Mitglied seit
20 Mrz 2004
Beiträge
1,114
Punkte für Reaktionen
0
Punkte
36
Ich möchte erreichen, dass eingehende Anrufe auf verschiedenen MSNs / VoIP-Nummern verschiedenen Gruppen zugeordnet werden.

Bei diesen Gruppen sollen sich verschiedene SIP-Telefone an- und abmelden können.

Mir ist klar, wie dieses sich mit Queues und Agents realisieren lässt. Nur stört mich dabei, dass ein Anruf bei einer Queue immer sofort angenommen wird, d.h. sofort für den Anrufer eine kostenpflichtige Verbindung entsteht.

Statisch währe es ja einfach mit Dial(SIP/1&SIP/2&SIP/3...) zu machen, aber das mit dem An- und Abmelden sollte doch eleganter gehen.

Also: Weiß jemand, ob man eine Queue dazu bringen kann, nicht sofort abzuheben, sondern einfach Ringing in beide Richtungen zu machen?

Oder: Hat jemand eine Idee, mehrere SIP-Nebenstellen dynamisch, z.B. aus einer Datenbank abzufragen (ich mache es schon teilweise per MySQL, bin da also auch gerade dran).

Udo
 
Das sollte wohl ueber ein AGI-Skript relativ einfach moeglich sein. Fuer das An- und Abmelden brauchst du dann natuerlich eigenen Skripte. Beim Anmelden musst du dann in der DB speichern, von wo aus die Anmeldung kam als am besten die CIDNum nehmen. Wenn ein Anruf reinkommt, musst die Nummern noch mal alle aus der DB rauslesen und einen Dial-String zusammenbasteln.
 
Ich bin inzwischen ein ganzes Stück weiter gekommen. Die queues lassen sich in der einfachsten Variante so betreiben, dass man keine Agenten braucht und dass sie es auch einfach nur klingeln lassen.

Ziel ist: Es gibt zwei Rufnummern (also praktisch Gruppen oder Queues), für die verschiedene Mitarbeiter zuständig sind. Je Nummer sollen ein oder mehrere Telefone klingeln, die Mitarbeiter sollen sich mit ihren (SIP-)Telefonen an- oder abmelden können.

Die Anrufer sollen aber nicht in eine Warteschlange kommen, sondern, wenn kein Mitarbeiter mehr verfügbar ist, in der Voicemail ihr Sprüchlein hinterlassen können.

Grundsätzlich klappt folgender Ansatz, aber ich habe noch keine Lösung gefunden, um die Telefone nacheinander in bestimmter Reihenfolge klingeln lassen zu können. Frage dazu siehe unten.

Hier erstmal meine jetzige config. Die Queues heissen 'tri' und 'com' (hat mit den Firmennamen zu tun):

queues.conf:
Code:
;SIP hier GROSS schreiben!!!
[tri] 
strategy = ringall
member => SIP/1,1
member => SIP/2,2

[com]
strategy = roundrobin
timeout = 10
retry = 5
maxlen = 0
member=>SIP/5,0
member=>SIP/6,1
Mit folgendem Abschnitt in der extensions.conf kann man sich an- und abmelden.
6XY = bei queue '6X' mit penalty Y anmelden
6X0 = bei queue '6X' abmelden
60 (tri), 68 (com):
Code:
exten => _6XX,1,Set(prio=${EXTEN:2})

exten => _60X,2,RemoveQueueMember(tri)
exten => _68X,2,RemoveQueueMember(com)

exten => _6X0,3,Playback(agent-loggedoff)
exten => _600,4,SayAlpha(tri)
exten => _680,4,SayAlpha(com)
exten => _6X0,5,Hangup

exten => _60Z,3,AddQueueMember(tri||${prio})
exten => _68Z,3,AddQueueMember(com||${prio})

exten => _6XZ,4,Playback(agent-loginok)
exten => _60Z,5,SayAlpha(${CALLERIDNUM}tri${prio})
exten => _68Z,5,SayAlpha(${CALLERIDNUM}com${prio})
exten => _6XZ,6,Hangup

Nach dem An- oder Abmelden wird das Ergebnis angesagt:
"23 tri 1" würde heissen: Du hast dein Telefon 23 in der Queue "tri" angemeldet mit penalty 1.

Der Vollständigkeit halebr noch der relevante Abschnitt der extensions.conf:
Code:
(hier ist noch etwas vor, tut nicht zur sache)
exten => _XX.,2,Queue(${queue_name}|rtT|||30) ;dont set n option until really needed
exten => _XX.,3,Voicemail(u${mailbox})
exten => _XX.,4,Hangup

Soweit ist fast alles perfekt, aber ich suche noch eine Lösung für folgendes Problem: Anruf kommt rein und soll nur bei dem einen, haupsächlich zuständigen Mitarbeiter '1' klingeln. Falls der besetzt ist, klingelt es bei dem Mitarbeiter 2 mit der nächsthöheren 'penalty'. Das klappt auch, wenn 1 mit penalty 1 und 2 mit penalty 2 angemeldet sind (so wie oben per default).

Wenn aber Mitarbeiter '1' nicht ans Telefon geht (holt sich gerade 'nen Kaffee oder stellt ihn weg ;-) ), soll nach X Sekunden auch das Telefon bei 2 anfangen zu klingeln. Ich hatte gehofft, dass der Timeout in der queue dazu führt, dass dann das Telefon mit der nächst höheren penalty klingelt, ist aber nicht so - nur bei besetzt.

Eine Idee wäre vielleicht, ein Busy an die queue zu signalisieren, aber ich wüßte nicht, wie. Oder eine zweite queue dahinter setzen, so beide Mitarbeiter mit gleicher penalty angemeldet sind? Klingt unöötig kompliziert ...

Hat jemand noch ein paar Tipps?

Udo
 
udosw schrieb:
Soweit ist fast alles perfekt, aber ich suche noch eine Lösung für folgendes Problem: Anruf kommt rein und soll nur bei dem einen, haupsächlich zuständigen Mitarbeiter '1' klingeln. Falls der besetzt ist, klingelt es bei dem Mitarbeiter 2 mit der nächsthöheren 'penalty'. Das klappt auch, wenn 1 mit penalty 1 und 2 mit penalty 2 angemeldet sind (so wie oben per default).

Wenn aber Mitarbeiter '1' nicht ans Telefon geht (holt sich gerade 'nen Kaffee oder stellt ihn weg ;-) ), soll nach X Sekunden auch das Telefon bei 2 anfangen zu klingeln. Ich hatte gehofft, dass der Timeout in der queue dazu führt, dass dann das Telefon mit der nächst höheren penalty klingelt, ist aber nicht so - nur bei besetzt.
Udo

Diese Problemstellung hab ich auch zu bewältigen, drum würd mich interessieren ob es für dieses Problem schon eine Lösung gibt.

lg Dani
 
Ich möchte auch gerade das o.g. Problem lösen.

Gibts was neues?
 
Warum versucht Ihr nicht einfach mal freepbx? Da ist das ganze doch mit einigen Mausklicks schnell erledigt.
 
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.