这是一篇关于优化方案Javascript功能特性的应用场景的文章。该文章也包含了如何使用云眼A/B测试Web API的内容。
需求的产生
如今,在网页中嵌入第三方客服软件已经是非常常见的事情了。而这些网页往往都会有一个明确的目标,吸引尽可能多的访客打开聊天窗口进行咨询,从而获得更多的业务量。为了提高咨询率,很多企业对这些网页进行了AB测试,通过局部改动获得了可观的增长。在进行AB测试的过程中,他们逐渐产生了这样的需求:希望能够在客服软件的后台知道这些进行咨询的访客是来自于哪些试验和版本?
在获得访客参与的试验以及版本后,我们能够获得两个好处:
第一,获得更加精确的AB测试结果。在很多情况下,AB测试工具在采集转化指标的时候,只能够获取当前页面发生的事件。即便我们观察到页面上的点击率提高了,却并不能说明真实的咨询量会提高,因为这些点击可能都是无效的,访客点击后直接关闭了,并没有进行真正的咨询。为了获得精确的咨询率,可以直接在客服软件后台根据访客参与的版本进行统计。
第二,如果我们能够知晓所有对话的试验版本是什么,就能够分析对应版本的对话的具体情况。这些分析结果能够帮助我们做出进一步的假设,为下一次AB测试提供支持。通常情况下,像这样的在大量真实数据支撑下做出的假设都是非常有效的。
解决方案
为了解决这样的需求,可以利用云眼AB测试工具中的优化方案javascript。首先,云眼提供了一些API接口。通过这些API接口我们能够获得所有关于AB测试的信息,例如该页面激活的试验有哪些、激活的版本是哪一个等等。通过下方的代码,找到试验和对应的版本,生成一个字符串用来传递给客服程序。优化方案javascript中可以直接使用jQuery库,无论原网页是否引入了该库。
var exp_variations = $.map(eyeofcloud.activeExperiments,function(expid){ return expid+'_'+eyeofcloud.variationIdsMap[expid][0]; }).join('_');
通常情况下,前端都会在点击事件发生时调用一个函数来打开客服窗口,并且这个函数会接受一些参数来表明来源。
openChatWindow(‘referrer’);
为了向客服程序传递参数,我们可以将原有的函数包装成一个新的函数,这个新函数会调用旧函数并填上参数。
function newOpenChatWindow() { var exp_variations = $.map(eyeofcloud.activeExperiments,function(expid){ return expid+'_'+eyeofcloud.variationIdsMap[expid][0]; }).join('_'); openChatWindow(exp_variations); }
如果原先的函数绑定方式是借助html的onclick属性,则只需要将对应方法名所指向的函数替换成新的函数即可。为了确保替换时,原有函数已经定义,可以周期性检查。
function replaceOpenChatWindow() { var oldOpenChatWindow = window.openChatWindow; window.openChatWindow = function () { var exp_variations = $.map(eyeofcloud.activeExperiments,function(expid){ return expid+'_'+eyeofcloud.variationIdsMap[expid][0]; }).join('_'); oldOpenChatWindow(exp_variations); }; } var interval = setInterval(function(){ if (window.openChatWindow) { replaceOpenChatWindow(); clearInterval(interval); } },200);
如果原先的函数绑定使用的是API方法,则可以先解绑旧函数,再绑定新函数。具体代码根据所使用的API方法或者库来决定。
如果想了解云眼A/B测试Web API使用,请继续阅读云眼JavaScript API 参考。