Nachdem ich meinen Asterisk mit chan_misdn fahre, aber dennoch einen Konferenzraum haben möchte (ausdrücklich nicht muss! Ist nur das Wissen-wollen wie's geht), habe ich mir einmal app_conference angeschaut. Gefällt mir auf den ersten Blick ganz gut, da ich nicht diese Dummy-Zaptel-Treiber dazu brauche.
Und noch eins vorausgeschickt:
Ich kenne den Ablauf von meetme gar nicht, da ich es noch nie laufen hören hab (bin ja mISDN'ler). Ausserdem muss ich gestehen, dass ich es mit dem wirklichen "Verstehen" der Dialplan-Syntax nicht so habe. Ich bin eher ein Trial&Error'er...
Dennoch habe ich mich an diese Thema gewagt... /me der Dare-devil ;-)
In der einfachsten Variante klappt eigentlich auch alles (funktionell). Man kommt in die Konferenz und kann miteinander konferieren. Allerdings ist die ganze Sache meines Erachtens noch nicht ganz rund. Es gibt keinerlei Meldungen wann jemand die Konferenz betritt, bzw. verlässt und die einzige Audiomeldung die kommt (You are curently the only...) ist in Englisch.
Drum möchte ich (zusammen mit Euch) versuchen die notwendige Syntax/ den überhaupt möglichen Funktionsumfang zu erarbeiten um daraus ggfls. ein HowTo zu erstellen.
Der gewünschte Funktionsumfang wäre:
- Abfrage der (Konferenznummer)/ PIN bei Einwahl von extern
- KEINE Abfrage wenn man von intern in den Konferenzraum geht
- Entsprechende Audioausgaben bei Eintritt/ Verlassen der Konferenz
- app_conference soll Deutsch lernen
- ...
Zunächst meine bisherigen Schritte :
Ich setze voraus, dass man app_conference + die deutschen Sounds funktionsfähig in Asterisk kompiliert hat. In meinem Beispiel hat meine Konferenz hat die Nummer 1 (PIN 1234) und wird über die Extension 33 von intern und über [MSN] von ausserhalb angewählt.
Damit dem Konferenzraum "1" auch eine PIN zugeordnet wird habe ich dies im CLI mit dem Befehl: "database put conferences 1 1234" in die Ast-DB geschrieben. Wählt man nun die [MSN], dann wird (auf Deutsch!) nach der Konferenzraumnummer gefragt. Leider hat das Deutsche Soundfile "Bitte geben Sie die Konferenznummer ein.." noch den Zusatz "..und drücken Sie die Raute-Taste". Drückt man aber die Raute-Taste, dann wird der gesamte Kontext natürlich sofort beendet. Blöd.
Hierfür habe ich noch keine Lösung, ausser eben die Raute-Taste nicht zu drücken. Bin für Vorschläge dankbar!
Nach erfolgreicher Eingabe der Konferenznummer (hier eben einfach "#" weglassen) wird man dann nach der PIN gefragt. Gibt man eines der beiden falsch ein, wird man eben nochmal danach gefragt. Bislang hab ich aber auch noch nicht herausgefunden, wie man so eine Abfrage (elegant!, nicht holzhackermäßig) z.B. nur 2 Mal macht und dann einen Hangup erzwingt. Man soll ja nicht endlos Probieren können um auf die PIN zu kommen.
Hat man beides aber korrekt eingegeben, dann landet man im Koferenzraum "1". Leider wird man dort (als erster) mit der Englischen Ansage "You are currently the only person in this room" begrüsst. Dieses Audio-File würde ich gerne in das Deutsche "Sie sind momentan der einzige Teilnehmer in dieser Konferenz" ändern. Tritt nun Teilnehmer 2,3,n in die Konferenz, erhalten allerdings weder die sich bereits darin Befindlichen, noch der Neu-Beitretende eine Audioausgabe á la "(Ein) weiterer Teilnehmer in dieser Konferenz". Genau das ist wohl in app_conference auch gar nicht vorgesehen.
Der wohl bislang einzige Weg, zumindest laut http://www.voip-info.org/wiki/view/Asterisk+cmd+Conference läuft wohl über das dort beschriebene Perl-Script. Leider habe ich keinerlei Erfahrung mit Perl-Scripten und kann mir nur in etwa zusammenreimen was es macht. Wenn ich es aber richtig verstanden habe, dann kann man die verscheidenen Stati der Konferenz nur über die in app_conference implementierten Ausgaben an das Manager-API auswerten. Und das macht wohl das Script um von dort aus wieder an die definierten Stellen der extensions.conf zu verweisen. Aber das geht bei mir (noch) nicht...
Hier also meine extensions.conf:
Ich gebe zu, es steht noch nicht viel anderes in meinem Dialplan, als man auch von voip-info hätte copy&pasten hätte können. Aber vielleicht stösst mein Posting ja auch bei dem Einen oder Anderen auf fruchtbaren Boden und man kann gemeinsam in eine weitere dunkle Ecke von Asterisk etwas Licht bringen.
Danke schon Mal für's Lesen dieses Monster-Postings!
Bis neulich
TOM
--edit--
OK, ich hab mich die letzten 2 Stunden Mal mit dem Perl-Script gespielt. Jetzt werden teilweise (noch Englische) Sounds abgespielt bei Beitritt/ Verlassen. Leider haut dies aber nur ungefähr 1 Mal von 20 Versuchen hin. Bei den restlichen 19 stürzt Asterisk gnadenlos ab.
--edit--
Und noch eins vorausgeschickt:
Ich kenne den Ablauf von meetme gar nicht, da ich es noch nie laufen hören hab (bin ja mISDN'ler). Ausserdem muss ich gestehen, dass ich es mit dem wirklichen "Verstehen" der Dialplan-Syntax nicht so habe. Ich bin eher ein Trial&Error'er...
Dennoch habe ich mich an diese Thema gewagt... /me der Dare-devil ;-)
In der einfachsten Variante klappt eigentlich auch alles (funktionell). Man kommt in die Konferenz und kann miteinander konferieren. Allerdings ist die ganze Sache meines Erachtens noch nicht ganz rund. Es gibt keinerlei Meldungen wann jemand die Konferenz betritt, bzw. verlässt und die einzige Audiomeldung die kommt (You are curently the only...) ist in Englisch.
Drum möchte ich (zusammen mit Euch) versuchen die notwendige Syntax/ den überhaupt möglichen Funktionsumfang zu erarbeiten um daraus ggfls. ein HowTo zu erstellen.
Der gewünschte Funktionsumfang wäre:
- Abfrage der (Konferenznummer)/ PIN bei Einwahl von extern
- KEINE Abfrage wenn man von intern in den Konferenzraum geht
- Entsprechende Audioausgaben bei Eintritt/ Verlassen der Konferenz
- app_conference soll Deutsch lernen
- ...
Zunächst meine bisherigen Schritte :
Ich setze voraus, dass man app_conference + die deutschen Sounds funktionsfähig in Asterisk kompiliert hat. In meinem Beispiel hat meine Konferenz hat die Nummer 1 (PIN 1234) und wird über die Extension 33 von intern und über [MSN] von ausserhalb angewählt.
Damit dem Konferenzraum "1" auch eine PIN zugeordnet wird habe ich dies im CLI mit dem Befehl: "database put conferences 1 1234" in die Ast-DB geschrieben. Wählt man nun die [MSN], dann wird (auf Deutsch!) nach der Konferenzraumnummer gefragt. Leider hat das Deutsche Soundfile "Bitte geben Sie die Konferenznummer ein.." noch den Zusatz "..und drücken Sie die Raute-Taste". Drückt man aber die Raute-Taste, dann wird der gesamte Kontext natürlich sofort beendet. Blöd.
Hierfür habe ich noch keine Lösung, ausser eben die Raute-Taste nicht zu drücken. Bin für Vorschläge dankbar!
Nach erfolgreicher Eingabe der Konferenznummer (hier eben einfach "#" weglassen) wird man dann nach der PIN gefragt. Gibt man eines der beiden falsch ein, wird man eben nochmal danach gefragt. Bislang hab ich aber auch noch nicht herausgefunden, wie man so eine Abfrage (elegant!, nicht holzhackermäßig) z.B. nur 2 Mal macht und dann einen Hangup erzwingt. Man soll ja nicht endlos Probieren können um auf die PIN zu kommen.
Hat man beides aber korrekt eingegeben, dann landet man im Koferenzraum "1". Leider wird man dort (als erster) mit der Englischen Ansage "You are currently the only person in this room" begrüsst. Dieses Audio-File würde ich gerne in das Deutsche "Sie sind momentan der einzige Teilnehmer in dieser Konferenz" ändern. Tritt nun Teilnehmer 2,3,n in die Konferenz, erhalten allerdings weder die sich bereits darin Befindlichen, noch der Neu-Beitretende eine Audioausgabe á la "(Ein) weiterer Teilnehmer in dieser Konferenz". Genau das ist wohl in app_conference auch gar nicht vorgesehen.
Der wohl bislang einzige Weg, zumindest laut http://www.voip-info.org/wiki/view/Asterisk+cmd+Conference läuft wohl über das dort beschriebene Perl-Script. Leider habe ich keinerlei Erfahrung mit Perl-Scripten und kann mir nur in etwa zusammenreimen was es macht. Wenn ich es aber richtig verstanden habe, dann kann man die verscheidenen Stati der Konferenz nur über die in app_conference implementierten Ausgaben an das Manager-API auswerten. Und das macht wohl das Script um von dort aus wieder an die definierten Stellen der extensions.conf zu verweisen. Aber das geht bei mir (noch) nicht...
Hier also meine extensions.conf:
Code:
...
[incoming]
exten => [MSN],1,Goto(conferences,333,1)
..
[conferences]
;Konferenzraum 1 von intern ohne Abfrage
exten => 33,1,Conference(1,M)
;Konferenzraum 1 von extern mit Abfrage
exten => 333,1,Wait,1
exten => 333,2,DigitTimeout,5
exten => 333,3,ResponseTimeout,8
exten => 333,4,BackGround(conf-getconfno)
exten => 333,5,Waitexten(20)
exten => 333,6,Goto(33,4)
exten => _1,1,DBget(pass=conferences/1) ; Gibt's die Konferenz nicht, springe nach 102
exten => _1,2,GotoIf($["xxx${pass}" = "xxxNONE"]?30) ; Gibt's kein Passwort, springe direkt in die Konferenz
exten => _1,3,Read(secret,conf-getpin,10)
exten => _1,4,GotoIf($["${pass}" != "${secret}"]?40:30)
exten => _1,30,Conference(1,STV)
exten => _1,31,Hangup
exten => _1,40,Playback(conf-invalidpin)
exten => _1,41,Wait(1)
exten => _1,42,Goto(_1,3)
exten => _1,41,Hangup
exten => _1,102,Playback(conf-invalid)
exten => _1,103,Wait(1)
exten => _1,104,Goto(33,4)
exten => _1,105,Hangup
...
[default]
include => incoming
include => conferences
Danke schon Mal für's Lesen dieses Monster-Postings!
Bis neulich
TOM
--edit--
OK, ich hab mich die letzten 2 Stunden Mal mit dem Perl-Script gespielt. Jetzt werden teilweise (noch Englische) Sounds abgespielt bei Beitritt/ Verlassen. Leider haut dies aber nur ungefähr 1 Mal von 20 Versuchen hin. Bei den restlichen 19 stürzt Asterisk gnadenlos ab.
--edit--
Zuletzt bearbeitet: