feat(analytics): Add analytics permanent properties and use new paramenters format

This commit is contained in:
hristoterezov 2016-10-06 13:21:54 -05:00
parent 3f0aa500f7
commit 6e4a710df6
4 changed files with 47 additions and 16 deletions

View File

@ -16,17 +16,15 @@
/* eslint-enable */
}
Analytics.prototype.sendEvent = function (action, data, label, browserName) {
Analytics.prototype.sendEvent = function (action, data) {
// empty label if missing value for it and add the value,
// the value should be integer or null
var value = Math.round(parseFloat(data));
var value = data.value;
value = value? Math.round(parseFloat(value)) : null;
var label = data.label || "";
ga('send', 'event', 'jit.si',
action + '.' + browserName, label ? label : "", value ? value : null);
};
Analytics.prototype.sendFeedback = function (data, label, browserName) {
this.sendEvent('feedback.rating', data.overall, label, browserName);
action + '.' + data.browserName, label, value);
};
ctx.Analytics = Analytics;

5
app.js
View File

@ -110,11 +110,6 @@ function init() {
var isUIReady = APP.UI.start();
if (isUIReady) {
APP.conference.init({roomName: buildRoomName()}).then(function () {
let server = APP.tokenData.server;
if(server) {
APP.conference.logEvent("server." + server, 1);
}
APP.UI.initConference();
APP.UI.addListener(UIEvents.LANG_CHANGED, function (language) {

View File

@ -485,6 +485,39 @@ class ConferenceConnector {
}
}
/**
* Sends statistics from APP.tokenData
*/
function sendTokenDataStats() {
let {server, group} = APP.tokenData;
if(server) {
APP.conference.logEvent("server." + server, 1);
}
if(group) {
APP.conference.logEvent("group", group);
}
}
/**
* Set permanent ptoperties to analytics.
* NOTE: Has to be used after JitsiMeetJS.init. otherwise analytics will be
* null.
*/
function setAnalyticsPermanentProperties() {
let permanentProperties = {
userAgent: navigator.userAgent,
roomName: APP.conference.roomName
};
let {server, group} = APP.tokenData;
if(server) {
permanentProperties.server = server;
}
if(group) {
permanentProperties.group = group;
}
JitsiMeetJS.analytics.addPermanentProperties(permanentProperties);
}
export default {
isModerator: false,
audioMuted: false,
@ -532,8 +565,11 @@ export default {
}
return JitsiMeetJS.init(config)
.then(() => createInitialLocalTracksAndConnect(options.roomName))
.then(([tracks, con]) => {
.then(() => {
setAnalyticsPermanentProperties();
sendTokenDataStats();
return createInitialLocalTracksAndConnect(options.roomName);
}).then(([tracks, con]) => {
console.log('initialized with %s local tracks', tracks.length);
APP.connection = connection = con;
this._createRoom(tracks);
@ -1452,7 +1488,8 @@ export default {
// Longer delays will be caused by something else and will just
// poison the data.
if (delay < 2000) {
JitsiMeetJS.analytics.sendEvent('stream.switch.delay', delay);
JitsiMeetJS.analytics.sendEvent('stream.switch.delay',
{value: delay});
}
});
@ -1764,7 +1801,7 @@ export default {
*/
logEvent(name, value) {
if(JitsiMeetJS.analytics) {
JitsiMeetJS.analytics.sendEvent(name, value);
JitsiMeetJS.analytics.sendEvent(name, {value});
}
if(room) {
room.sendApplicationLog(JSON.stringify({name, value}));

View File

@ -99,6 +99,7 @@ class TokenData{
if(!this.payload.context)
return;
this.server = this.payload.context.server;
this.group = this.payload.context.group;
let callerData = this.payload.context.user;
let calleeData = this.payload.context.callee;
if(callerData)