[E]Per Crontab Teilnehmer in Queue ein- und ausbuchen?

ike

Aktives Mitglied
Mitglied seit
18 Apr 2005
Beiträge
1,004
Punkte für Reaktionen
0
Punkte
0
Ich habe derzeit unsere Konfiguration so gestaltet, dass alle Anrufe nach 15 Sekunden wahlweise auf der Sprachmailbox landen oder in einer Warteschleife.

In dieser Warteschleife sind zwei statische Agenten: das Zentraltelefon, sowie ein Mobilgerät.

Nun würde ich es gerne sehen, dass ab einer bestimmten Uhrzeit noch weitere Telefone als Agenten aufgenommen werden (die natürlich am Morgen wieder automatisch entfernt werden sollen)

Wie könnte das geschehen?
 
Naja, erzeuge ein passendes call-File und kopiere es mit einem Cron-Job zu deinen gewünschten Zeiten in /var/spool/asterisk. (Besser wäre allerdings, wenn du ein call-File fertigstells, dann eine Kopie davon machst, und die dann verschiebst, da es sonst teoretisch Probleme geben könnte).

http://www.voip-info.org/tiki-index.php?page=Asterisk+auto-dial+out
 
Klingt super! Ich denke, dass ich mit den Call-Files eine Lösung aufbauen kann. Wieviel Zeit sollte man zwischen den einzelnen Call-Files verstreichen lassen? im verlinkten Text steht ja, dass man nicht mehr als 10 Dateien auf einmal verschieben solle, sondern sich etwas Zeit lassen solle.
 
Ich denke nicht, dass mehr als 2 sekunden pro calfile nötig sind. Das Abmelden ist ja ein Asterisk-Interner vorgang. Da muss ja nichts mehr gewählt werden, oder so. Wenn es immer die gleichen Agenten sind, die Du an und abmelden willst, dann könnest Du ja auch einen Kontext erstellen, in diem die Agenten alle miteinander an oder abgemeldet werden. Dann bräuchtest Du nur ein call-File. Mir fallen aber bestimmt noch ein paar andere Varianten ein, wenn ich jetzt noch weiter überlege.... :)
 
Überlege ruhig weiter, ich bin immer an eleganten Lösungen interessiert. ;-)

Ich bin aber vor allen Dingen noch an einer Lösung interessiert, wo das Gespräch nicht angenommen werden muß.

Derzeit sieht es ja wie folgt aus:
- Der Anrufer wählt eine Rufnummer, die dazugehörige Extension wird angeklingelt
- Geht diese nach 15 Sekunden nicht ran, kommt ein Voice-Menü, in dem der Anrufer entscheiden kann, etwas auf den AB zu sprechen oder die Zentrale anzurufen. Wählt er Letzteres, landet er in der Queue.

Jetzt fände ich es persönlich noch schön, wenn bei den Leuten, die kein AB haben wollen, der Anrufer nicht in der Queue landen würden, sondern in einer Callgroup. Und die müsste dann zeitabhängig geschaltet werden.

Da könnte ich u.U. was mit einer Anrufumleitung bei Nichterreichbarkeit machen. Allerdings gehen meine DID-Routen direkt auf eine Callgroup, in der wiederum die jeweilige Extension steht (habe ich so gewählt, damit Intern-Anrufe nicht auf die Sprachmailbox gehen und man es intern länger klingeln lassen kann)

Kann man Umleitungen für Callgroups definieren? Also z.B. wie folgt:
Die DID 4711-11 wird auf Callgroup 911 geleitet, in der sich die Extension 11 befindet. Normalerweise wird nach 15 Sekunden auf die Queue 60 weitergeleitet.
Jetzt müsste eine Weiterleitung bei Nichterreichbarkeit für die Callgroup 911 definiert werden, die nach 13-14 Sekunden auf die Callgroup 50 verzweigt.

Ist das zu komplziert gedacht? ich möchte möglichst wenig in der extensions.conf rumdrehen, da ich Asterisk@Home einsetze.

Das Einzige, was ich bislang dort ändern musste, war das Verhalten bei Trunks. Dort kam bei ausgehenden Telefonaten bei einer falschen Rufnummer immer die sehr missverständliche Ansage "All Circuits are busy". Da ich leider nicht gefunden habe, wie ich die Ansage der Vermittlungsstelle nicht unterdrücke, habe ich für diesen Fehlercode (NOANSWER) eine Congestion gesetzt. Dies erscheint mir am Sinnvollsten.
 
Wie muss dieses Callfile denn aussehen? Egal was ich in /var/spool/asterisk/outgoing plaziere - es wird geflissentlich ignoriert :-(
Die Datei ist nachher gelöscht, also muß etwas passiert sein, allerdings sieht man nicht mal in den Logfiles etwas ...

Eine Testdatei sieht z.B. wie folgt aus:
Code:
Channel: Local/20
MaxRetries: 2
RetryTime: 60
WaitTime: 30
Context: from-internal
Extension: 11
Priority: 1
Mache ich das über die Manager-API (per Telnet) so geht es. Prinzipiell könnte ich also die Agenten über die API auslösen.

Jedoch habe ich da das Problem, was ich als "Channel" und was als "Exten" angebe. Die Extension dürfte der Code sein, mit dem ich die Agenten aktiviere, okay. Aber was ist der Channel? Ich möchte ja eben nicht zu bestimmten Uhrzeiten angerufen werden, um erst nach dem Abheben die Agenten aktiviert zu haben. Gibt es einen Dummy-Channel?

Update:
So wird immerhin ein Anruf ausgelöst:
Code:
Channel: Local/20
MaxRetries: 2
RetryTime: 60
WaitTime: 30
Context: from-internal
Extension: *600
Priority: 1
Callerid: 20
Die Caller-ID ist also extrem wichtig.

Nur was nutze ich als Channel, damit das Gespräch ausgelöst wird, ohne dass jemand den Hörer abnehmen muss?
 
Du möchtest die extension 11 im Kontext "from-internal" aufrufen, richtig?
Habe das zwar nochnicht probiert, aber versuche mal sowas:

Code:
Channel: Local/11@from-internal
Application: Noop
MaxRetries: 2
RetryTime: 60
WaitTime: 30
 
Ich habe es jetzt wie folgt lösen können:
Code:
channel: Local/*600@from-internal
maxretries: 2
retrytime: 60
waittime: 30
callerid: 20
application: MusicOnHold
data:
Dann spielen sich die einzelnen Applikationen gegenseitig ihre Töne zu ;-)

Aber Deine Lösung klappt auch - und ist schlanker, danke!
 
Hauptsache Asterisk mag seine eigene MOH :). Aber schön, dass es funzt!
 
Kostenlos!

Statistik des Forums

Themen
248,885
Beiträge
2,303,946
Mitglieder
378,564
Neuestes Mitglied
warumdas