Asterisk ConfBridge und Zoom-Meeting

image_pdfimage_print

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 dialplan_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!

Asterisk Doku

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 aus Enter-conf-call-number eine Zahlenfolge über die Telefontastatur ein und speichert sie in der Variablen CALL_NUMBER.
  • GLOBAL() (Doku) Ist um die Variable herum ist nötig, da CALL_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.

[print-me]

Schreibe einen Kommentar