Over the last few weeks, I have answered a few questions about Openfire Meetings and would like to post them here for others who might find them useful.
How do create a co-browsing between participants in a meeting
Co-browsing URLs are configured with the client control plugin. You can share URLs with all, specific users or user groups. The URL description appears in the pull-down list of the collaboration applications menu on the web client. It should also appear in Spark, but I have never tested it. The basic user experience is the syncing of DOM events via the chrome extension and the visual shared cursors of each participant labelled with their names. See this blog for more details.
How do I setup the SIP integration for Openfire Meetings? How can I achieve call-in and call-out to meetings?
SIP integration is a bit detailed. It only works with persistent chat rooms. It requires changing the default values in the openfire meetings settings admin web page. You have to enable VOIP, audio mixer and configure either or both server and client roles. In server role, Openfire meetings will act as A SIP registrar and accept SIP registrations for any standard SIP phone or device or mobile softphone app. In client mode, openfire meetings will register with Asterisk, FreeSwitch or any SIP proxy, IP PBX. To associate a SIP phone call with an openfire meeting, you decide on any dial-able telephone number from the SIP device or SIP Proxy/PBX and link it with a chat room. You can put the number in the description or create a room using the telephone number as the name.
For outgoing calls from the web client, you must also make sure that one of the room moderators is a participant in the meeting otherwise the telephone icon will not appear. You can optionally use the client control plugin to define SIP/TEL URIs that will appear in a pull down list when the telephone icon is clicked. I have added support for a multicast URI, but you need to look at the source code for more information. For incoming, you can only join an active meeting. When the SIP invite is received, the SIP URI telephone number is matched against all active meetings and SIP endpoint audio is added to conference audio mixer.
When the openfire meetings audio mixer is enabled, audio quality is reduced to G711 ulaw in order to manage the CPU load on the server while mixing the audio streams. This will affect the webrtc user experience in the browser. If you do not use an audio mixer, then your SIP endpoint (phone, softphone) will only work if it supports multiple audio streams and has a client side audio mixer like the Jitsi desktop app.
How do I record a meeting?
Enable meeting recording (audio/video/screen share) and specify location of media files/folders from openfire meetings settings. Video is recorded only in linux 64 servers. On everything else (windows, 32 bit servers), only audio is recorded.
The PDF viewer does not work or is very slow. How can I fix this?
I can see Openfire Meetings has an API. can I use it from my web applications?
To do this, take a look at the demo video conference application (index.html) using the api in the “api” folder of the ofmeet plugin. You need to do the following things:
- Include “ofmeet.css” to get the correct styling and positioning of the video divs. The current behaviour is to use the full screen and auto-repostion/resize as participants leave or go. Please note that the api does not include the toolbar and all its features. Your application must implement those via api calls. Only the UI for the main video window and film strip for participants are implemented in the api.
- Include “/ofmeet/config”, the generated script file which contains all the settings and server config data packaged as a global object called “config”
- Write your application using the config and ofmeet objects as follows:
- Create event handlers for all ofmeet events. See index.html for the most common. All others can be found by looking at the ofmeet-api.js code for document.trigger calls.
- Trace the application flow in index.html starting from jquery document.ready event. First thing to do is call ofmeet.ready(username, password). Handle ofmeet.ready event and call ofmeet.connect.
- Handle ofmeet..connected and join the conference room with ofmeet.joinRoom(roomName, audioVideoFlag).
- You can exit the conference with ofmeet.leaveRoom(). Make the whole UI visible/invisible with ofmeet.visible(flag).Toggle audio/video mute with ofmeet.toggleVideo() and ofmeet.toggleAudio()