Metainformationen zur Seite
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende Überarbeitung | |||
archiv:4_x:server:knowledgebase:confbridge [07.06.2023 15:42] – gelöscht - Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1 | archiv:4_x:server:knowledgebase:confbridge [07.06.2023 15:42] (aktuell) – ↷ Seite von archiv:4_x:ucware:server:knowledgebase:confbridge nach archiv:4_x:server:knowledgebase:confbridge verschoben richard.neubert | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ====== ConfBridge ====== | ||
+ | |||
+ | // | ||
+ | |||
+ | ===== Usage ===== | ||
+ | |||
+ | '' | ||
+ | |||
+ | Der Konferenzraumname ('' | ||
+ | )) oder können mit der '' | ||
+ | )) dynamisch gesetzt werden. | ||
+ | |||
+ | <code lua> | ||
+ | app.Answer() | ||
+ | app.ConfBridge(' | ||
+ | </ | ||
+ | ===== Leistung ===== | ||
+ | |||
+ | ^Kerne^Konferenzen^Teilnehmer pro Konf^∑ Calls^ | ||
+ | |8 |100 |10 | ||
+ | |||
+ | ===== Statische Konferenzräume ===== | ||
+ | |||
+ | In der Defaultinstallation, | ||
+ | |||
+ | Statische Konferenzräume müssen als sog. „Custom-Extension” angelegt werden. Diese werden in den beiden Dateien '' | ||
+ | |||
+ | Wichtig: Die Custom-Extension müssen grundsätzlich lauffähigen Lua-Code enthalten. Ein Fehler, z.B. im Syntax, o.ä., führt dazu, dass der Dailplan bei //jedem// Anrufversuch fehlschlägt! | ||
+ | |||
+ | Weiter Informationen: | ||
+ | |||
+ | ==== Beispiel Extensions ==== | ||
+ | |||
+ | |||
+ | '' | ||
+ | |||
+ | <code lua> | ||
+ | local Channel = require ' | ||
+ | |||
+ | local function conference(confpin) | ||
+ | return function(context, | ||
+ | Channel[" | ||
+ | app.Answer() | ||
+ | app.Wait(0.5); | ||
+ | app.Read(' | ||
+ | local pin = Channel.pin | ||
+ | if pin == confpin then | ||
+ | app.Confbridge(extension); | ||
+ | else | ||
+ | app.Playback(' | ||
+ | end | ||
+ | app.Hangup(); | ||
+ | end | ||
+ | end | ||
+ | |||
+ | local _M = {} | ||
+ | _M.extensions = { | ||
+ | [' | ||
+ | [" | ||
+ | [" | ||
+ | -- Konferenzen 123[0-9] mit der Pin „Konferenzraum + 1“ | ||
+ | [" | ||
+ | -- ["< | ||
+ | } | ||
+ | } | ||
+ | |||
+ | return _M | ||
+ | </ | ||
+ | |||
+ | |||
+ | '' | ||
+ | |||
+ | <code lua> | ||
+ | local Channel = require ' | ||
+ | |||
+ | local _M = {} | ||
+ | _M.extensions = { | ||
+ | [' | ||
+ | include = {' | ||
+ | } | ||
+ | } | ||
+ | |||
+ | return _M | ||
+ | </ | ||
+ | |||
+ | ===== Komplexes Beispiel mit Datenbank ===== | ||
+ | |||
+ | Das hier aufgeführte Beispiel basiert auf einer Custom-Entwicklung für einen Kunden. In den Konferenzräumen soll es einen Konferenzleiter, | ||
+ | |||
+ | Anlegen der '' | ||
+ | |||
+ | <code ini> | ||
+ | [general] | ||
+ | |||
+ | [default_user] | ||
+ | type=user | ||
+ | dsp_drop_silence=yes | ||
+ | |||
+ | [minion] | ||
+ | type=user | ||
+ | dsp_drop_silence=yes | ||
+ | wait_marked=yes | ||
+ | music_on_hold_when_empty=yes | ||
+ | announce_user_count=yes | ||
+ | |||
+ | [master] | ||
+ | type=user | ||
+ | marked=yes | ||
+ | dsp_drop_silence=yes | ||
+ | music_on_hold_when_empty=yes | ||
+ | announce_user_count=yes | ||
+ | |||
+ | [default_bridge] | ||
+ | type=bridge | ||
+ | record_conference=no | ||
+ | |||
+ | [defconf] | ||
+ | type=bridge | ||
+ | |||
+ | </ | ||
+ | In der Asterisk-CLI '' | ||
+ | |||
+ | Wenn die Datei '' | ||
+ | |||
+ | ===== Dialplan ===== | ||
+ | |||
+ | Hier eine Beispielhafte Anwendung von ConfBridge, '' | ||
+ | |||
+ | <code lua> | ||
+ | local Channel = require ' | ||
+ | local gsdb = require ' | ||
+ | local Log = require ' | ||
+ | |||
+ | |||
+ | local _M = {} | ||
+ | _M.extensions = { | ||
+ | [" | ||
+ | [" | ||
+ | local db = gsdb: | ||
+ | Channel[" | ||
+ | local room = string.sub(extension, | ||
+ | local conf = db: | ||
+ | (' | ||
+ | ) | ||
+ | app.Answer() | ||
+ | app.Wait(1) | ||
+ | if conf then | ||
+ | for i=1,3 do | ||
+ | app.Read(' | ||
+ | local pin = Channel.pin | ||
+ | if pin == conf.adminpin then | ||
+ | app.ConfBridge(room, | ||
+ | break | ||
+ | elseif pin == conf.pin then | ||
+ | app.ConfBridge(room, | ||
+ | break | ||
+ | else | ||
+ | Log: | ||
+ | app.Playback(' | ||
+ | end | ||
+ | end | ||
+ | app.Playback(' | ||
+ | else | ||
+ | Log: | ||
+ | app.Playback(' | ||
+ | end | ||
+ | app.Hangup(); | ||
+ | end; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | return _M | ||
+ | |||
+ | </ | ||
+ | Datenbank für die Konferenzen. | ||
+ | |||
+ | <code sql> | ||
+ | CREATE TABLE IF NOT EXISTS custom_conferences( room VARCHAR(10) UNIQUE, pin VARCHAR(10), | ||
+ | |||
+ | REPLACE INTO custom_conferences (room, pin, adminpin) VALUES | ||
+ | (' | ||
+ | …; | ||
+ | </ | ||
+ | ===== Weiteres ===== | ||
+ | |||
+ | * https:// | ||
+ | |||