mirror of https://github.com/sipwise/sems.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
162 lines
5.1 KiB
162 lines
5.1 KiB
webconference : conference with dial-in and dial-out over DI (xmlrpc)
|
|
|
|
Intro
|
|
-----
|
|
This conference module can do dial-in, dial-out and mixed
|
|
dial-in/dial-out conferences. It can be controlled over DI functions
|
|
from other modules, and, for example, using the xmlrpc2di module,
|
|
the conference rooms can be controlled via XMLRPC.
|
|
|
|
It implements conference rooms with dial-in and conference room entry
|
|
via DTMF, and authenticated dial-out.
|
|
|
|
For dial-in, usually the user is asked to enter the conference room
|
|
number via keypad, followed by the star key.
|
|
|
|
In the configuration, a regular expression can be defined (direct_room_re),
|
|
which, if matched to the user part of the request uri, connects the caller
|
|
directly to the conference room. direct_room_strip sets how many characters
|
|
should be stripped from the user part in order to obtain the conference room
|
|
number.
|
|
|
|
Participants can be listed, kicked out, muted and unmuted over DI
|
|
(using xmlrpc2di over XMLRPC).
|
|
|
|
You will probably want to load uac_auth and xmlrpc2di modules.
|
|
|
|
There is some very simple feedback and call statistics functionality, which
|
|
will save its results to a log file.
|
|
|
|
A master password can be set, which serves to retrieve room PINs (adminpins),
|
|
for site administrator or the like.
|
|
|
|
Room adminpin handling
|
|
----------------------
|
|
The adminpin is used so that only authorized users can access the conference control.
|
|
The adminpin can be completely disabled by setting ignore_pin in webconference.conf,
|
|
in that case a specified adminpin is just ignored.
|
|
|
|
On all actions that inspect or modify a room, if the room specified with room/adminpin
|
|
does not exist, by default the room is (re)opened with the specified adminpin.
|
|
This means that roomCreate() does not necessarily need to be called; if roomInfo()
|
|
is called with a new room name and adminpin, the room is created and the adminpin
|
|
is set.
|
|
|
|
If a room exists and the adminpin is not set (for example if the room is created
|
|
by dial-in), the first call to roomInfo/dialout/kick/... with room/adminpin will
|
|
set the adminpin.
|
|
|
|
|
|
implemented DI functions
|
|
------------------------
|
|
All functions return as extra parameter the serverInfo, a status line showing the
|
|
SEMS version, and current call statistics.
|
|
|
|
----
|
|
roomCreate(string room):
|
|
int code, string result, string adminpin
|
|
|
|
code/result:
|
|
0 OK
|
|
1 room already open
|
|
----
|
|
roomInfo(string room, string adminpin):
|
|
int code, string result, list<participant> participants
|
|
participant: string call_tag, string number, int status, string reason, int muted
|
|
|
|
status:
|
|
0 Disconnected
|
|
1 Connecting
|
|
2 Ringing
|
|
3 Connected
|
|
4 Disconnecting
|
|
5 Finished
|
|
reason: e.g. "200 OK", "606 Declined", ...
|
|
|
|
code/result:
|
|
0 OK
|
|
1 wrong adminpin
|
|
----
|
|
dialout(string room, string adminpin, string callee,
|
|
string from_user, string domain,
|
|
string auth_user, string auth_pwd [, headers [, callee_domain]]) :
|
|
int code, string result, string callid
|
|
|
|
code/result:
|
|
0 OK
|
|
1 wrong adminpin
|
|
2 failed
|
|
----
|
|
kickout(string room, string adminpin, string call_tag) :
|
|
int code, string result
|
|
|
|
code/result:
|
|
0 OK
|
|
1 wrong adminpin
|
|
2 call does not exist in room
|
|
----
|
|
mute(string room, string adminpin, string call_tag) :
|
|
int code, string result
|
|
|
|
code/result:
|
|
0 OK
|
|
1 wrong adminpin
|
|
2 call does not exist in room
|
|
----
|
|
unmute(string room, string adminpin, string call_tag) :
|
|
int code, string result
|
|
|
|
code/result:
|
|
0 OK
|
|
1 wrong adminpin
|
|
2 call does not exist in room
|
|
----
|
|
changeRoomAdminpin(string room, string adminpin, string new_adminpin) :
|
|
int code, string result
|
|
|
|
code/result:
|
|
0 OK
|
|
1 wrong adminpin
|
|
----
|
|
serverInfo():
|
|
string serverInfo
|
|
----
|
|
getRoomPassword(string master_pwd, string room)
|
|
int code, string result
|
|
----
|
|
listRooms(string master_pwd)
|
|
int code, string result
|
|
----
|
|
|
|
additionally there is feedback functions to save call quality reports
|
|
from users: vqRoomFeedback, vqCallFeedback, vqConferenceFeedback.
|
|
resetFeedback, flushFeedback can be used to manipulate the feedback files.
|
|
|
|
getRoomPassword and listRooms in only available if master password is set
|
|
in webconference.conf
|
|
|
|
|
|
prompt suggestions:
|
|
------------------
|
|
entering_conference: You are now entering the conference room.
|
|
first_participant: You are the first participant in the conference.
|
|
pin_prompt: Welcome to iptel dot org conference. Please enter your room number, followed by the pound key.
|
|
wrong_pin: The room number is not correct. Please try again.
|
|
|
|
+ the numbers (0.wav ... 9.wav )
|
|
|
|
|
|
webconference.iptel.org server
|
|
------------------------------
|
|
|
|
At the free SIP service iptel.org there is a SEMS webconference server
|
|
running, which can be accessed through its rather simple web GUI at
|
|
https://webconference.iptel.org/ and http://webconference.iptel.org/
|
|
and through its XMLRPC control URI
|
|
https://webconference.iptel.org/control
|
|
|
|
see also:
|
|
--------
|
|
pyqt example gui client in
|
|
apps/webconference/pyqtgui
|