Ringgroups definieren

beowulf

Neuer User
Mitglied seit
28 Mai 2004
Beiträge
161
Punkte für Reaktionen
0
Punkte
16
Hallo!

Ich möchte gerne ein Ringgroup erstellen. Mit Asterisk@home scheint das über die Weboberfläche leicht zu erstellen sein, aber ich habe nun mal Asterisk "classic".

Wie realisere ich das am besten?

Niki
 
Du kannst dir z.B. eine Variable mit allen zu wählenden channels definieren.
 
chaos2000 schrieb:
Du kannst dir z.B. eine Variable mit allen zu wählenden channels definieren.

Ja, ich weiß, aber das mag ich nicht so lösen. Leider weiß ich nicht, was das Feature "Ringroup" beim Asterisk@home macht. Vielleicht ist es eh nix anderes als mehrere Channels definieren.

Gibt's noch eine andere Lösung.

Niki
 
Hallo!

Mich hat das Thema Ringgroups weiter beschäftigt, und ich habe mal eine
Lösung mittels Queues probiert.

Geht auch gut, aber bei ein paar Kleinigkeiten bräuchte ich noch Hilfe.

Meine queues.conf sieht folgendermaßen aus.

Code:
[myring]
strategy = ringall
timeout = 60
retry = 5
maxlen = 0
announce-holdtime = no

member => SIP/39
member => SIP/36

Was ich noch nicht ganz durchschaut habe ist die Bedeutung von timeout and retry. Nach 60 sec. (ohne das jemand dazwischen abhebt) wertet der Asterisk das als Timeout und nach 5 sec. probiert Asterisk nochmal alle Member anzurufen.

Welche Konsequenz hat das Timeout aber?

Nun, in der extensions.conf habe ich mal eine Testnummer eingerichtet.

Code:
[myqueue]
exten => 800,1,NoCDR()
exten => 800,n,Answer
exten => 800,n,Ringing
exten => 800,n,Queue(myring|ThH|||100)
exten => 800,n,Hangup

Damit funktioniert alles. Was ich nur gerne wissen wüsste ist, was "ThH" macht? Sind das üblichen Dialoptions.
z.B.
'T' -- to allow the calling user to transfer the call.
'H' -- allow caller to hang up by hitting *.

Und die 100 bedeutet was genau? 100 sec. klingeln?

Nun will ich die Queue ja in einem richtigen Kontext einsetzen. Bislang sah ein solcher Kontext so aus

Code:
exten => 555,1,Set(CALLERID(name)=Line: wurscht)
exten => 555,n,Dial,${PHONE}|${RINGTIME}|${DIALOPTIONS}
exten => 555,n,Goto,r-${DIALSTATUS}|1


exten => r-BUSY,1,voicemail,b39
exten => r-BUSY,2,Hangup

exten => r-NOANSWER,1,voicemail,u39
exten => r-NOANSWER,2,Hangup
Die Variablen PHONE spezifieren, welche SIP Phones läuten sollen; RINGTIME ist die Läutzeit; DIALOPTIONS sind die üblichen Verdächtigen.

Und dann ist da noch DIALSTATUS. Wenn sich eben niemand nach x-Sekunden meldet, geht's an die Mailbox; ebenso wenn bestetzt ist.

Ich habe nun versucht, das mit den Queues nachzubauen.

Code:
exten => 555,1,Set(CALLERID(name)=Line: wurscht)
exten => 555,n,Answer
exten => 555,n,Queue(myring|ThH|||100)

Die primäre Aufgabe (läuten der Members) geht, aber nun kann ich nicht mehr die Variable DIALOPTIONS verwenden. Ich will aber, daß nach einer bestimmten Zeit die Mailbox anspringt.

Könnt Ihr mir helfen, wie ich das hinbekomme.

Danke,
Niki
 
Hallo,
die allereinfachste Form eine ringgroup zu erzeugen ist wohl diese hier:

exten => 22,1,NoOp(Gruppe 22 anrufen)
exten => 22,n,Dial(SIP/12&SIP/13&SIP/35&Zap/g4/51&Zap/g4/52,45,<options>)

Ich Regel das jedoch über ein recht komplexes Script das auch weiterleitungen etc abhandelt.
 
gentoo_user schrieb:
exten => 22,1,NoOp(Gruppe 22 anrufen)
exten => 22,n,Dial(SIP/12&SIP/13&SIP/35&Zap/g4/51&Zap/g4/52,45,<options>)

Ich Regel das jedoch über ein recht komplexes Script das auch weiterleitungen etc abhandelt.

Ja, die kenne ich und so mache ich es derzeit. Ich suche aber etwas Eleganteres, was auch mehr möglichkeiten bietet.

Kannst Du mir mehr über dieses Script erzählen, v.a. die Weiterleitungen interessieren mich.
 
Hallo,
was meinst du mit mehr möglichkeiten und eleganter?

Das Script übernimmt viele logische Funktionen die den Wählplan selbst einfacher gestalten sollen.

Ich weis aber derzeit nicht ob ich das hier veröffentlichen dürfte da es meinem Arbeitgeber gehört bestandteil unserer zukünftigen Produkte werden soll eventuell.

Im wesentlichen zieht das Script Informationen aus der astdb und entscheidet anhand dessen was mit dem Anruf passieren soll.

Was wir können:
- Entscheiden was bei besetzt, nicht abheben passieren soll
- Ermittlung der Nebenstellen-Technologie
- Einzel oder globale Rufumleitung
- Rufgruppen
- u.a.

Ist alles noch nicht ganz bugfrei...
 
Nachtrag:
Unser Script hat etwas über 600 Zeilen (ich schätze grob ohne Leerzeilen 400-500 Zeilen reiner Code)

Wenn Interesse und Nachfrage nach dieser Beta(!) besteht wäre vielleicht eine veröffentlichung unter GPL denkbar, aber versprechen kann ich nichts :)
 
beowulf schrieb:
Ich habe nun versucht, das mit den Queues nachzubauen.

Code:
exten => 555,1,Set(CALLERID(name)=Line: wurscht)
exten => 555,n,Answer
exten => 555,n,Queue(myring|ThH|||100)

Die primäre Aufgabe (läuten der Members) geht, aber nun kann ich nicht mehr die Variable DIALOPTIONS verwenden. Ich will aber, daß nach einer bestimmten Zeit die Mailbox anspringt.
Die Variable die du benutzen solltest, lautet:
QUEUESTATUS
Darin steht:TIMEOUT | FULL | JOINEMPTY | LEAVEEMPTY | JOINUNAVAIL | LEAVEUNAVAIL
Somit kannst du nach dem timeout den call beantworten oder direkt in VoiceMail versenken.
Also in der Art:
...dein DialPlan...
exten => 555,n,GoTo(lala,q-${QUEUESTATUS},1) ; Status auswerten
[lala] ;hier landen die Anrufe nach dem timeout
exten => q-TIMEOUT,1,VoiceMail(foo@bar) ;ab in die box

BTW, ich nutze queue ohne Answer davor und mit der Ring-Option.
Somit wird der Anruf nicht angenommen sonder transparent an die Members gereicht, rein psychologisch waehnt er sich nicht in der Warteschleife weil er immer noch das Klinglezeichen bekommt.
Erst wenn der Timeout zuschlaegt, bekommt der Anrufer eine Ansage und ein Menue wo er zwischen VoiceMail oder warten waehlen kann.
Wenn er warten moechte, so wird er in die selbe queue wiedereingestellt, dann aber mit Musik und einer hoeheren Prioritaet.
Damit habe sich die "Warteschlangen-Aufleger" verringert.
 
kann man eigentlich einen Anruf gleichzeitig in zwei Queue leiten. Wenn ja wie?

Sinn:
1. Queue strategy ringall (mit wenig Agenten)
2. Queue strategy rrmemory (alle anderen Agenten)
es sollen min zwei Agenten angerufen werden.
 
Numsi schrieb:
Die Variable die du benutzen solltest, lautet:
QUEUESTATUS
Darin steht:TIMEOUT | FULL | JOINEMPTY | LEAVEEMPTY | JOINUNAVAIL | LEAVEUNAVAIL
Somit kannst du nach dem timeout den call beantworten oder direkt in VoiceMail versenken.
Also in der Art:
...dein DialPlan...
exten => 555,n,GoTo(lala,q-${QUEUESTATUS},1) ; Status auswerten
[lala] ;hier landen die Anrufe nach dem timeout
exten => q-TIMEOUT,1,VoiceMail(foo@bar) ;ab in die box

Danke, das funktioniert jetzt wunderbar. Du hast ja auch geschrieben, daß Du die Ring-Option wählst. Du meinst also z.B.
exten => 800,n,Ringing

Was mich nämlich noch stört ist, daß die Anrufer eine Warteschleifenmusik zu hören bekommen, obwohl ich die entsprechende Option in der queues.conf mit ; musiconhold=blabla
deaktiviert habe.

Mein entsprechender Eintrag in der extensions.conf sieht so aus
Code:
[myqueue]
exten => 800,1,NoCDR()
exten => 800,n,Ringing
exten => 800,n,Queue(myring|ThH|||30)
exten => 800,n,Goto,q-${QUEUESTATUS}|1

exten => q-TIMEOUT,1,voicemail,u39
exten => q-TIMEOUT,n,Hangup

Ich möchte, daß die Anrufer nur ein Freizeichen zu hören bekommen. Gut, zur Not kann ich ein solches Soundfile in die MOH legen, aber das muß ja anders funktionieren.

Niki
 
Queue hat noch ein paar mehr Parameter, lies mal nach.
In der queue.conf habe ich _mit_ musik als default.
Beim ersten Anruf nehme ich queue mit Parameter "r".
Wenn er da durchfaellt:
-Ansage
-menue (warten oder voicemail)
bei warten:
-prioritaet erhoehen
-einqueuen in die selbe aber ohne "r" (also mit Musik)
 
Numsi schrieb:
Queue hat noch ein paar mehr Parameter, lies mal nach.
In der queue.conf habe ich _mit_ musik als default.

Danke! Manchmal ist das einfache doch so fern.

Eine Frage habe ich noch. In der queue.conf habe ich die members defininiert
member => SIP/39
member => SIP/36
member => SIP/810

Hinter 810 verbirgt sich nichts anderes eine Extension, die, wenn angerufen, extern weiterleitet. Ruft jemand die 810 an, wird mein Handy angerufen. Das funktioniert auch tadellos.

Setze ich aber diese Extension in die queue.conf ein, dann kommt eine Fehlermeldung
WARNING[11839]: chan_sip.c:1997 create_addr: No such host: 810.

Wenn ich aber das Forward manuell eintrage, also
member => SIP/777@trunk4 dann geht's.

Die Extension 810 existiert nur virtuell (also es gibt kein SIP Device, das da abhebt). Liegt es daran?
 
Sorry ich nutze keine Members aus der conf.
Ich loese das anders:
Die Telefone melden sich als Agenten an der Queue an und werden dann aus selbiger bedient.
Aber wenn du Members hast, so sollten diese auch erreichbar sein, also die Technologie die dahinter steht, vorhanden sein, egal ob SIP; IAX; CAPI oder Dosentelefon.
Wenn du dort einen Pseudoeintrag hast der nicht existiert, so solltes du das nicht innerhalb der Queue loesen, sondern nach einem Timeout ausserhalb der Queue.
 
beowulf: Schau dir mal den LOCAL/ Channel an. Findest auch genügend Infos hier im Board dazu. Damit sollte sich deine virtuelle Extension Anrufen lassen.
 
polskafan schrieb:
Schau dir mal den LOCAL/ Channel an. Findest auch genügend Infos hier im Board dazu. Damit sollte sich deine virtuelle Extension Anrufen lassen.

Spitze! Jetzt klappt es perfekt.

Danke!
 
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.