Zoom-Meetings sind in letzter Zeit sehr populär geworden und werden für sehr viele geschäftliche und private Konferenzen und Besprechungen verwendet. Zoom bietet auch die direkte Einwahl und Teilnahme per Telefon an. Die zugehörigen Einwahlnummern sind aber nur in den kostenpflichtigen Accounts sichtbar. Die Option, externe Teilnehmer aus einem Zoom-Meeting heraus anzurufen und mit hereinzuholen, kostet beträchtlichen Aufpreis. Da bei mir aber bereits ein Asterisk mit ConfBridge läuft, kam schnell der Gedanke, die Asterisk ConfBridge mit einem Zoom-Meeting zu verbinden.
Voraussetzung: Asterisk ConfBridge
Wie man einen Asterisk Telefonieserver installiert und konfiguriert würde an der Stelle viel zu weit führen, da dies ein sehr komplexes Thema ist. Ich verweise hierfür auf die offizielle Dokumentation, sowie auf www.voip-info.org, die sehr viele hilfreiche Informationen zum Thema bereit hält.
Asterisk sollte also bereits mit dem Modul ConfBridge installiert sein und laufen. Interne Telefone sollten eingerichtet sein und von innen und außen erreichbar sein. Die Telefonkonferenz sollte ebenfalls von innen und außen erreichbar sein.
Damit kann’s dann mit der Zoom-Anbindung losgehen:
Konzept
Im Groben funktioniert das Verbinden von Asterisk ConfBridge und Zoom-Meeting so, dass man in der Telefonkonferenz eine bestimmte Taste drückt. Asterisk fragt dann die Einwahlnummer, die Meeting-ID, sowie das Passwort über die Telefontastatur ab. Nach Eingabe all dieser Nummern wählt Asterisk sich in das Zoom-Meeting ein und verbindet das Telefonat dann mit der Telefonkonferenz.
Asterisk ConfBridge erweitern
Eine bisher nicht belegte Taste wird verwendet, um mithilfe der Funktion “dialplan_exec” in den Dialplan zu verzweigen. Hier ein Beispiel:
[sample_user_menu] type=menu *=playback_and_continue(conf-usermenu) *1=toggle_mute 1=toggle_mute *2=dialplan_exec(addcaller,1,1) 2=dialplan_exec(addcaller,1,1) *3=dialplan_exec(addcaller,2,1) 3=dialplan_exec(addcaller,2,1) *4=decrease_listening_volume 4=decrease_listening_volume *6=increase_listening_volume 6=increase_listening_volume *7=decrease_talking_volume 7=decrease_talking_volume ;*8=leave_conference ;8=leave_conference *9=increase_talking_volume 9=increase_talking_volume
Ich habe hier sogar 2 Tasten für die Einbindung externer Teilnehmer verwendet. Eine für Zoom-Meetings, die andere für normale externe Telefonnummern.
Die Funktion dialplan_exec(addcaller,1,1)
verzweigt in den Kontext “addcaller” mit der Extension “1” und der Priorität “1”.
dialplan_exec(context,exten,priority)
The
Asterisk Dokudialplan_exec
action allows a user to escape from the conference and execute commands in the dialplan. Once the dialplan exits the user will be put back into the conference. The possibilities are endless!
Dialplan für Zoom-Meeting
Im Dialplan passiert nun folgendes:
[addcaller] ; add Zoom-Meeting exten => 1,1,NoOp(${CALLERID}) same = n,Read(CALL_NUMBER,enter-conf-call-number,25,2,60) same = n,Playback(auth-thankyou) same = n,Read(GLOBAL(MEETING_ID),enter-conf-call-number,13,2,30) same = n,Playback(auth-thankyou) same = n,Read(GLOBAL(PWD),enter-conf-call-number,13,2,30) same = n,Playback(auth-thankyou) same = n,Originate(PJSIP/${CALL_NUMBER}@T_9331206,exten,Features,92,1) ; add Mobile-Number exten = 2,1,NoOp(${CALLERID}) same = n,Read(CALL_NUMBER,enter-conf-call-number,25,2,60) same = n,Playback(auth-thankyou) same = n,Originate(PJSIP/${CALL_NUMBER}@VM_tom,exten,Features,91,1)
Read()
(Doku) Liest mit der Aufforderung ausEnter-conf-call-number
eine Zahlenfolge über die Telefontastatur ein und speichert sie in der VariablenCALL_NUMBER
.GLOBAL()
(Doku) Ist um die Variable herum ist nötig, daCALL_NUMBER
eine globale Variable ist.Originate()
(Doku) Macht den eigentlichen Anruf und verzweigt in den Kontext “Features” mit der Extension “91”, sobald der Gegenpart (Zoom) den Anruf annimmt.
[Features] exten = 91,1,Verbose(1, "Zoom-Meeting wird der Konferenz hinzugefügt.") same = n,Answer() same = n,Wait(3) same = n,Confbridge(conf1,,,sample_user_menu) same = n,Hangup()
Im Kontext “Features” (die Kontexte können übrigens heißen wie sie wollen) wird der Anruf dann über die Funktion Confbridge()
(Doku) der bestehenden Konferenz hinzugefügt. Hierbei ist nur wichtig, dass mit “conf1” die selbe Konferenz genannt wird, die ja bereits besteht.
Die Konferenz hat jetzt somit mindestens 2 Teilnehmer, der interne Anrufer, die per Tastendruck die Anwahl des Zoom-Meetings veranlaßt hat, sowie das Zoom-Meeting als weiteren Teilnehmer. Natürlich können sich parallel noch beliebig viele andere Telefonteilnehmer in die Konferenz einwählen.