Developers may place a "Call" button somewhere in their application. This can be done very easily by re-using JavaScript utilities written in the eXo's Weemo extension project.
The project source is here. The JS utilities are written in weemo-extension-webapp/src/main/webapp/js.
For now the utilities support:
Enabling your users to call one-to-one, create or join a conference call from your application.
If you want the add-on project to support more, raise your idea in eXo Community.
In notif.js
, the class WeemoExtension
provides the following methods:
setCallType(callType)
where callType can be "internal" (for one-to-one),
"host" (to start a conference), "attendee" (to join a conference).
setUidToCall(uidToCall)
where uidToCall is the username that is used to get authenticated by Weemo.
setDisplaynameToCall(displaynameToCall)
where displaynameToCall is used to set a label for the call.
After setting those parameters, create the call as below:
weemoExtension.rtcc.createCall(weemoExtension.uidToCall, weemoExtension.callType, weemoExtension.displaynameToCall);
Here is an example of JavaScript to start calls of three types:
/** * @constructor */ function OtherExtension() { } // GLOBAL VARIABLES var otherExtension = new OtherExtension(); (function ($) { $(document).ready(function () { setInterval(function() { if ((typeof weemoExtension !== 'undefined') && weemoExtension.isConnected) { $(".btn-weemo-call").removeAttr("disabled"); $(".btn-weemo-host").removeAttr("disabled"); $(".btn-weemo-join").removeAttr("disabled"); } else { $(".btn-weemo-call").attr("disabled", "disabled"); $(".btn-weemo-host").attr("disabled", "disabled"); $(".btn-weemo-join").attr("disabled", "disabled"); } }, 3000); $(".btn-weemo-call").click(function () { if (typeof weemoExtension !== 'undefined') { var targetUser = $("#callee").val(); weemoExtension.setUidToCall("weemo"+targetUser); // userid which authenticated by weemo weemoExtension.setDisplaynameToCall(targetUser); // Full name of callee. Here we use the same userid for simply weemoExtension.setCallType("internal"); weemoExtension.setCallOwner(true); weemoExtension.setCallActive(false); weemoExtension.rtcc.createCall(weemoExtension.uidToCall, weemoExtension.callType, weemoExtension.displaynameToCall); } }); $(".btn-weemo-host").click(function () { if (typeof weemoExtension !== 'undefined') { var hostid = $("#teamid").val(); weemoExtension.setUidToCall(hostid); weemoExtension.setDisplaynameToCall(hostid); weemoExtension.setCallType("host"); weemoExtension.setCallOwner(true); weemoExtension.setCallActive(false); weemoExtension.rtcc.createCall(weemoExtension.uidToCall, weemoExtension.callType, weemoExtension.displaynameToCall); } }); $(".btn-weemo-join").click(function () { if (typeof weemoExtension !== 'undefined') { var hostid = $("#teamid").val(); weemoExtension.setUidToCall(hostid); weemoExtension.setDisplaynameToCall(hostid); weemoExtension.setCallType("attendee"); weemoExtension.setCallOwner(false); weemoExtension.setCallActive(false); weemoExtension.rtcc.createCall(weemoExtension.uidToCall, weemoExtension.callType, weemoExtension.displaynameToCall); } }); }); })(jquery);
See a Juzu portlet example that places three buttons for three types here.