टास्क

इस गाइड में टास्क के बारे में जानकारी दी गई है. यह एक बेहतर सुविधा है, जिसका इस्तेमाल यह तय करने के लिए किया जाता है कि analytics.js की पुष्टि कैसे की जाती है, वह कैसे काम करता है, और यह मेज़रमेंट प्रोटोकॉल के अनुरोध कैसे भेजता है.

खास जानकारी

जब भी send कमांड को कॉल किया जाता है, तब analytics.js कई टास्क पूरे करता है. ऐसा करके, उपयोगकर्ता के ब्राउज़र से मेज़रमेंट प्रोटोकॉल अनुरोध की पुष्टि की जाती है, उसे बनाया जाता है, और Google Analytics को भेजा जाता है. यहां दी गई टेबल में, सभी टास्क के लागू होने के क्रम में उनके बारे में जानकारी दी गई है:

टास्क का नाम ब्यौरा
customTask डिफ़ॉल्ट रूप से, यह टास्क कुछ भी नहीं करता. पसंद के मुताबिक व्यवहार देने के लिए इसे बदलें.
previewTask अगर पेज को सिर्फ़ Safari के लिए 'सबसे लोकप्रिय साइटों' का थंबनेल जनरेट करने के लिए रेंडर किया जा रहा है, तो अनुरोध को रद्द कर देता है.
checkProtocolTask अगर पेज का प्रोटोकॉल http या https नहीं है, तो अनुरोध को रद्द कर दिया जाता है.
validationTask ज़रूरी फ़ील्ड मौजूद न होने या अमान्य होने पर अनुरोध रद्द कर दिया जाता है.
checkStorageTask अगर ट्रैकर को कुकी इस्तेमाल करने के लिए कॉन्फ़िगर किया गया है, लेकिन उपयोगकर्ता के ब्राउज़र में कुकी बंद हैं, तो अनुरोध को रद्द कर दिया जाता है.
historyImportTask ga.js और urchin.js कुकी से जानकारी इंपोर्ट करता है, ताकि किसी साइट के Universal Analytics पर माइग्रेट होने पर, उसका इतिहास सुरक्षित रखा जा सके.
samplerTask इस ट्रैकर की sampleRate सेटिंग के आधार पर, वेबसाइट पर आने वाले लोगों का सैंपल लिया जाता है.
buildHitTask यह मेज़रमेंट प्रोटोकॉल के अनुरोध की स्ट्रिंग बनाता है और उसे hitPayload फ़ील्ड में सेव करता है.
sendHitTask यह hitPayload फ़ील्ड में सेव किए गए मेज़रमेंट प्रोटोकॉल के अनुरोध को Google Analytics के सर्वर पर भेजता है.
timingTask इस ट्रैकर के लिए, siteSpeedSampleRate की सेटिंग के आधार पर, साइट की स्पीड टाइमिंग का हिट अपने-आप जनरेट होता है.
displayFeaturesTask यह एक अतिरिक्त हिट भेजता है. ऐसा तब होता है, जब डिसप्ले सुविधाएं चालू हों और विज्ञापन सुविधाओं की कुकी (_ga) की ओर से सेट की गई टाइम आउट अवधि के अंदर पिछला हिट न भेजा गया हो.

इनमें से हर टास्क को JavaScript फ़ंक्शन के तौर पर लागू किया जाता है, जिसमें इनपुट के तौर पर कोई एक मॉडल पैरामीटर होता है. यह मॉडल एक आसान ऑब्जेक्ट है, जो Analytics.js फ़ील्ड रेफ़रंस में दिए गए किसी भी फ़ील्ड का ऐक्सेस देता है.

स्टैंडर्ड ट्रैकर get और set तरीकों का इस्तेमाल करके, टास्क को ऐक्सेस या बदला जा सकता है. इन तरीकों का इस्तेमाल करके, टास्क को अपने कस्टम फ़ंक्शन से बदला जा सकता है. इसके अलावा, मौजूदा फ़ंक्शन को बेहतर बनाया जा सकता है. इसके लिए, अपने कस्टम फ़ंक्शन को किसी मौजूदा टास्क से पहले या बाद में लागू करने के लिए चेन बनाएं.

लागू करने का तरीका

इस सेक्शन में बताया गया है कि मौजूदा टास्क में नए फ़ंक्शन कैसे जोड़े जा सकते हैं, टास्क में पहले से मौजूद फ़ंक्शन को अपने कस्टम कोड से कैसे बदला जा सकता है या टास्क फ़ंक्शन को पूरी तरह से कैसे बंद किया जा सकता है.

किसी टास्क को बदलना

किसी टास्क को बदलने के लिए, उसकी वैल्यू को ऐसे फ़ंक्शन पर set किया जा सकता है जो कुछ अलग करता है. Analytics.js लागू करने की प्रक्रिया की जांच करते समय स्टब फ़ंक्शन, टास्क को ओवरराइड करने की आम वजह है.

नीचे दिया गया कोड, sendHitTask को ऐसे फ़ंक्शन से बदल देता है जो हिट पेलोड को कंसोल में लॉग करता है:

ga('create', 'UA-XXXXX-Y', 'auto');
ga('set', 'sendHitTask', function(model) {
  console.log(model.get('hitPayload'));
});

किसी टास्क में जोड़ा जा रहा है

नई सुविधा जोड़ने के लिए, कस्टम टास्क फ़ंक्शन को चेन किया जा सकता है, ताकि मौजूदा टास्क से पहले या बाद में उसे लागू किया जा सके. नीचे दिए गए उदाहरण में, sendHitTask को कस्टम टास्क फ़ंक्शन से बदल दिया गया है. यह फ़ंक्शन सबसे पहले मूल sendHitTask फ़ंक्शन को कॉल करता है, ताकि सामान्य अनुरोध बीकन को google-analytics.com/collection पर भेजा जा सके. इसके बाद, मेज़रमेंट प्रोटोकॉल के अनुरोध की कॉपी को स्थानीय सर्वर पर भेजने के लिए कस्टम कोड एक्ज़ीक्यूट करता है.

ga('create', 'UA-XXXXX-Y', 'auto');

ga(function(tracker) {

  // Grab a reference to the default sendHitTask function.
  var originalSendHitTask = tracker.get('sendHitTask');

  // Modifies sendHitTask to send a copy of the request to a local server after
  // sending the normal request to www.google-analytics.com/collect.
  tracker.set('sendHitTask', function(model) {
    originalSendHitTask(model);
    var xhr = new XMLHttpRequest();
    xhr.open('POST', '/localhits', true);
    xhr.send(model.get('hitPayload'));
  });
});

ga('send', 'pageview');

टास्क की प्रोसेसिंग रद्द की जा रही है

कोई अपवाद अपलोड करके, बाद के टास्क की प्रोसेसिंग को रद्द किया जा सकता है. अगर अपवाद को थ्रो करने वाला टास्क sendHitTask से पहले शुरू होता है, तो Google Analytics के सर्वर पर मेज़रमेंट प्रोटोकॉल का अनुरोध नहीं भेजा जा सकता. नीचे दिए गए उदाहरण में, उपयोगकर्ता के ब्राउज़र में 'टेस्टिंग' नाम की कोई कुकी मौजूद होने पर, हम अनुरोध को रद्द कर देते हैं और उसकी वैल्यू 'सही' होती है.

ga('create', 'UA-XXXXX-Y', 'auto');

ga(function(tracker) {
  var originalBuildHitTask = tracker.get('buildHitTask');
  tracker.set('buildHitTask', function(model) {
    if (document.cookie.match(/testing=true/)) {
      throw 'Aborted tracking for test user.';
    }
    originalBuildHitTask(model);
  });
});

ga('send', 'pageview');

टास्क को बंद करना

किसी भी पहले से मौजूद टास्क फ़ंक्शन को बंद करने के लिए, इसे शून्य से बदलें.

ga('create', 'UA-XXXXX-Y', 'auto');
ga('set', 'checkProtocolTask', null); // Disables file protocol checking.
ga('send', 'pageview');