সার্ভার-সাইড ট্যাগিং API

এই ডকুমেন্টে সার্ভার-সাইড ট্যাগের জন্য API-এর রূপরেখা দেওয়া হয়েছে।


addEventCallback

একটি কলব্যাক ফাংশন রেজিস্টার করে যা কোনও ইভেন্টের শেষে চালু করা হবে। ইভেন্টের জন্য সব ট্যাগ এক্সিকিউট করা হয়ে গেলে, কলব্যাক ইনভোক করা হবে। কলব্যাকে দুটি ভ্যালু পাস করা হয়: ফাংশনটি কল করা কন্টেনারের আইডি এবং ইভেন্ট সম্পর্কে তথ্য সহ একটি অবজেক্ট।

কোনও ট্যাগে এই API ব্যবহার করা হলে, এটি বর্তমান ইভেন্টের সাথে যুক্ত হয়। কোনও ক্লায়েন্টে এই API ব্যবহার করা হলে, runContainer API-এর bindToEvent ফাংশন ব্যবহার করে এটিকে কোনও নির্দিষ্ট ইভেন্টের সাথে বাউন্ড করতে হবে। আরও বিবরণের জন্য উদাহরণ দেখুন।

সিনট্যাক্স

const addEventCallback = require('addEventCallback');

addEventCallback((containerId, eventData) => {
  // Take some action based on the event data.
});

প্যারামিটার

প্যারামিটার ধরন বিবরণ
callback ফাংশন ইভেন্টের শেষে যে ফাংশনটি চালু করতে হবে।

eventData অবজেক্টে নিম্নলিখিত ডেটা থাকে:

'কী'-এর নাম ধরন বিবরণ
tags Array ট্যাগ ডেটা অবজেক্টের একটি অ্যারে। ইভেন্ট চলাকালীন ফায়ার করা প্রতিটি ট্যাগের এই অ্যারেতে একটি এন্ট্রি থাকবে। ট্যাগ ডেটা অবজেক্টে ট্যাগের আইডি (id), এটির এক্সিকিউশন স্ট্যাটাস (status) এবং এটির এক্সিকিউশন টাইম (executionTime) থাকে। ট্যাগ ডেটাতে ট্যাগে কনফিগার করা অতিরিক্ত ট্যাগ মেটাডেটাও অন্তর্ভুক্ত থাকবে।

উদাহরণ

ক্লায়েন্টে:

const addEventCallback = require('addEventCallback');
const claimRequest = require('claimRequest');
const extractEventsFromMpv1 = require('extractEventsFromMpv1');
const logToConsole = require('logToConsole');
const returnResponse = require('returnResponse');
const runContainer = require('runContainer');

claimRequest();

const events = extractEventsFromMpv1();
let eventsCompleted = 0;
events.forEach((evt, i) => {
  runContainer(evt, /* onComplete= */ (bindToEvent) => {
    bindToEvent(addEventCallback)((containerId, eventData) => {
      logToConsole('Event Number: ' + i);
      eventData.tags.forEach((tag) => {
        logToConsole('Tag ID: ' + tag.id);
        logToConsole('Tag Status: ' + tag.status);
        logToConsole('Tag Execution Time: ' + tag.executionTime);
      });
    });
    if (events.length === ++eventsCompleted) {
      returnResponse();
    }
  });
});

ট্যাগে:

const addEventCallback = require('addEventCallback');

addEventCallback((containerId, eventData) => {
  // This will be called at the end of the current event.
});

সংশ্লিষ্ট অনুমতি

read_event_metadata


callLater

অ্যাসিঙ্ক্রোনাসভাবে ঘটার জন্য কোনও ফাংশনে কল শিডিউল করে। বর্তমান কোড রিটার্ন করার পরে ফাংশনটি কল করা হবে। এটি setTimeout(<function>, 0)-এর সমতুল্য।

উদাহরণ

const callLater = require('callLater');
const logToConsole = require('logToConsole');

callLater(() => {
  logToConsole('Logged asynchronously');
});

সিনট্যাক্স

callLater(function)

প্যারামিটার

প্যারামিটার ধরন বিবরণ
function ফাংশন কল করার ফাংশন।

সংশ্লিষ্ট অনুমতি

কোনওটিই নয়।


claimRequest

অনুরোধ দাবি করতে ক্লায়েন্টে এই API ব্যবহার করুন। কোনও অনুরোধ দাবি করা হলে, কন্টেনার অতিরিক্ত ক্লায়েন্ট চালায় না।

ট্যাগ বা ভেরিয়েবলে কল করা হলে এই API একটি ব্যতিক্রম দেখায়। ক্লায়েন্ট রিটার্ন করার পরে কল করা হলে এই API ব্যতিক্রম দেখায় (যেমন, callLater বা runContainer onComplete ফাংশনের মতো অ্যাসিঙ্ক কলব্যাকে কল করা হলে)।

runContainer API কল করার আগে ক্লায়েন্টকে এই API ব্যবহার করে অনুরোধ দাবি করতে হবে।

উদাহরণ

const claimRequest = require('claimRequest');

claimRequest();

সিনট্যাক্স

claimRequest();

সংশ্লিষ্ট অনুমতি

কোনওটিই নয়।


computeEffectiveTldPlusOne

প্রদত্ত ডোমেন বা URL-এর কার্যকর টপ-লেভেল ডোমেন + ১ (eTLD+১) দেখায়। পাবলিক সাফিক্স তালিকার নিয়ম অনুযায়ী ডোমেন মূল্যায়ন করে eTLD+1 গণনা করা হয়। eTLD+1 হল সাধারণত সর্বোচ্চ-লেভেল ডোমেন যেখানে আপনি কুকি সেট করতে পারবেন।

আর্গুমেন্টটি ফাঁকা বা অনির্দিষ্ট থাকলে, আর্গুমেন্টের মান অপরিবর্তিত অবস্থায় ফেরত দেওয়া হয়। অন্যথায় আর্গুমেন্টটি স্ট্রিংয়ে পরিবর্তন করা হয়। আর্গুমেন্টটি যদি সঠিক ডোমেন বা URL না হয়, তাহলে একটি ফাঁকা স্ট্রিং দেখানো হয়। সার্ভার যদি পাবলিক সাফিক্স তালিকা আনতে না পারে, তাহলে আর্গুমেন্ট ভ্যালু অপরিবর্তিত অবস্থায় ফেরত পাঠানো হয়।

উদাহরণ

const computeEffectiveTldPlusOne = require('computeEffectiveTldPlusOne');

// Returns 'example.co.uk'
computeEffectiveTldPlusOne('analytics.example.co.uk');

// Returns 'example.co.uk'
computeEffectiveTldPlusOne('https://analytics.example.co.uk/path');

সিনট্যাক্স

computeEffectiveTldPlusOne(domainOrUrl);

প্যারামিটার

প্যারামিটার ধরন বিবরণ
domainOrUrl স্ট্রিং একটি ডোমেন বা URL যার উপর eTLD+1 গণনা করা হবে।

সংশ্লিষ্ট অনুমতি

কোনওটিই নয়।


createRegex

নতুন regex ইনস্ট্যান্স তৈরি করে এবং অবজেক্টে র‍্যাপ করে এটি ফিরিয়ে দেয়। আপনি সরাসরি রেজেক্স অ্যাক্সেস করতে পারবেন না। তবে, আপনি এটি testRegex API, String.replace(), String.match() এবং String.search()-এ পাস করতে পারবেন।

রেজেক্স ভুল হলে বা সার্ভারে Re2 উপলভ্য না থাকলে null রিটার্ন করে।

এই API একটি Re2 ইমপ্লিমেন্টেশন ব্যবহার করে। সার্ভার Docker ইমেজ অবশ্যই 2.0.0 বা তার পরবর্তী যেকোনও ভার্সন হতে হবে।

উদাহরণ

const createRegex = require('createRegex');

const domainRegex = createRegex('\\w+\\.com', 'i');

// Returns '/foobar'
'example.com/foobar'.replace(domainRegex, '');

সিনট্যাক্স

createRegex(pattern, flags);

প্যারামিটার

প্যারামিটার ধরন বিবরণ
pattern স্ট্রিং রেগুলার এক্সপ্রেশনের টেক্সট।
flags স্ট্রিং একটি ঐচ্ছিক স্ট্রিং যাতে তৈরি করা হচ্ছে এমন রেজেক্সের জন্য ফ্ল্যাগ থাকে। `g` (গ্লোবাল) এবং `i` (কেস উপেক্ষা করুন) কাজ করে। অন্যান্য সব অক্ষর উপেক্ষা করা হয়।

সংশ্লিষ্ট অনুমতি

কোনওটিই নয়।

ছবির বেসিক ভার্সন

2.0.0


decodeUri

প্রদত্ত URI-তে যেকোনও এনকোড করা অক্ষর ডিকোড করে। ডিকোড করা URI-কে দেখায় এমন একটি স্ট্রিং ফেরত দেয়। ভুল ইনপুট দিলে undefined দেখায়।

উদাহরণ

const decodeUri = require('decodeUri');

const decodedUrl = decodeUri(data.encodedUrl);
if (decodedUrl) {
  // ...
}

সিনট্যাক্স

decodeUri(encoded_uri);

প্যারামিটার

প্যারামিটার ধরন বিবরণ
encoded_uri স্ট্রিং একটি URI যা encodeUri() বা অন্য উপায়ে এনকোড করা হয়েছে।

সংশ্লিষ্ট অনুমতি

কোনওটিই নয়।


decodeUriComponent

প্রদত্ত URI কম্পোনেন্টে এনকোড করা যেকোনও অক্ষর ডিকোড করে। ডিকোড করা URI কম্পোনেন্টকে দেখায় এমন একটি স্ট্রিং রিটার্ন করে। ভুল ইনপুট দেওয়া হলে undefined রিটার্ন করে।

উদাহরণ

const decodeUriComponent = require('decodeUriComponent');

const decodedQuery = decodeUriComponent(data.query);
if (decodedQuery) {
  // ...
}

সিনট্যাক্স

decodeUriComponent(encoded_uri_component);

প্যারামিটার

প্যারামিটার ধরন বিবরণ
encoded_uri_component স্ট্রিং URI কম্পোনেন্ট যা encodeUriComponent() বা অন্য কোনও উপায়ে এনকোড করা হয়েছে।

সংশ্লিষ্ট অনুমতি

কোনওটিই নয়।


encodeUri

বিশেষ অক্ষর বাদ দিয়ে একটি এনকোড করা ইউনিফর্ম রিসোর্স আইডেন্টিফায়ার (URI) ফেরত দেয়। URI হিসেবে এনকোড করা প্রদত্ত স্ট্রিং দেখায় এমন একটি স্ট্রিং ফেরত দেয়।

উদাহরণ

const encodeUri = require('encodeUri');
const sendHttpGet = require('sendHttpGet');

sendHttpGet('https://www.example.com/' + encodeUri(pathInput));

সিনট্যাক্স

encodeUri(uri);

প্যারামিটার

প্যারামিটার ধরন বিবরণ
uri স্ট্রিং একটি সম্পূর্ণ URI।

সংশ্লিষ্ট অনুমতি

কোনওটিই নয়।


encodeUriComponent

বিশেষ অক্ষর বাদ দিয়ে একটি এনকোড করা ইউনিফর্ম রিসোর্স আইডেন্টিফায়ার (URI) ফেরত দেয়। একটি স্ট্রিং দেখায় যা URI হিসেবে এনকোড করা প্রদত্ত স্ট্রিং উপস্থাপন করে।

উদাহরণ

const encodeUriComponent = require('encodeUriComponent');
const sendHttpGet = require('sendHttpGet');

sendHttpGet('https://www.example.com/?' + encodeUriComponent(queryInput));

সিনট্যাক্স

encodeUriComponent(str);

প্যারামিটার

প্যারামিটার ধরন বিবরণ
str স্ট্রিং URI-এর একটি কম্পোনেন্ট।

সংশ্লিষ্ট অনুমতি

কোনওটিই নয়।


extractEventsFromMpv1

ইনকামিং Measurement Protocol V1 অনুরোধকে ইউনিফায়েড স্কিমা ফর্ম্যাটে ইভেন্টের তালিকায় অনুবাদ করে। এক্সট্র্যাক্ট করা ইভেন্টের তালিকা দেখায়। অনুরোধটি সঠিক ফর্ম্যাটে না থাকলে একটি ত্রুটি দেখায়।

উদাহরণ

const extractEventsFromMpv1 = require('extractEventsFromMpv1');
const isRequestMpv1 = require('isRequestMpv1');

if (isRequestMpv1()) {
  const events = extractEventsFromMpv1();
  for (let i = 0; i < events.length; ++i) {
    const event = events[i];
    // Process event.
  }
}

সিনট্যাক্স

extractEventsFromMpv1();

সংশ্লিষ্ট অনুমতি

read_request অনুমতি প্রয়োজন। কমপক্ষে নিম্নলিখিত অ্যাক্সেসের অনুমতি দিতে কনফিগার করতে হবে:

  • body
  • query parameters

extractEventsFromMpv2

ইনকামিং Measurement Protocol V2 অনুরোধকে ইউনিফায়েড স্কিমা ফর্ম্যাটে ইভেন্টের তালিকায় অনুবাদ করে। এক্সট্র্যাক্ট করা ইভেন্টের তালিকা দেখায়। অনুরোধটি সঠিক ফর্ম্যাটে না থাকলে একটি ত্রুটি দেখায়।

উদাহরণ

const extractEventsFromMpv2 = require('extractEventsFromMpv2');
const isRequestMpv2 = require('isRequestMpv2');

if (isRequestMpv2()) {
  const events = extractEventsFromMpv2();
  for (let i = 0; i < events.length; ++i) {
    const event = events[i];
    // Process event.
  }
}

সিনট্যাক্স

extractEventsFromMpv2();

সংশ্লিষ্ট অনুমতি

read_request অনুমতি প্রয়োজন। কমপক্ষে নিম্নলিখিত অ্যাক্সেসের অনুমতি দিতে কনফিগার করতে হবে:

  • body
  • query parameters

fromBase64

base64-এনকোড করা স্ট্রিং ডিকোড করে। ইনপুট ভুল হলে undefined দেখায়।

সিনট্যাক্স

fromBase64(base64EncodedString);

প্যারামিটার

প্যারামিটার ধরন বিবরণ
base64EncodedString স্ট্রিং Base64 এনকোড করা স্ট্রিং।

উদাহরণ

const fromBase64 = require('fromBase64');

const greeting = fromBase64('aGVsbG8=');
if (greeting === 'hello') {
  // ...
}

সংশ্লিষ্ট অনুমতি

কোনওটিই নয়।


generateRandom

প্রদত্ত রেঞ্জের মধ্যে একটি র‍্যান্ডম সংখ্যা (পূর্ণসংখ্যা) দেখায়।

উদাহরণ

const generateRandom = require('generateRandom');

const randomValue = generateRandom(0, 10000000);

সিনট্যাক্স

generateRandom(min, max);

প্যারামিটার

প্যারামিটার ধরন বিবরণ
min number ফেরত দেওয়া পূর্ণসংখ্যার ন্যূনতম সম্ভাব্য মান (অন্তর্ভুক্ত)।
max number ফেরত দেওয়া পূর্ণসংখ্যার সর্বাধিক সম্ভাব্য মান (অন্তর্ভুক্ত)।

সংশ্লিষ্ট অনুমতি

কোনওটিই নয়।


getAllEventData

ইভেন্ট ডেটার একটি কপি ফিরিয়ে দেয়।

সিনট্যাক্স

getAllEventData();

সংশ্লিষ্ট অনুমতি

read_event_data


getAnonymizedIpAddress

যেখান থেকে অনুরোধ করা হয়েছে সেই IP অ্যাড্রেসের পরিচয় গোপন করা স্ট্রিং দেখায়।

IPv4 অ্যাড্রেসের ক্ষেত্রে, শেষ অক্টেট 0-এ মাস্ক করা হয় (যেমন, 198.51.100.42 হয়ে যায় 198.51.100.0)। IPv6 অ্যাড্রেসের ক্ষেত্রে, শেষ ৮০ বিট শূন্যে মাস্ক করা হয়, প্রথম ৪৮ বিট রেখে দেওয়া হয় (যেমন, 2001:db8:cafe:1234:5678:90ab:cdef:1234 হয়ে যায় 2001:db8:cafe::)।

IP অ্যাড্রেস ভুল হলে বা সমাধান করা না গেলে "::" রিটার্ন করে, তাই ফলাফল সবসময় ip_override হিসেবে ব্যবহার করার জন্য নিরাপদ।

উদাহরণ

const getAnonymizedIpAddress = require('getAnonymizedIpAddress');

const anonymizedIp = getAnonymizedIpAddress();

সিনট্যাক্স

getAnonymizedIpAddress();

সংশ্লিষ্ট অনুমতি

user_ip


getClientName

বর্তমান ক্লায়েন্টের নাম সহ একটি স্ট্রিং রিটার্ন করে।

সিনট্যাক্স

getClientName();

সংশ্লিষ্ট অনুমতি

read_container_data


getContainerVersion

বর্তমান কন্টেনার সম্পর্কে ডেটা সহ একটি অবজেক্ট দেখায়। ফেরত আসা অবজেক্টে নিম্নলিখিত ফিল্ডগুলি থাকবে:

{
  containerId: string,
  debugMode: boolean,
  environmentName: string,
  environmentMode: boolean,
  previewMode: boolean,
  version: string,
}

উদাহরণ

const getContainerVersion = require('getContainerVersion');

const containerVersion = getContainerVersion();
const containerId = containerVersion['containerId'];
const isDebug = containerVersion['debugMode'];

সিনট্যাক্স

getContainerVersion();

সংশ্লিষ্ট অনুমতি

read_container_data


getCookieValues

প্রদত্ত নাম সহ সব কুকির ভ্যালু সহ একটি অ্যারে রিটার্ন করে।

উদাহরণ

const getCookieValues = require('getCookieValues');

const lastVisit = getCookieValues('lastVisit')[0];
if (lastVisit) {
  // ...
}

সিনট্যাক্স

getCookieValues(name[, noDecode]);

প্যারামিটার

প্যারামিটার ধরন বিবরণ
name স্ট্রিং কুকির নাম।
noDecode বুলিয়ান true হলে, কুকির ভ্যালু ফেরত দেওয়ার আগে ডিকোড করা হবে না। ডিফল্ট হিসেবে false সেট করা থাকে।

সংশ্লিষ্ট অনুমতি

get_cookies


getEventData

ইভেন্ট ডেটাতে প্রদত্ত পাথে থাকা ভ্যালুর একটি কপি দেখায়। কোনও ইভেন্ট ডেটা না থাকলে বা প্রদত্ত পাথে কোনও ভ্যালু না থাকলে undefined রিটার্ন করে।

উদাহরণ

const getEventData = require('getEventData');

const campaignId = getEventData('campaign.id');
const itemId = getEventData('items.0.id');
const referrer = getEventData('page_referrer');

প্যারামিটার

প্যারামিটার ধরন বিবরণ
keyPath যেকোনও কী-এর পাথ, যেখানে পাথের কম্পোনেন্টগুলি ডট দিয়ে আলাদা করা থাকে। পাথ কম্পোনেন্ট কোনও অবজেক্টের কী বা অ্যারের ইন্ডেক্স হতে পারে। keyPath স্ট্রিং না হলে, এটিকে স্ট্রিংয়ে পরিবর্তন করা হয়।

সিনট্যাক্স

getEventData(keyPath);

সংশ্লিষ্ট অনুমতি

read_event_data


getGoogleAuth

একটি অনুমোদন অবজেক্ট রিটার্ন করে যা sendHttpGet বা sendHttpRequest-এর সাথে ব্যবহার করা হলে, Google Cloud API-এর জন্য একটি অনুমোদন হেডার অন্তর্ভুক্ত করবে। এই API, সার্ভার এনভায়রনমেন্ট থেকে অটোমেটিক ক্রেডেনশিয়াল খুঁজে পেতে অ্যাপ্লিকেশন ডিফল্ট ক্রেডেনশিয়াল ব্যবহার করে।

উদাহরণ

const getGoogleAuth = require('getGoogleAuth');
const logToConsole = require('logToConsole');
const sendHttpGet = require('sendHttpGet');

const auth = getGoogleAuth({
  scopes: ['https://www.googleapis.com/auth/datastore']
});

sendHttpGet(
  'https://firestore.googleapis.com/v1/projects/my-project/databases/(default)/documents/collection/document',
  {authorization: auth}
).then((result) => {
  if (result.statusCode >= 200 && result.statusCode < 300) {
    logToConsole('Result: ' + result.body);
    data.gtmOnSuccess();
  } else {
    data.gtmOnFailure();
  }
});

সিনট্যাক্স

getGoogleAuth(scopes);

প্যারামিটার

প্যারামিটার ধরন বিবরণ
scopes Array অ্যাক্সেসের অনুরোধ করার জন্য OAuth 2.0 Google API স্কোপের একটি অ্যারে।

সংশ্লিষ্ট অনুমতি

use_google_credentials অনুমতি প্রয়োজন। অনুমতি অবশ্যই এক বা একাধিক অনুমোদিত স্কোপের সাথে কনফিগার করতে হবে।


getGoogleScript

Google স্ক্রিপ্টের পূর্বনির্ধারিত সেট থেকে একটি রিসোর্স ফিরিয়ে আনে এবং স্ক্রিপ্ট ও সংশ্লিষ্ট ক্যাশিং মেটাডেটা সহ একটি প্রমিস রিটার্ন করে।

প্রমিজটি দুটি কী সহ একটি অবজেক্টে সমাধান করবে: script এবং metadata. অনুরোধটি ব্যর্থ হলে, reason কী সহ প্রমিসটি বাতিল করা হবে।

metadata অবজেক্টে রিসোর্স রেসপন্স হেডারের উপর ভিত্তি করে নিম্নলিখিত ক্যাশিং মেটাডেটা থাকবে; প্রতিটি ফিল্ড শুধুমাত্র তখনই থাকবে যদি সংশ্লিষ্ট হেডার রিসোর্স রেসপন্সে উপস্থিত থাকে।

{
  'cache-control': string,
  'expires': string,
  'last-modified': string,
}

উদাহরণ

const getGoogleScript = require('getGoogleScript');

getGoogleScript('ANALYTICS').then((result) => {
  // Operate on result.script and result.metadata here.
});

সিনট্যাক্স

getGoogleScript(script[, options]);

প্যারামিটার

প্যারামিটার ধরন বিবরণ
script স্ট্রিং স্ক্রিপ্টের নাম। কাজ করে এমন স্ক্রিপ্ট হল 'ANALYTICS', 'GTAG' এবং 'GTM'।

'ANALYTICS' বিকল্পটি https://www.google-analytics.com/analytics.js থেকে Google Analytics স্ক্রিপ্ট নিয়ে আসে।

'GTAG' বিকল্পটি https://www.googletagmanager.com/gtag/js থেকে গ্লোবাল সাইট ট্যাগ (gtag.js) স্ক্রিপ্ট নিয়ে আসে।

'GTM' বিকল্পটি https://www.googletagmanager.com/gtm.js থেকে Google Tag Manager স্ক্রিপ্ট ফেচ করে।
options অবজেক্ট ঐচ্ছিক অনুরোধের বিকল্প। কাজ করে এমন বিকল্পের জন্য নিচে দেখুন।

বিকল্প

Option ধরন বিবরণ
id স্ট্রিং gtag পরিমাপ আইডি সহ 'GTAG'-এর ক্ষেত্রে প্রযোজ্য এবং ওয়েব কন্টেনার আইডি সহ 'GTM' (যেমন, GTM-XXXX)।
debug যেকোনও সত্য হলে, পরিমাপ স্ক্রিপ্টের ডিবাগ ভার্সনের জন্য অনুরোধ করে এবং ফেরত পাঠায়।
timeout number অনুরোধের টাইমআউট মিলিসেকেন্ডে; ধনাত্মক নয় এমন মান উপেক্ষা করা হয়। অনুরোধের টাইমআউট হয়ে গেলে, স্ক্রিপ্ট ভ্যালুর জন্য undefined এবং মেটাডেটা অবজেক্টের জন্য {} সহ কলব্যাক ইনভোক করা হবে।

শনাক্ত করা যায়নি এমন বিকল্প কী উপেক্ষা করা হয়েছে।

সংশ্লিষ্ট অনুমতি

send_http অনুমতি প্রয়োজন। কমপক্ষে নিম্নলিখিত অ্যাক্সেসের অনুমতি দেওয়ার জন্য অনুমতি কনফিগার করতে হবে:

  • Google Domains-কে অনুমতি দিন

getRemoteAddress

যেখান থেকে অনুরোধ করা হয়েছে সেই IP অ্যাড্রেসের স্ট্রিং উপস্থাপনা দেখায়, যেমন IPv4-এর জন্য 12.345.67.890 বা IPv6-এর জন্য 2001:0db8:85a3:0:0:8a2e:0370:7334, Forwarded এবং X-Forwarded-For-এর মতো অনুরোধের হেডার পড়ে। মনে রাখবেন: এই API, IP-র উৎস খুঁজে বের করার জন্য যথাসাধ্য চেষ্টা করে, তবে এটি গ্যারেন্টি দিতে পারে না যে ফলাফলটি সঠিক।

সিনট্যাক্স

getRemoteAddress();

সংশ্লিষ্ট অনুমতি

read_request অনুমতি প্রয়োজন। কমপক্ষে নিম্নলিখিত অ্যাক্সেসের অনুমতি দিতে কনফিগার করতে হবে:

  • হেডার Forwarded এবং X-Forwarded-For
  • রিমোট IP অ্যাড্রেস

getRequestBody

অনুরোধের বডি স্ট্রিং হিসেবে দেখায়, যদি থাকে, অথবা অন্যথায় undefined।

সিনট্যাক্স

getRequestBody();

সংশ্লিষ্ট অনুমতি

read_request


getRequestHeader

নামযুক্ত রিকোয়েস্ট হেডারের ভ্যালু স্ট্রিং হিসেবে দেখায়, যদি থাকে, অথবা undefined অন্যথায়। হেডার পুনরাবৃত্তি হলে, রিটার্ন করা মানগুলি ', '-এর সাথে একসাথে যোগ করা হয়।

উদাহরণ

const getRequestHeader = require('getRequestHeader');

const host = getRequestHeader('host');

সিনট্যাক্স

getRequestHeader(headerName);

প্যারামিটার

প্যারামিটার ধরন বিবরণ
headerName স্ট্রিং হেডারের নাম। এই ভ্যালুতে ছোট ও বড় হাতের অক্ষরের পার্থক্য করা হয় না।

সংশ্লিষ্ট অনুমতি

read_request


getRequestMethod

অনুরোধের পদ্ধতি, যেমন 'GET' বা 'POST', স্ট্রিং হিসেবে দেখায়।

উদাহরণ

const getRequestMethod = require('getRequestMethod');

if (getRequestMethod() === 'POST') {
  // Handle the POST request here.
}

সিনট্যাক্স

getRequestMethod();

সংশ্লিষ্ট অনুমতি

কোনওটিই নয়।


getRequestPath

কোয়েরি স্ট্রিং ছাড়াই অনুরোধের পাথ দেখায়। যেমন, URL যদি '/foo?id=123' হয়, তাহলে এটি '/foo' রিটার্ন করে। পাথ থেকে সার্ভার কন্টেনার URL প্রিফিক্স অটোমেটিক বাদ দেয়। যেমন, সার্ভার কন্টেনার URL যদি https://example.com/analytics হয় এবং অনুরোধের পাথ যদি '/analytics/foo' হয়, তাহলে এটি '/foo' রিটার্ন করে।

উদাহরণ

const getRequestPath = require('getRequestPath');

const requestPath = getRequestPath();
if (requestPath === '/') {
  // Handle a request for the root path.
}

সিনট্যাক্স

getRequestPath();

সংশ্লিষ্ট অনুমতি

read_request


getRequestQueryParameter

নামযুক্ত কোয়েরি স্ট্রিং প্যারামিটারের ডিকোড করা ভ্যালু স্ট্রিং হিসেবে দেখায়, অথবা প্যারামিটার না থাকলে undefined দেখায়। কোয়েরি স্ট্রিংয়ে প্যারামিটারটি রিপিট করা হলে, কোয়েরি স্ট্রিংয়ে দেখানো প্রথম ভ্যালুটি ফেরত দেওয়া হবে।

উদাহরণ

const getRequestQueryParameter = require('getRequestQueryParameter');

const query = getRequestQueryParameter('query');
if (query) {
  // Process query here.
}

সিনট্যাক্স

getRequestQueryParameter(name);

প্যারামিটার

প্যারামিটার ধরন বিবরণ
name স্ট্রিং কোয়েরি প্যারামিটারের নাম।

সংশ্লিষ্ট অনুমতি

read_request


getRequestQueryParameters

ইনকামিং HTTP অনুরোধের কোয়েরি প্যারামিটারকে এমন একটি অবজেক্ট হিসেবে দেখায় যা কোয়েরি প্যারামিটারের নামকে সংশ্লিষ্ট ভ্যালু বা ভ্যালুগুলির সাথে ম্যাপ করে। প্যারামিটারের নাম ও ভ্যালু ডিকোড করা হয়েছে।

উদাহরণ

const getRequestQueryParameters = require('getRequestQueryParameters');

const queryParameters = getRequestQueryParameters();
if (queryParameters['search']) {
  // Handle the search query here.
  const maxResults = queryParameters['max_results'];
}

সিনট্যাক্স

getRequestQueryParameters();

সংশ্লিষ্ট অনুমতি

read_request


getRequestQueryString

অনুরোধের কোয়েরি স্ট্রিং হিসেবে দেখায়, যেখানে প্রথমে কোনও প্রশ্নচিহ্ন থাকে না অথবা অনুরোধের URL-এ কোনও কোয়েরি স্ট্রিং না থাকলে খালি স্ট্রিং দেখায়।

উদাহরণ

const getRequestQueryString = require('getRequestQueryString');

const queryString = getRequestQueryString();
if (queryString !== '') {
  // Handle the query string.
}

সিনট্যাক্স

getRequestQueryString();

সংশ্লিষ্ট অনুমতি

read_request


getTimestamp

বন্ধ করা হয়েছে। getTimestampMillis ব্যবহার করুন।

Date.now()-এর মাধ্যমে ফেরত পাঠানো, Unix epoch থেকে মিলিসেকেন্ডে বর্তমান সময়কে দেখায় এমন একটি সংখ্যা ফেরত পাঠায়।

সিনট্যাক্স

getTimestamp();

সংশ্লিষ্ট অনুমতি

কোনওটিই নয়।


getTimestampMillis

Date.now()-এর মাধ্যমে ফেরত পাঠানো, Unix epoch থেকে মিলিসেকেন্ডে বর্তমান সময়কে দেখায় এমন একটি সংখ্যা ফেরত পাঠায়।

সিনট্যাক্স

getTimestampMillis();

সংশ্লিষ্ট অনুমতি

কোনওটিই নয়।


getType

প্রদত্ত মানের ধরন বর্ণনা করে এমন একটি স্ট্রিং প্রদান করে।

ইনপুটের ধরন রিটার্ন করা ভ্যালু
স্ট্রিং 'string'
number 'number'
বুলিয়ান 'boolean'
null 'null'
undefined 'undefined'
Array 'array'
অবজেক্ট 'object'
ফাংশন 'function'

উদাহরণ

const getType = require('getType');

const type = getType(value);
if (type === 'string') {
  // Handle string input.
} else if (type === 'number') {
  // Handle numeric input.
} else {
  logToConsole('Unsupported input type: ', type);
}

সিনট্যাক্স

getType(value);

প্যারামিটার

প্যারামিটার ধরন বিবরণ
value যেকোনও ইনপুট ভ্যালু।

সংশ্লিষ্ট অনুমতি

কোনওটিই নয়।


hmacSha256

SHA-256 সহ হ্যাশ-ভিত্তিক মেসেজ যাচাইকরণ কোড (HMAC) ব্যবহার করে একটি এনকোড করা স্বাক্ষর গণনা করে। ডিফল্ট হিসেবে base64url এনকোডিং সেট করা থাকে।

এই API ব্যবহার করতে, সার্ভারে SGTM_CREDENTIALS এনভায়রনমেন্ট ভেরিয়েবেলকে নিম্নলিখিত ফর্ম্যাটে UTF-8 এনকোড করা JSON কী ফাইলের পাথে সেট করুন:

{
  "keys": {
    "key1": "YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5",
    "key2": "OTg3NjU0MzIxMHp5eHd2dXRzcnFwb25tbGtqaWhnZmVkY2Jh",
    ...
  }
}

ভ্যালুগুলি হল base64-এনকোড করা HMAC কী। JSON টেক্সট বাইট অর্ডার মার্কার দিয়ে শুরু হলে চলবে না।

উদাহরণ

const hmacSha256 = require('hmacSha256');
const toBase64 = require('toBase64');

const header = toBase64('{"alg":"HS256","typ":"JWT"}', {urlEncoding: true});
const claim = toBase64('{"sub":"1234567890","iat":1698164946}', {urlEncoding: true});
const signature = hmacSha256(header + '.' + claim, 'key1');

const jwt = header + "." + claim + '.' + signature;

সিনট্যাক্স

hmacSha256(data, keyId, options)

প্যারামিটার

প্যারামিটার ধরন বিবরণ
data স্ট্রিং HMAC ভ্যালু গণনা করার ডেটা।
keyId স্ট্রিং JSON কী ফাইল থেকে একটি কী আইডি যা ব্যবহার করার জন্য কী উল্লেখ করে।
options অবজেক্ট ঐচ্ছিক API কনফিগারেশন। (নিচে বিকল্প দেখুন।)

বিকল্প

Option ধরন বিবরণ
outputEncoding স্ট্রিং রিটার্ন ভ্যালুর জন্য এনকোডিং ফর্ম্যাট নির্দিষ্ট করে। hex, base64 বা base64url ফর্ম্যাটে আপলোড করা যাবে। উল্লেখ করা না থাকলে base64url হল ডিফল্ট।

সংশ্লিষ্ট অনুমতি

use_custom_private_keys

ছবির বেসিক ভার্সন

1.0.0


isRequestMpv1

ইনকামিং অনুরোধটি Measurement Protocol V1 অনুরোধ হলে true রিটার্ন করে, অথবা অন্যথায় false রিটার্ন করে।

উদাহরণ

const isRequestMpv1 = require('isRequestMpv1');

if (isRequestMpv1()) {
  // Handle Measurement Protocol V1 request.
  const events = extractEventsFromMpv1();
}

সিনট্যাক্স

isRequestMpv1();

সংশ্লিষ্ট অনুমতি

কোনওটিই নয়।


isRequestMpv2

ইনকামিং অনুরোধটি Measurement Protocol V2 অনুরোধ হলে true রিটার্ন করে, অথবা অন্যথায় false রিটার্ন করে।

উদাহরণ

const isRequestMpv2 = require('isRequestMpv2');

if (isRequestMpv2()) {
  // Handle Measurement Protocol V2 request.
  const events = extractEventsFromMpv2();
}

সিনট্যাক্স

isRequestMpv2();

সংশ্লিষ্ট অনুমতি

কোনওটিই নয়।


logToConsole

কনসোলে এর আর্গুমেন্ট লগ করে।

Google Cloud Console-এর Logs Explorer-এ এইসব লগ দেখা যায়। এই API-এর মাধ্যমে তৈরি করা লগ এন্ট্রি দেখতে Logs Explorer থেকে logName =~ "stdout" কোয়েরি রান করুন।

উদাহরণ

const logToConsole = require('logToConsole');

const that = 123;
const those = { ... };
logToConsole('that is: ', that, ' and those is: ', those);

সিনট্যাক্স

logToConsole(argument1[, argument2, ...]);

প্যারামিটার

API এক বা একাধিক আর্গুমেন্ট নেয়, যার প্রতিটি প্রয়োজন হলে স্ট্রিংয়ে কনভার্ট করা হয় এবং কনসোলে লগ করা হয়।

সংশ্লিষ্ট অনুমতি

logging


makeInteger

প্রদত্ত মানকে সংখ্যা (পূর্ণসংখ্যা)-তে পরিবর্তন করে।

সিনট্যাক্স

makeInteger(value);

প্যারামিটার

প্যারামিটার ধরন বিবরণ
value যেকোনও ধরন যে মান কনভার্ট করতে হবে।

সংশ্লিষ্ট অনুমতি

কোনওটিই নয়।


makeNumber

প্রদত্ত মানকে সংখ্যাতে কনভার্ট করে।

সিনট্যাক্স

makeNumber(value);

প্যারামিটার

প্যারামিটার ধরন বিবরণ
value যেকোনও ধরন যে মান কনভার্ট করতে হবে।

সংশ্লিষ্ট অনুমতি

কোনওটিই নয়।


makeString

প্রদত্ত মানকে স্ট্রিং হিসেবে দেখায়।

সিনট্যাক্স

makeString(value);

প্যারামিটার

প্যারামিটার ধরন বিবরণ
value যেকোনও ধরন যে মান কনভার্ট করতে হবে।

সংশ্লিষ্ট অনুমতি

কোনওটিই নয়।


makeTableMap

দুটি কলাম সহ একটি সাধারণ টেবিল অবজেক্টকে Map-এ কনভার্ট করে। এটি ব্যবহার করে দুটি কলাম সহ SIMPLE_TABLE টেমপ্লেট ফিল্ডকে আরও সহজে ম্যানেজ করা যায় এমন ফর্ম্যাটে পরিবর্তন করা হয়।

যেমন, এই ফাংশনটি একটি টেবিল অবজেক্টকে কনভার্ট করতে পারে:

[
  {'key': 'k1', 'value': 'v1'},
  {'key': 'k2', 'value': 'v2'}
]

ম্যাপে:

{
  'k1': 'v1',
  'k2': 'v2'
}

একটি অবজেক্ট রিটার্ন করে: কী-ভ্যালু পেয়ারের কনভার্ট করা Map এতে যোগ করা হয়েছে, অথবা অন্যথায় null।

সিনট্যাক্স

makeTableMap(tableObj, keyColumnName, valueColumnName);

প্যারামিটার

প্যারামিটার ধরন বিবরণ
tableObj তালিকা কনভার্ট করার জন্য টেবিল অবজেক্ট। এটি ম্যাপের একটি তালিকা যেখানে প্রতিটি Map সারণীর একটি সারিকে উপস্থাপন করে। সারি অবজেক্টের প্রতিটি প্রপার্টির নাম হল কলামের নাম এবং প্রপার্টির মান হল সারিতে কলামের মান।
keyColumnName স্ট্রিং কলামের নাম যার ভ্যালু কনভার্ট করা Map-এ কী হবে।
valueColumnName স্ট্রিং কলামের নাম যার ভ্যালু কনভার্ট করা Map-এর ভ্যালু হবে।

সংশ্লিষ্ট অনুমতি

কোনওটিই নয়।


parseUrl

এমন একটি অবজেক্ট রিটার্ন করে যাতে প্রদত্ত URL-এর সব কম্পোনেন্ট পার্ট থাকে, যা URL অবজেক্টের মতো।

এই API যেকোনও ত্রুটিপূর্ণ URL-এর জন্য undefined রিটার্ন করবে। সঠিকভাবে ফর্ম্যাট করা URL-এর ক্ষেত্রে, URL স্ট্রিংয়ে উপস্থিত নেই এমন ফিল্ডের ভ্যালু খালি স্ট্রিং হবে, অথবা searchParams-এর ক্ষেত্রে, খালি অবজেক্ট হবে।

ফেরত দেওয়া অবজেক্টে নিম্নলিখিত ফিল্ডগুলি থাকবে:

{
  href: string,
  origin: string,
  protocol: string,
  username: string,
  password: string,
  host: string,
  hostname: string,
  port: string,
  pathname: string,
  search: string,
  searchParams: Object<string, (string|Array)>,
  hash: string,
}

উদাহরণ

const parseUrl = require('parseUrl');

const urlObject = parseUrl('https://abc:xyz@example.com:8080/foo?param=val%2Cue#bar');

সিনট্যাক্স

parseUrl(url);

প্যারামিটার

প্যারামিটার ধরন বিবরণ
url স্ট্রিং সম্পূর্ণ URL যা পার্স করা হবে।

সংশ্লিষ্ট অনুমতি

কোনওটিই নয়।


returnResponse

API ব্যবহার করে অন্যান্য টেমপ্লেটের মাধ্যমে আগে সেট করা উত্তর ফ্লাশ করে যা উত্তর পরিবর্তন করে, এর মধ্যে setCookie, setPixelResponse, setResponseBody, setResponseHeader এবং setResponseStatus অন্তর্ভুক্ত। ডিফল্ট হিসেবে HTTP স্ট্যাটাস কোড 200, খালি বডি এবং কোনও হেডার থাকে না।

এই API ক্লায়েন্ট টেমপ্লেট থেকে ব্যবহার করার জন্য সাজেস্ট করা হয়।

সিনট্যাক্স

returnResponse();

উদাহরণ

runContainer উদাহরণ দেখুন।

সংশ্লিষ্ট অনুমতি

return_response


runContainer

কোনও ইভেন্টের স্কোপে কন্টেনার লজিক (ভেরিয়েবল, ট্রিগার, ট্যাগ) রান করে। কন্টেনার এক্সিকিউশনের সময় এই API কল করা হলে, কন্টেনার আবার রান করা হয়।

onComplete এবং onStart কলব্যাক, bindToEvent নামক একটি ফাংশন রিসিভ করে। ইভেন্টের কন্টেক্সটে API রান করতে bindToEvent ব্যবহার করুন। আরও বিবরণের জন্য addEventCallback উদাহরণ দেখুন।

এই API ক্লায়েন্ট টেমপ্লেট থেকে ব্যবহার করার জন্য সাজেস্ট করা হয়।

উদাহরণ

const returnResponse = require('returnResponse');
const runContainer = require('runContainer');

// Runs the container with a simple pageview event and then returns a response.
runContainer({'event_name': 'pageview'}, () => returnResponse());

সিনট্যাক্স

runContainer(event, onComplete, onStart);

প্যারামিটার

প্যারামিটার ধরন বিবরণ
event অবজেক্ট ইভেন্ট প্যারামিটার।
onComplete ফাংশন সব ট্যাগ ফায়ার করা শেষ হওয়ার পরে কলব্যাক চালু করা হয়।
onStart ফাংশন ট্যাগ ফায়ার করা শুরু হওয়ার আগে, অবিলম্বে কলব্যাক করা হয়।

সংশ্লিষ্ট অনুমতি

run_container


sendEventToGoogleAnalytics

সাধারণ ইভেন্ট ডেটা ব্যবহার করে Google Analytics-এ একটি ইভেন্ট পাঠায় এবং একটি প্রমিস রিটার্ন করে যা location কী সহ একটি অবজেক্টে সমাধান করে বা reason কী সহ একটি অবজেক্টে প্রত্যাখ্যান করে। Google Analytics-এর ডেস্টিনেশন, ইভেন্ট ডেটার পরিমাপ আইডির উপর ভিত্তি করে তৈরি।

location ফিল্ডটি location হেডারে সেট করা আছে, যদি থাকে।

উদাহরণ

const logToConsole = require('logToConsole');
const sendEventToGoogleAnalytics = require('sendEventToGoogleAnalytics');
const setResponseHeader = require('setResponseHeader');
const setResponseStatus = require('setResponseStatus');

// Sends an event to Google Analytics and returns failure if the request did not
// succeed. Additionally, if the request resulted in a redirect request, the
// code nominates a redirect response to be returned.
sendEventToGoogleAnalytics(event).then((response) => {
  if (response.location) {
    setResponseHeader('location', response.location);
    setResponseStatus(302);
  } else {
    setResponseStatus(200);
  }
  data.gtmOnSuccess();
}).catch((error) => {
  logToConsole(error.reason);
  setResponseStatus(500);
  data.gtmOnFailure();
});

সিনট্যাক্স

sendEventToGoogleAnalytics(event);

প্যারামিটার

প্যারামিটার ধরন বিবরণ
event অবজেক্ট ইউনিফায়েড স্কিমা ফর্ম্যাটে ইভেন্ট।

সংশ্লিষ্ট অনুমতি

send_http অনুমতি প্রয়োজন। কমপক্ষে নিম্নলিখিত অ্যাক্সেসের অনুমতি দেওয়ার জন্য অনুমতি কনফিগার করতে হবে:

  • Google Domains-কে অনুমতি দিন

sendHttpGet

নির্দিষ্ট URL-এ HTTP GET অনুরোধ করে এবং অনুরোধ সম্পূর্ণ বা টাইম-আউট হয়ে গেলে প্রমিস রিটার্ন করে যা ফলাফলের সাথে সমাধান করে।

সমাধান করা ফলাফল হল এমন একটি অবজেক্ট যাতে তিনটি 'কী' থাকে: statusCode, headers, এবং body। অনুরোধটি ব্যর্থ হলে (যেমন, ভুল URL, হোস্টের কোনও রুট নেই, SSL নেগোসিয়েশন ব্যর্থতা ইত্যাদি), প্রমিসটি এর সাথে প্রত্যাখ্যান করবে: {reason: 'failed'}। timeout বিকল্প সেট করা থাকলে এবং অনুরোধের টাইমআউট হয়ে গেলে, প্রমিস এই মেসেজ সহ বাতিল হয়ে যাবে: {reason: 'timed_out'}

উদাহরণ

const sendHttpGet = require('sendHttpGet');

// Returns the response body as the value for a variable.
return sendHttpGet('https://example.com/item/' + data.itemId, {
  headers: {key: 'value'},
  timeout: 500,
}).then((result) => result.body, () => undefined);

সিনট্যাক্স

sendHttpGet(url[, options]);

প্যারামিটার

প্যারামিটার ধরন বিবরণ
url স্ট্রিং অনুরোধ করা URL।
options অবজেক্ট ঐচ্ছিক অনুরোধের বিকল্প। (নিচে বিকল্প দেখুন।)

বিকল্প

Option ধরন বিবরণ
headers স্ট্রিং অতিরিক্ত অনুরোধের হেডার।
timeout number অনুরোধ বাতিল করার আগে, মিলিসেকেন্ডে টাইমআউট। ডিফল্ট হিসেবে 15000 সেট করা থাকে।
authorization অবজেক্ট googleapis.com-এ অনুরোধ করার সময় অথরাইজেশন হেডার অন্তর্ভুক্ত করার জন্য getGoogleAuth-এ কল থেকে ঐচ্ছিক অথরাইজেশন অবজেক্ট।

সংশ্লিষ্ট অনুমতি

send_http


sendHttpRequest

নির্দিষ্ট URL-এ HTTP অনুরোধ করে এবং একটি প্রমিস রিটার্ন করে যা অনুরোধ সম্পূর্ণ হলে বা টাইম-আউট হলে উত্তরের সাথে সমাধান করে।

সমাধান করা ফলাফল হল এমন একটি অবজেক্ট যাতে তিনটি 'কী' থাকে: statusCode, headers, এবং body। অনুরোধটি ব্যর্থ হলে (যেমন, ভুল URL, হোস্টের কোনও রুট নেই, SSL নেগোসিয়েশন ব্যর্থতা ইত্যাদি), প্রমিসটি এর সাথে প্রত্যাখ্যান করবে: {reason: 'failed'}। timeout বিকল্প সেট করা থাকলে এবং অনুরোধের টাইমআউট হয়ে গেলে, প্রমিস এই মেসেজ সহ বাতিল হয়ে যাবে: {reason: 'timed_out'}

উদাহরণ

const sendHttpRequest = require('sendHttpRequest');
const setResponseBody = require('setResponseBody');
const setResponseHeader = require('setResponseHeader');
const setResponseStatus = require('setResponseStatus');

const postBody = 'interaction=click&campaign=promotion&medium=email';
// Sends a POST request and nominates response based on the response to the POST
// request.
sendHttpRequest('https://example.com/collect', {
  headers: {key: 'value'},
  method: 'POST',
  timeout: 500,
}, postBody).then((result) => {
  setResponseStatus(result.statusCode);
  setResponseBody(result.body);
  setResponseHeader('cache-control', result.headers['cache-control']);
});

সিনট্যাক্স

sendHttpRequest(url[, options[, body]]);

প্যারামিটার

প্যারামিটার ধরন বিবরণ
url স্ট্রিং অনুরোধ করা URL।
options অবজেক্ট ঐচ্ছিক অনুরোধের বিকল্প। (নিচে বিকল্প দেখুন।)
body স্ট্রিং ঐচ্ছিক অনুরোধের প্রধান অংশ।

বিকল্প

Option ধরন বিবরণ
headers স্ট্রিং অতিরিক্ত অনুরোধের হেডার।
method অবজেক্ট অনুরোধ করার পদ্ধতি। ডিফল্ট হিসেবে GET সেট করা থাকে।
timeout number অনুরোধ বাতিল করার আগে, মিলিসেকেন্ডে টাইমআউট। ডিফল্ট হিসেবে 15000 সেট করা থাকে।
authorization অবজেক্ট googleapis.com-এ অনুরোধ করার সময় অথরাইজেশন হেডার অন্তর্ভুক্ত করার জন্য getGoogleAuth-এ কল থেকে ঐচ্ছিক অথরাইজেশন অবজেক্ট।

সংশ্লিষ্ট অনুমতি

send_http


sendPixelFromBrowser

প্রদান করা URL-কে <img> ট্যাগ হিসেবে লোড করার জন্য ব্রাউজারকে কমান্ড পাঠায়। এই কমান্ড প্রোটোকল Google Analytics-এর জন্য Google ট্যাগ এবং Google Analytics: GA ইভেন্ট ওয়েব ট্যাগে কাজ করে। আপনাকে অবশ্যই সার্ভার কন্টেনার URL কনফিগার করতে হবে। আরও বিবরণের জন্য নির্দেশাবলী দেখুন।

ইনকামিং অনুরোধ কমান্ড প্রোটোকল সমর্থন না করলে বা উত্তরটি ইতিমধ্যে ফ্লাশ করা হয়ে থাকলে এই API false রিটার্ন করে। অন্যথায়, এই API true রিটার্ন করে।

উদাহরণ:

const sendPixelFromBrowser = require('sendPixelFromBrowser');

sendPixelFromBrowser('https://example.com/?id=123');

সিনট্যাক্স

sendPixelFromBrowser(url)

প্যারামিটার

প্যারামিটার ধরন বিবরণ
url স্ট্রিং ব্রাউজারে পাঠানোর জন্য url।

সংশ্লিষ্ট অনুমতি

send_pixel_from_browser


setCookie

নির্দিষ্ট বিকল্প সহ কুকি সেট করে বা মুছে দেয়।

কোনও কুকি মুছে ফেলতে হলে, যে পাথ ও ডোমেন ব্যবহার করে কুকিটি তৈরি করা হয়েছিল, সেই একই পাথ ও ডোমেন ব্যবহার করে একটি কুকি সেট করতে হবে এবং সেটির মেয়াদ শেষ হওয়ার তারিখ হিসেবে অতীতের কোনও তারিখ সেট করতে হবে, যেমন "Thu, 01 Jan 1970 00:00:00 GMT"।

মনে রাখবেন যে ক্লায়েন্টকে উত্তর পাঠানোর জন্য returnResponse কল করতেই হবে।

উদাহরণ

const setCookie = require('setCookie');

// Sets an httpOnly cookie with a max-age of 3600.
setCookie('cookieName', 'cookieValue', {'max-age': 3600, httpOnly: true});

সিনট্যাক্স

setCookie(name, value[, options[, noEncode]]);

প্যারামিটার

প্যারামিটার ধরন বিবরণ
name স্ট্রিং কুকির নাম। নামে ছোট ও বড় হাতের অক্ষরের মধ্যে পার্থক্য করা হয় না।
value স্ট্রিং কুকির ভ্যালু।
options অবজেক্ট ঐচ্ছিক কুকি অ্যাট্রিবিউট:domain, expires, fallbackDomain,httpOnly, max- age, path, secure, এবংsameSite. (নিচে বিকল্প দেখুন।)
noEncode বুলিয়ান যদি অ্যাট্রিবিউট 'true' হয়, তাহলে কুকির মান এনকোড করা হবে না। ডিফল্ট হিসেবে false সেট করা থাকে।

বিকল্প

  • ডোমেন: যে হোস্টে কুকি পাঠানো হবে। বিশেষ মান 'অটো' হিসেবে সেট করা হলে, নিম্নলিখিত স্ট্র্যাটেজি ব্যবহার করে হোস্ট অটোমেটিক গণনা করা হবে:

    • Forwarded হেডারের eTLD+1, যদি থাকে।
    • X-Forwarded-Host হেডারের eTLD+1, যদি থাকে।
    • Host হেডারের eTLD+1।
  • expires: কুকির সর্বাধিক লাইফটাইম। এটি অবশ্যই UTC-ফর্ম্যাট করা তারিখের স্ট্রিং হতে হবে, যেমন "Sat, 26 Oct 1985 08:21:00 GMT"। expires এবং max-age দুটিই সেট করা থাকলে, max-age অগ্রাধিকার পাবে।

  • httpOnly: true হলে জাভাস্ক্রিপ্টকে কুকি অ্যাক্সেস করতে দেয় না।

  • max-age: কুকির মেয়াদ শেষ হতে কত সেকেন্ড বাকি আছে। শূন্য বা ঋণাত্মক সংখ্যা লিখলে কুকির মেয়াদ সঙ্গে সঙ্গে শেষ হয়ে যাবে। expires এবং max-age দুটিই সেট করা থাকলে, max-age-কে অগ্রাধিকার দেওয়া হয়।

  • পাথ: অনুরোধ করা URL-এ পাথ অবশ্যই থাকতে হবে, অন্যথায় ব্রাউজার কুকি হেডার পাঠাবে না।

  • secure: true-এ সেট করা থাকলে, https: এন্ডপয়েন্ট থেকে অনুরোধ করা হলে তবেই কুকি সার্ভারে পাঠানো হয়।

  • sameSite: ক্রস-অরিজিন অনুরোধের সাথে কুকি পাঠানো যাবে না বলে নিশ্চিত করে। 'strict', 'lax' বা 'none' হতে হবে।

সংশ্লিষ্ট অনুমতি

set_cookie


setPixelResponse

রেসপন্স বডিকে ১x১ GIF-এ সেট করে, কন্টেন্ট-টাইপ হেডারকে 'image/gif'-এ সেট করে, ক্যাশিং হেডারকে এমনভাবে সেট করে যাতে ইউজার এজেন্ট রেসপন্স ক্যাশ না করে এবং রেসপন্স স্ট্যাটাসকে ২০০-তে সেট করে।

মনে রাখবেন যে ক্লায়েন্টকে উত্তর পাঠানোর জন্য returnResponse কল করতেই হবে।

সিনট্যাক্স

setPixelResponse();

সংশ্লিষ্ট অনুমতি

access_response অনুমতি প্রয়োজন। কমপক্ষে নিম্নলিখিত অ্যাক্সেসের অনুমতি দিতে কনফিগার করতে হবে:

  • headers - নিম্নলিখিত 'কী' অবশ্যই অনুমোদিত হতে হবে
    • content-type
    • cache-control
    • expires
    • pragma
  • body
  • status

setResponseBody

আর্গুমেন্টে রেসপন্স বডি সেট করে।

মনে রাখবেন যে ক্লায়েন্টকে উত্তর পাঠানোর জন্য returnResponse কল করতেই হবে।

সিনট্যাক্স

setResponseBody(body[, encoding]);

প্যারামিটার

প্যারামিটার ধরন বিবরণ
body স্ট্রিং রেসপন্স বডি হিসেবে সেট করার জন্য ভ্যালু।
encoding স্ট্রিং রেসপন্স বডির অক্ষর এনকোডিং (ডিফল্ট হিসেবে 'utf8')। কাজ করে এমন ভ্যালুর মধ্যে রয়েছে 'ascii', 'utf8', 'utf16le', 'ucs2', 'base64', 'latin1', 'binary', এবং 'hex'।

সংশ্লিষ্ট অনুমতি

access_response অনুমতি প্রয়োজন। কমপক্ষে নিম্নলিখিত অ্যাক্সেসের অনুমতি দিতে কনফিগার করতে হবে:

  • body

setResponseHeader

প্রতিক্রিয়ায় একটি হেডার সেট করে যা ফেরত দেওয়া হবে। এই নামের (কেস-ইনসেনসিটিভ) কোনও হেডার আগে এই API-এর মাধ্যমে সেট করা হয়ে থাকলে, পরের কলটি আগের কলকারীর সেট করা ভ্যালু ওভাররাইট বা মুছে দেবে।

মনে রাখবেন যে ক্লায়েন্টকে উত্তর পাঠানোর জন্য returnResponse কল করতেই হবে।

সিনট্যাক্স

setResponseHeader(name, value);

প্যারামিটার

প্যারামিটার ধরন বিবরণ
name স্ট্রিং হেডারের নাম। HTTP হেডারের নামে ছোট ও বড় হাতের অক্ষরের মধ্যে পার্থক্য করা হয় না, তাই হেডারের নাম ছোট হাতের অক্ষরে লেখা হবে।
value স্ট্রিং undefined হেডারের মান। এটি নাল বা সংজ্ঞায়িত না হলে, এটি রেসপন্স থেকে নামযুক্ত হেডার মুছে দেয় যা ফেরত দেওয়া হবে।

সংশ্লিষ্ট অনুমতি

access_response অনুমতি প্রয়োজন। কমপক্ষে নিম্নলিখিত অ্যাক্সেসের অনুমতি দিতে কনফিগার করতে হবে:

  • headers

setResponseStatus

প্রতিক্রিয়ার HTTP স্ট্যাটাস কোড সেট করে যা ফেরত পাঠানো হবে।

মনে রাখবেন যে ক্লায়েন্টকে উত্তর পাঠানোর জন্য returnResponse কল করতেই হবে।

সিনট্যাক্স

setResponseStatus(statusCode);

প্যারামিটার

প্যারামিটার ধরন বিবরণ
statusCode number HTTP স্ট্যাটাস কোড ফেরত দেওয়া হবে।

সংশ্লিষ্ট অনুমতি

access_response অনুমতি প্রয়োজন। কমপক্ষে নিম্নলিখিত অ্যাক্সেসের অনুমতি দিতে কনফিগার করতে হবে:

  • status

sha256

ইনপুটের SHA-256 ডাইজেস্ট গণনা করে এবং base64-এ এনকোড করা ডাইজেস্টের সাথে একটি কলব্যাক চালু করে, যদি না options অবজেক্টটি অন্য কোনও আউটপুট এনকোডিং নির্দিষ্ট করে।

এই API সিগনেচার ও আচরণ ওয়েব কন্টেনারের জন্য sha256 API-এর সাথে ম্যাচ করে; তবে, সার্ভার কন্টেনারে কাস্টম টেমপ্লেটের ক্ষেত্রে আরও সহজ কোডের জন্য sha256Sync API ব্যবহার করা উচিত।

উদাহরণ

const encodeUriComponent = require('encodeUriComponent');
const sendHttpGet = require('sendHttpGet');
const sha256 = require('sha256');

sha256('inputString', (digest) => {
  sendHttpGet('https://example.com/collect?id=' + encodeUriComponent(digest));
});

sha256('inputString', (digest) => {
  sendHttpGet('https://example.com/collect?id=' + encodeUriComponent(digest));
}, {outputEncoding: 'hex'});

সিনট্যাক্স

sha256(input, onSuccess, options = undefined);

প্যারামিটার

প্যারামিটার ধরন বিবরণ
input স্ট্রিং হ্যাশ করার জন্য স্ট্রিং।
onSuccess ফাংশন options অবজেক্টে আলাদা আউটপুট এনকোডিং উল্লেখ করা না থাকলে, base64-এ এনকোড করা, ফলাফল ডাইজেস্ট সহ কল করা হয়।
options অবজেক্ট আউটপুট এনকোডিং নির্দিষ্ট করার জন্য ঐচ্ছিক বিকল্প অবজেক্ট। উল্লেখ করা থাকলে, অবজেক্টে outputEncoding কী থাকতে হবে যার ভ্যালু base64 বা hex-এর মধ্যে যেকোনও একটি হতে হবে।

সংশ্লিষ্ট অনুমতি

কোনওটিই নয়।


sha256Sync

ইনপুটের SHA-256 ডাইজেস্ট গণনা করে এবং ফেরত দেয়, base64-এ এনকোড করা, যদি না options অবজেক্ট একটি ভিন্ন আউটপুট এনকোডিং নির্দিষ্ট করে।

উদাহরণ

const encodeUriComponent = require('encodeUriComponent');
const sendHttpGet = require('sendHttpGet');
const sha256Sync = require('sha256Sync');

const digestBase64 = sha256Sync('inputString');
const digestHex = sha256Sync('inputString', {outputEncoding: 'hex'});
sendHttpGet('https://example.com/collect?id=' + encodeUriComponent(digestBase64));
sendHttpGet('https://example.com/collect?id=' + encodeUriComponent(digestHex));

সিনট্যাক্স

sha256Sync(input, options = undefined);

প্যারামিটার

প্যারামিটার ধরন বিবরণ
input স্ট্রিং হ্যাশ করার জন্য স্ট্রিং।
options অবজেক্ট আউটপুট এনকোডিং নির্দিষ্ট করার জন্য ঐচ্ছিক বিকল্প অবজেক্ট। উল্লেখ করা থাকলে, অবজেক্টে outputEncoding কী থাকতে হবে যার ভ্যালু base64 বা hex-এর মধ্যে যেকোনও একটি হতে হবে।

সংশ্লিষ্ট অনুমতি

কোনওটিই নয়।


templateDataStorage

টেমপ্লেট ডেটা স্টোরেজ অ্যাক্সেস করার পদ্ধতি সহ একটি অবজেক্ট দেখায়। টেমপ্লেট ডেটা স্টোরেজ, একটি টেমপ্লেটের এক্সিকিউশন জুড়ে ডেটা শেয়ার করার অনুমতি দেয়। টেমপ্লেট ডেটা স্টোরেজে সেভ করা ডেটা কন্টেনার চালানো সার্ভারে থেকে যায়। বেশিরভাগ ক্ষেত্রে একাধিক সার্ভার কন্টেনার চালায়, তাই টেমপ্লেট ডেটা স্টোরেজে ডেটা স্টোর করলে, পরবর্তী প্রতিটি অনুরোধে ডেটা অ্যাক্সেস করা যাবে কিনা তার কোনও গ্যারেন্টি থাকে না।

"templateDataStorage" নামের মধ্যে "data" বলতে বোঝায় যে এই API ব্যবহার করে শুধুমাত্র সাধারণ, নন-ফাংশন ডেটার ধরন স্টোর করা যেতে পারে। API-তে পাস করা কোনও ফাংশন বা ফাংশনের রেফারেন্সের পরিবর্তে null হিসেবে স্টোর করা হবে।

সিনট্যাক্স

const templateDataStorage = require('templateDataStorage');

// Returns a copy of the value stored for the given key, or null if nothing
// is stored with that key.
templateDataStorage.getItemCopy(key);

// Stores a copy of the value for the given key (or removes the data stored
// for the given key if the input value is null).
templateDataStorage.setItemCopy(key, value);

// Removes the value stored for the given key, if present.
templateDataStorage.removeItem(key);

// Deletes all values stored for the current template.
templateDataStorage.clear();

উদাহরণ

const sendHttpGet = require('sendHttpGet');
const setResponseBody = require('setResponseBody');
const setResponseStatus = require('setResponseStatus');
const templateDataStorage = require('templateDataStorage');

// Check to see if the item is in the cache.
const cachedBody = templateDataStorage.getItemCopy(data.key);
if (cachedBody) {
  setResponseBody(cachedBody);
  data.gtmOnSuccess();
  return;
}

sendHttpGet(data.url).then((result) => {
  if (result.statusCode >= 200 && result.statusCode < 300) {
    setResponseBody(result.body);
    templateDataStorage.setItemCopy(data.key, result.body);
    data.gtmOnSuccess();
  } else {
    data.gtmOnFailure();
  }
  setResponseStatus(result.statusCode);
});

সংশ্লিষ্ট অনুমতি

access_template_storage


testRegex

createRegex API-এর মাধ্যমে তৈরি করা regex-এর সাথে স্ট্রিং টেস্ট করে। regex ম্যাচ করলে true রিটার্ন করে। অন্যথায় false রিটার্ন করে।

গ্লোবাল ফ্ল্যাগ দিয়ে তৈরি করা রেজেক্স স্টেটফুল হয়। আরও জানতে RegExp ডকুমেন্টেশন দেখুন।

উদাহরণ

const createRegex = require('createRegex');
const testRegex = require('testRegex');

const domainRegex = createRegex('\\w+\\.com', 'i');

// createRegex returns null if the regex is invalid or Re2 is not available.
if (domainRegex === null) return;

// Returns true
testRegex(domainRegex, 'example.com/foobar');

সিনট্যাক্স

testRegex(regex, string);

প্যারামিটার

প্যারামিটার ধরন বিবরণ
regex অবজেক্ট createRegex API থেকে পাওয়া, পরীক্ষা করার জন্য regex।
string স্ট্রিং টেস্ট করার জন্য টেস্ট স্ট্রিং।

সংশ্লিষ্ট অনুমতি

কোনওটিই নয়।


toBase64

base64 বা base64url হিসেবে স্ট্রিং এনকোড করে। ডিফল্ট হিসেবে base64 এনকোডিং ব্যবহার করা হয়।

সিনট্যাক্স

toBase64(input, options);

প্যারামিটার

প্যারামিটার ধরন বিবরণ
input স্ট্রিং এনকোড করার জন্য স্ট্রিং।
options অবজেক্ট ঐচ্ছিক API কনফিগারেশন। (নিচে বিকল্প দেখুন।)

বিকল্প

Option ধরন বিবরণ সর্বনিম্ন ভার্সন
urlEncoding বুলিয়ান সত্য হলে, ফলাফল base64url ফর্ম্যাট ব্যবহার করে এনকোড করা হবে। 1.0.0

উদাহরণ

const toBase64 = require('toBase64');

const base64Hello = toBase64('hello');
const base64UrlHello = toBase64('hello', {urlEncoding: true});

সংশ্লিষ্ট অনুমতি

কোনওটিই নয়।


BigQuery

BigQuery ফাংশন প্রদান করে এমন একটি অবজেক্ট রিটার্ন করে।

BigQuery.insert ফাংশনটি BigQuery টেবিলে ডেটা লেখার অনুমতি দেয়। এটি একটি প্রমিস রিটার্ন করে যা সফলভাবে ইনসার্ট করার পরে সমাধান করে অথবা কোনও সমস্যা হলে প্রত্যাখ্যান করে।

যোগ করা সফল হলে, কোনও আর্গুমেন্ট ছাড়াই প্রমিস রিজলভ হয়ে যায়।

যোগ করা না গেলে, প্রমিস অবজেক্টের একটি তালিকা সহ বাতিল করে দেয়, যাতে সমস্যার কারণ এবং সমস্যা হলে সম্ভবত একটি রো অবজেক্ট থাকে। অনুরোধের একটি অংশ সম্পূর্ণ করা সম্ভব হলেও, অন্য অংশটি সম্পূর্ণ করা সম্ভব নাও হতে পারে। এই ক্ষেত্রে, কোন সারিগুলি যোগ করা হয়েছে তা আলাদা করতে সাহায্য করার জন্য প্রতিটি সারির জন্য ত্রুটির তালিকা সহ প্রমিস প্রত্যাখ্যান করা হয় (নিচে ত্রুটির উদাহরণ দেখুন)। আরও তথ্যের জন্য ত্রুটি মেসেজ সংক্রান্ত BigQuery-এর ডকুমেন্টেশন দেখুন।

সিনট্যাক্স

BigQuery.insert(connectionInfo, rows[, options]);

প্যারামিটার

প্যারামিটার ধরন বিবরণ
connectionInfo অবজেক্ট BigQuery টেবিলের সাথে কানেক্ট করার জন্য প্রয়োজনীয় তথ্য নির্ধারণ করে। একটি ঐচ্ছিক প্যারামিটার এবং দুটি প্রয়োজনীয় প্যারামিটার আছে:
  • projectId - ঐচ্ছিক Google Cloud Platform প্রোজেক্ট আইডি। বাদ দেওয়া হলে, প্রোজেক্ট আইডির জন্য access_bigquery অনুমতি সেটিং * বা GOOGLE_CLOUD_PROJECT-এ সেট করা থাকলে, এনভায়রনমেন্ট ভেরিয়েবল GOOGLE_CLOUD_PROJECT থেকে projectId ফিরিয়ে আনা হয়। সার্ভার কন্টেনার Google Cloud-এ রান করলে, GOOGLE_CLOUD_PROJECT আগে থেকেই Google Cloud প্রোজেক্টের আইডিতে সেট করা থাকবে।
  • datasetId - BigQuery ডেটাসেট আইডি।
  • tableId - BigQuery টেবিল আইডি।
rows Array টেবিলে যোগ করার জন্য সারি।
options অবজেক্ট ঐচ্ছিক অনুরোধের বিকল্প। কাজ করে এমন বিকল্পগুলি হল: ignoreUnknownValues এবং skipInvalidRows। অজানা বিকল্প কী উপেক্ষা করা হয়েছে। (নিচে বিকল্প দেখুন।)

বিকল্প

প্যারামিটার ধরন বিবরণ
ignoreUnknownValues বুলিয়ান true-এ সেট করা থাকলে, সেইসব সারি গ্রহণ করুন যেগুলিতে এমন ভ্যালু আছে যা স্কিমার সাথে মেলে না। অজানা ভ্যালু উপেক্ষা করা হয়। ডিফল্ট হিসেবে false সেট করা থাকে।
skipInvalidRows বুলিয়ান true-এ সেট করা থাকলে, অনুরোধের সব সঠিক সারি যোগ করুন, এমনকি ভুল সারি থাকলেও। ডিফল্ট হিসেবে false সেট করা থাকে।

সমস্যার উদাহরণ

মডিউল খুঁজে পাওয়া যায়নি সংক্রান্ত সমস্যার অর্থ হল, আপনার সার্ভার কন্টেনারে সম্ভবত আমাদের ছবির পুরনো ভার্সন চলছে, যেটিতে এখনও BigQuery মডিউল অন্তর্ভুক্ত করা হয়নি। আমাদের ডিপ্লয়মেন্ট স্ক্রিপ্ট ব্যবহার করে একই সেটিংস সহ আপনার সার্ভার কন্টেনার আবার ডিপ্লয় করুন। অপারেশন শেষ হলে মডিউলটি অটোমেটিক অন্তর্ভুক্ত করা হবে।

নন-ইনসার্শন সংক্রান্ত সমস্যার ক্ষেত্রে সাধারণত reason কী সহ একটি সমস্যা অবজেক্ট থাকে:

[{reason: 'invalid'}]

ইনসার্ট করার সময় হওয়া সমস্যার মধ্যে একাধিক সমস্যা সংক্রান্ত অবজেক্ট থাকতে পারে, যার মধ্যে একটি errors অ্যারে এবং একটি row অবজেক্ট থাকে। দুটি সারি যোগ করার সময় একটি সারিতে সমস্যা হলে, সমস্যা সংক্রান্ত উত্তরের উদাহরণ নিচে দেওয়া হল:

[
  {
    "errors": [
      {
        "reason":"invalid"
      }
    ],
    "row": {
      "string_col":"otherString",
      "number_col":-3,
      "bool_col":3
    }
  },
  {
    "errors": [
      {
        "reason":"stopped"
      }
    ],
    "row": {
      "string_col":"stringValue",
      "number_col":5,
      "bool_col:false
    }
  }
]

উদাহরণ

const BigQuery = require('BigQuery');

const connectionInfo = {
  'projectId': 'gcp-cloud-project-id',
  'datasetId': 'destination-dataset',
  'tableId': 'destination-table',
};

const rows = [{
  'column1': 'String1',
  'column2': 1234,
}];

const options = {
  'ignoreUnknownValues': true,
  'skipInvalidRows': false,
};

BigQuery.insert(connectionInfo, rows, options)
  .then(data.gtmOnSuccess, data.gtmOnFailure);

সংশ্লিষ্ট অনুমতি

access_bigquery


Firestore

Firestore ফাংশন প্রদান করে এমন অবজেক্ট রিটার্ন করে।

এই API শুধুমাত্র নেটিভ মোডে Firestore-এ কাজ করে, Datastore মোডে Firestore-এ নয়। এছাড়াও, API শুধুমাত্র ডিফল্ট ডেটাবেস ব্যবহার করার ক্ষেত্রে কাজ করে।

Firestore.read

Firestore.read ফাংশন Firestore ডকুমেন্ট থেকে ডেটা পড়ে এবং প্রমিজ রিটার্ন করে যা দুটি কী সহ অবজেক্টে সমাধান করে: id এবং data। ডকুমেন্টটি না থাকলে, not_found-এর সমান reason কী সহ অবজেক্টের মাধ্যমে প্রমিসটি বাতিল করা হয়।

সিনট্যাক্স

Firestore.read(path[, options]);

প্যারামিটার

প্যারামিটার ধরন বিবরণ
path স্ট্রিং ডকুমেন্ট বা কালেকশনের পাথ। '/' দিয়ে শুরু বা শেষ করা যাবে না।
options অবজেক্ট ঐচ্ছিক অনুরোধের বিকল্প। কাজ করে এমন বিকল্পগুলি হল: projectId, disableCache এবং transaction। অজানা বিকল্প কী উপেক্ষা করা হয়েছে। (নিচে বিকল্প দেখুন।)

বিকল্প

প্যারামিটার ধরন বিবরণ
projectId স্ট্রিং ঐচ্ছিক। Google Cloud Platform প্রোজেক্ট আইডি। বাদ দেওয়া হলে, projectId এনভায়রনমেন্ট ভেরিয়েবল GOOGLE_CLOUD_PROJECT থেকে ততক্ষণ পর্যন্ত ফিরিয়ে আনা হয় যতক্ষণ পর্যন্ত access_firestore প্রোজেক্ট আইডির জন্য অনুমতি সেটিংস * বা GOOGLE_CLOUD_PROJECT-এ সেট করা থাকে। সার্ভার কন্টেনার Google Cloud-এ রান করলে, GOOGLE_CLOUD_PROJECT আগে থেকেই Google Cloud প্রোজেক্টের আইডিতে সেট করা থাকবে।
disableCache বুলিয়ান ঐচ্ছিক। ক্যাশে বন্ধ করা হবে কিনা তা নির্ধারণ করে। ডিফল্ট হিসেবে ক্যাশিং চালু করা থাকে, যা অনুরোধের সময়সীমার জন্য ফলাফল ক্যাশ করবে।
transaction স্ট্রিং ঐচ্ছিক। Firestore.runTransaction() থেকে উদ্ধার করা মান। ট্রানজ্যাকশনের মধ্যে ব্যবহার করার জন্য অপারেশন চিহ্নিত করে।

উদাহরণ

const Firestore = require('Firestore');

return Firestore.read('collection/document', {
  projectId: 'gcp-cloud-project-id',
}).then((result) => result.data.key, () => undefined);

Firestore.write

Firestore.write ফাংশন Firestore ডকুমেন্ট বা কালেকশনে ডেটা লেখে। পাথটি কোনও কালেকশনের হলে, র‍্যান্ডমলি জেনারেট করা আইডি সহ একটি ডকুমেন্ট তৈরি করা হবে। পাথটি যদি কোনও ডকুমেন্টের হয় এবং সেটি যদি না থাকে, তাহলে এটি তৈরি করা হবে। এই API একটি প্রমিস রিটার্ন করে যা যোগ করা বা পরিবর্তন করা ডকুমেন্টের আইডিতে রিজলভ হয়। ট্রানজ্যাকশন বিকল্প ব্যবহার করা হলে, API এখনও প্রমিস রিটার্ন করে, কিন্তু এতে আইডি থাকবে না কারণ রাইটগুলি ব্যাচ করা হয়।

সিনট্যাক্স

Firestore.write(path, input[, options]);

প্যারামিটার

প্যারামিটার ধরন বিবরণ
path স্ট্রিং ডকুমেন্ট বা কালেকশনের পাথ। '/' দিয়ে শুরু বা শেষ করা যাবে না।
input অবজেক্ট ডকুমেন্টে লেখার জন্য মান। মার্জ করার বিকল্প সেট করা থাকলে, API ইনপুট থেকে ডকুমেন্টে কী মার্জ করবে।
options অবজেক্ট ঐচ্ছিক অনুরোধের বিকল্প। কাজ করে এমন বিকল্পগুলি হল: projectId, merge এবং transaction। অজানা বিকল্প কী উপেক্ষা করা হয়েছে। (নিচে বিকল্প দেখুন।)

বিকল্প

প্যারামিটার ধরন বিবরণ
projectId স্ট্রিং ঐচ্ছিক। Google Cloud Platform প্রোজেক্ট আইডি। বাদ দেওয়া হলে, projectId এনভায়রনমেন্ট ভেরিয়েবল GOOGLE_CLOUD_PROJECT থেকে ততক্ষণ পর্যন্ত ফিরিয়ে আনা হয় যতক্ষণ পর্যন্ত access_firestore প্রোজেক্ট আইডির জন্য অনুমতি সেটিংস * বা GOOGLE_CLOUD_PROJECT-এ সেট করা থাকে। সার্ভার কন্টেনার Google Cloud-এ রান করলে, GOOGLE_CLOUD_PROJECT আগে থেকেই Google Cloud প্রোজেক্টের আইডিতে সেট করা থাকবে।
merge বুলিয়ান ঐচ্ছিক। যদি true-এ সেট করা হয়, তাহলে ইনপুট থেকে কীগুলি ডকুমেন্টে মার্জ করুন, অন্যথায় পদ্ধতিটি পুরো ডকুমেন্টকে ওভাররাইড করবে। ডিফল্ট হিসেবে false সেট করা থাকে।
transaction স্ট্রিং ঐচ্ছিক। Firestore.runTransaction() থেকে উদ্ধার করা মান। ট্রানজ্যাকশনের মধ্যে ব্যবহার করার জন্য অপারেশন চিহ্নিত করে।

উদাহরণ

const Firestore = require('Firestore');

const input = {key1: 'value1', key2: 12345};

Firestore.write('collection/document', input, {
  projectId: 'gcp-cloud-project-id',
  merge: true,
}).then((id) => {
  data.gtmOnSuccess();
}, data.gtmOnFailure);

Firestore.query

Firestore.query ফাংশন প্রদত্ত সংগ্রহে কোয়েরি করে এবং একটি প্রমিস রিটার্ন করে যা কোয়েরির শর্তের সাথে মেলে এমন Firestore ডকুমেন্টের অ্যারেতে সমাধান করে। Firestore ডকুমেন্ট অবজেক্টটি উপরে Firestore.read-এ তালিকাভুক্ত অবজেক্টের মতোই। কোয়েরির শর্তের সাথে মেলে এমন কোনও ডকুমেন্ট না থাকলে, ফেরত আসা প্রমিস খালি অ্যারেতে সমাধান করা হবে।

সিনট্যাক্স

Firestore.query(collection, queryConditions[, options]);

প্যারামিটার

প্যারামিটার ধরন বিবরণ
collection স্ট্রিং কালেকশনের পাথ। '/' দিয়ে শুরু বা শেষ করা যাবে না।
queryConditions Array কোয়েরি সংক্রান্ত শর্তাবলীর একটি অ্যারে। প্রতিটি কোয়েরি তিনটি ভ্যালু সহ অ্যারের ফর্ম্যাটে আসে: কী, অপারেটর এবং expectedValue। E.g.: [[‘id’, ‘<’, ‘5’], [‘state’, ‘==’, ‘CA’]].

কোয়েরির ফলাফল তৈরি করতে শর্তগুলি AND অপারেটর দিয়ে একসাথে যুক্ত করা হয়। মানানসই কোয়েরি অপারেটরের তালিকা দেখতে Firestore-এর কোয়েরি অপারেটর দেখুন।
options অবজেক্ট ঐচ্ছিক অনুরোধের বিকল্প। কাজ করে এমন বিকল্পগুলি হল: projectId, disableCache, limit এবং transaction। অজানা বিকল্প কী উপেক্ষা করা হয়েছে। (নিচে বিকল্প দেখুন।)

বিকল্প

প্যারামিটার ধরন বিবরণ
projectId স্ট্রিং ঐচ্ছিক। Google Cloud Platform প্রোজেক্ট আইডি। বাদ দেওয়া হলে, projectId এনভায়রনমেন্ট ভেরিয়েবল GOOGLE_CLOUD_PROJECT থেকে ততক্ষণ পর্যন্ত ফিরিয়ে আনা হয় যতক্ষণ পর্যন্ত access_firestore প্রোজেক্ট আইডির জন্য অনুমতি সেটিংস * বা GOOGLE_CLOUD_PROJECT-এ সেট করা থাকে। সার্ভার কন্টেনার Google Cloud-এ রান করলে, GOOGLE_CLOUD_PROJECT আগে থেকেই Google Cloud প্রোজেক্টের আইডিতে সেট করা থাকবে।
disableCache বুলিয়ান ঐচ্ছিক। ক্যাশে বন্ধ করা হবে কিনা তা নির্ধারণ করে। ডিফল্ট হিসেবে ক্যাশিং চালু করা থাকে, যা অনুরোধের সময়সীমার জন্য ফলাফল ক্যাশ করবে।
limit number ঐচ্ছিক। কোয়েরির মাধ্যমে দেখানো ফলাফলের সর্বাধিক সংখ্যা পরিবর্তন করে, ডিফল্ট হিসেবে ৫ সেট করা থাকে।
transaction স্ট্রিং ঐচ্ছিক। Firestore.runTransaction() থেকে উদ্ধার করা মান। ট্রানজ্যাকশনের মধ্যে ব্যবহার করার জন্য অপারেশন চিহ্নিত করে।

উদাহরণ

const Firestore = require('Firestore');

const queries = const queries = [['id', '==', '5']];

return Firestore.query('collection', queries, {
  projectId: 'gcp-cloud-project-id',
  limit: 1,
}).then((documents) => documents[0].data.key, () => undefined);

Firestore.runTransaction

Firestore.runTransaction ফাংশন ব্যবহারকারীকে Firestore থেকে অ্যাটমিক্যালি পড়তে ও লিখতে দেয়। একই সাথে লেখা বা অন্য ট্রানজ্যাকশন সংক্রান্ত সমস্যা হলে, ট্রানজ্যাকশনটি দুইবার পর্যন্ত আবার চেষ্টা করা হবে। মোট তিনবার চেষ্টা করার পরেও ব্যর্থ হলে, API একটি ত্রুটি সহ প্রত্যাখ্যান করবে। এই API একটি প্রমিস রিটার্ন করে যা প্রতিটি লেখার অপারেশনের জন্য ডকুমেন্ট আইডির একটি অ্যারেতে সমাধান করে, যদি ট্রানজ্যাকশন সফল হয় এবং ব্যর্থ হলে ত্রুটি সহ প্রত্যাখ্যান করবে।

সিনট্যাক্স

Firestore.runTransaction(callback[, options]);

প্যারামিটার

প্যারামিটার ধরন বিবরণ
callback ফাংশন একটি কলব্যাক যা স্ট্রিং ট্রানজ্যাকশন আইডির সাথে ইনভোক করা হয়। ট্রানজ্যাকশন আইডি রিড/রাইট/কোয়েরি API কলে পাস করা যেতে পারে। এই কলব্যাক ফাংশন অবশ্যই একটি প্রতিশ্রুতি প্রদান করবে। কলব্যাক ব্যর্থ হওয়ার আগে সর্বাধিক তিনবার রান করতে পারে।
options অবজেক্ট ঐচ্ছিক অনুরোধের বিকল্প। শুধুমাত্র কাজ করে এমন বিকল্প হল projectId। অজানা বিকল্প কী উপেক্ষা করা হয়েছে। (নিচে বিকল্প দেখুন।)

বিকল্প

প্যারামিটার ধরন বিবরণ
projectId স্ট্রিং ঐচ্ছিক। Google Cloud Platform প্রোজেক্ট আইডি। বাদ দেওয়া হলে, projectId এনভায়রনমেন্ট ভেরিয়েবল GOOGLE_CLOUD_PROJECT থেকে ততক্ষণ পর্যন্ত ফিরিয়ে আনা হয় যতক্ষণ পর্যন্ত access_firestore প্রোজেক্ট আইডির জন্য অনুমতি সেটিংস * বা GOOGLE_CLOUD_PROJECT-এ সেট করা থাকে। সার্ভার কন্টেনার Google Cloud-এ রান করলে, GOOGLE_CLOUD_PROJECT আগে থেকেই Google Cloud প্রোজেক্টের আইডিতে সেট করা থাকবে।

উদাহরণ

const Firestore = require('Firestore');

const path = 'collection/document';
const projectId = 'gcp-cloud-project-id';

Firestore.runTransaction((transaction) => {
  const transactionOptions = {
    projectId: projectId,
    transaction: transaction,
  };
  // Must return a promise.
  return Firestore.read(path, transactionOptions).then((result) => {
    const newInputCount = result.data.inputCount + 1;
    const input = {key1: 'value1', inputCount: newInputCount};
    return Firestore.write(path, input, transactionOptions);
  });
}, {
  projectId: projectId
}).then((ids) => {
  data.gtmOnSuccess();
}, data.gtmOnFailure);

সমস্যার উদাহরণ

প্রতিটি Firestore ফাংশনে উপলভ্য ত্রুটিগুলি একটি অবজেক্টের সাথে প্রত্যাখ্যান করা হবে যার মধ্যে একটি reason কী রয়েছে:

Firestore.read(...).then(onSuccess, (error) => {
  if (error.reason === 'unknown') {
    // Handle the unknown error here.
  }
});

সমস্যার কারণের মধ্যে Firestore REST API সমস্যার কোড অন্তর্ভুক্ত থাকতে পারে, তবে এর মধ্যেই সীমিত নয়।

সংশ্লিষ্ট অনুমতি

access_firestore


JSON

JSON ফাংশন প্রদান করে এমন একটি অবজেক্ট রিটার্ন করে।

parse() ফাংশনটি JSON স্ট্রিং পার্স করে ভ্যালু বা অবজেক্ট তৈরি করে যা স্ট্রিং দ্বারা বর্ণনা করা হয়। ভ্যালু পার্স করা না গেলে (যেমন, ভুল ফর্ম্যাটের JSON), ফাংশনটি undefined রিটার্ন করবে। ইনপুট ভ্যালু স্ট্রিং না হলে, ইনপুটকে স্ট্রিংয়ে পরিবর্তন করা হবে।

stringify() ফাংশন ইনপুটকে JSON স্ট্রিংয়ে কনভার্ট করে। যদি ভ্যালু পার্স করা না যায় (যেমন, অবজেক্টে সাইকেল আছে), তাহলে মেথড undefined রিটার্ন করবে।

উদাহরণ

const JSON = require('JSON');

// The JSON input string is converted to an object.
const object = JSON.parse('{"foo":"bar"}');

// The input object is converted to a JSON string.
const str = JSON.stringify({foo: 'bar'});

সিনট্যাক্স

JSON.parse(stringInput);
JSON.stringify(value);

সংশ্লিষ্ট অনুমতি

কোনওটিই নয়।


Math

Math ফাংশন প্রদানকারী অবজেক্ট।

সিনট্যাক্স

const Math = require('Math');

// Retrieve the absolute value.
const absolute = Math.abs(-3);

// Round the input down to the nearest integer.
const roundedDown = Math.floor(3.6);

// Round the input up to the nearest integer.
const roundedUp = Math.ceil(2.2);

// Round the input to the nearest integer.
const rounded = Math.round(3.1);

// Return the largest argument.
const biggest = Math.max(1, 3);

// Return the smallest argument.
const smallest = Math.min(3, 5);

// Return the first argument raised to the power of the second argument.
const powerful = Math.pow(3, 1);

// Return the square root of the argument.
const unsquared = Math.sqrt(9);

প্যারামিটার

ম্যাথ ফাংশনের প্যারামিটার সংখ্যায় পরিবর্তন করা হয়েছে।

সংশ্লিষ্ট অনুমতি

কোনওটিই নয়।


Messages

নিম্নলিখিত API একসাথে কাজ করে যাতে কন্টেনারের বিভিন্ন অংশের মধ্যে মেসেজ পাস করা যায়।


addMessageListener

এমন একটি ফাংশন যোগ করে যা নির্দিষ্ট ধরনের মেসেজ শোনে। sendMessage API (সাধারণত ট্যাগ দ্বারা) ব্যবহার করে সেই ধরনের মেসেজ পাঠানো হলে, কলব্যাক সিঙ্ক্রোনাসভাবে রান করবে। কলব্যাক দুটি প্যারামিটার সহ রান করে:

  1. messageType:string
  2. message:Object

কোনও ক্লায়েন্টে কলব্যাক যোগ করা হলে, ক্লায়েন্টের তৈরি করা সব ইভেন্ট জুড়ে কলব্যাক মেসেজ পাবে। কলব্যাক যদি শুধুমাত্র নির্দিষ্ট ইভেন্ট থেকে মেসেজ রিসিভ করে, তাহলে runContainer API-এর onStart ফাংশনে bindToEvent ব্যবহার করে এই API-কে ইভেন্টের সাথে বাইন্ড করুন। উদাহরণ দেখুন।

সিনট্যাক্স

const addMessageListener = require('addMessageListener');

addMessageListener('send_pixel', (messageType, message) => {
  // This will be run whenever something sends a 'send_pixel' message.
});

প্যারামিটার

প্যারামিটার ধরন বিবরণ
messageType স্ট্রিং যে ধরনের মেসেজ শুনতে হবে। মানটি স্ট্রিং না হলে, এটি একটি স্ট্রিংয়ে পরিবর্তিত হবে।
callback ফাংশন প্রযোজ্য মেসেজের ধরন অনুযায়ী কোনও মেসেজ পাঠানো হলে কলব্যাক রান করে। কলব্যাক কোনও ফাংশন না হলে, API কিছুই করবে না।

উদাহরণ

const addMessageListener = require('addMessageListener');
const claimRequest = require('claimRequest');
const extractEventsFromMpv1 = require('extractEventsFromMpv1');
const returnResponse = require('returnResponse');
const runContainer = require('runContainer');

claimRequest();
addMessageListener('send_pixel', (messageType, message) => {
  // This will be run whenever a tag sends a 'send_pixel' message.
});

const events = extractEventsFromMpv1();
let eventsCompleted = 0;
events.forEach((event, i) => {
  runContainer(events[i], /* onComplete= */ () => {
    if (events.length === ++eventsCompleted) {
      returnResponse();
    }
  }, /* onStart= */ (bindToEvent) => {
    if (i === 0) {
      bindToEvent(addMessageListener)('send_pixel', (messageType, message) => {
        // This will be called whenever a tag for the first event sends a
        // 'send_pixel' message.
      });
    }
  });
});

সংশ্লিষ্ট অনুমতি

use_message অনুমতি প্রয়োজন। অনুমতি দেওয়ার জন্য অন্তত নিম্নলিখিত বিষয়গুলি কনফিগার করতে হবে:

  • listen বা listen_and_send-এর মধ্যে Usage সহ মেসেজের ধরন।

hasMessageListener

প্রদত্ত মেসেজের ধরনের জন্য মেসেজ লিসেনার যোগ করা হলে, 'ট্রু' রিটার্ন করে। অন্যথায়, false রিটার্ন করে।

সিনট্যাক্স

const hasMessageListener = require('hasMessageListener');

hasMessageListener('send_pixel');

সংশ্লিষ্ট অনুমতি

কোনওটিই নয়।


sendMessage

রেজিস্টার করা শ্রোতাকে নির্দিষ্ট ধরনের মেসেজ পাঠায়। এটি ব্যবহার করা যেতে পারে একটি ট্যাগ থেকে ক্লায়েন্টকে মেসেজ পাঠাতে যা কন্টেইনারটি রান করেছে।

সিনট্যাক্স

const sendMessage = require('sendMessage');

sendMessage('send_pixel', {url: 'https://analytics.example.com/collect'});

প্যারামিটার

প্যারামিটার ধরন বিবরণ
messageType স্ট্রিং মেসেজের ধরন যা পাঠাতে হবে। মানটি স্ট্রিং না হলে, এটিকে স্ট্রিংয়ে পরিবর্তন করা হবে।
message অবজেক্ট যে মেসেজ পাঠাতে হবে। মেসেজটি অবজেক্ট না হলে, API কিছু করবে না।

সংশ্লিষ্ট অনুমতি

use_message অনুমতি প্রয়োজন। অনুমতি দেওয়ার জন্য অন্তত নিম্নলিখিত বিষয়গুলি কনফিগার করতে হবে:

  • listen_and_send বা send-এর মধ্যে Usage সহ মেসেজের ধরন।

Object

এমন একটি অবজেক্ট রিটার্ন করে যা Object পদ্ধতি প্রদান করে।

keys() পদ্ধতি স্ট্যান্ডার্ড লাইব্রেরি Object.keys() আচরণ প্রদান করে। এটি প্রদত্ত অবজেক্টের নিজস্ব গণনাযোগ্য প্রপার্টির নামের অ্যারে for...in... লুপের মতো একই ক্রমে প্রদান করে। ইনপুট ভ্যালু অবজেক্ট না হলে, সেটিকে অবজেক্টে পরিবর্তন করা হবে।

values() পদ্ধতি স্ট্যান্ডার্ড লাইব্রেরি Object.values() আচরণ প্রদান করে। এটি প্রদত্ত অবজেক্টের নিজস্ব গণনাযোগ্য প্রপার্টি ভ্যালুর একটি অ্যারে প্রদান করে একই ক্রমে যা একটি for...in... লুপ করবে। ইনপুট ভ্যালু অবজেক্ট না হলে, সেটিকে অবজেক্টে পরিবর্তন করা হবে।

entries() পদ্ধতি স্ট্যান্ডার্ড লাইব্রেরি Object.entries() আচরণ প্রদান করে। এটি প্রদত্ত অবজেক্টের নিজস্ব গণনাযোগ্য প্রপার্টি [key, value] জোড়ার একটি অ্যারে প্রদান করে, যা for...in... লুপের মতো একই ক্রমে থাকে। ইনপুট ভ্যালু অবজেক্ট না হলে, এটিকে অবজেক্টে পরিবর্তন করা হবে।

freeze() পদ্ধতি স্ট্যান্ডার্ড লাইব্রেরি Object.freeze() আচরণ প্রদান করে। কোনও অবজেক্ট ফ্রিজ করা হলে, সেটি আর পরিবর্তন করা যায় না; অবজেক্ট ফ্রিজ করলে, এতে নতুন প্রপার্টি যোগ করা, আগে থেকে থাকা প্রপার্টি সরিয়ে দেওয়া এবং আগে থেকে থাকা প্রপার্টির ভ্যালু পরিবর্তন করা যায় না। freeze() পাস করা একই অবজেক্ট ফেরত দেয়। একটি প্রিমিটিভ বা নাল আর্গুমেন্টকে ফ্রোজেন অবজেক্ট হিসেবে বিবেচনা করা হবে এবং সেটি রিটার্ন করা হবে।

delete() পদ্ধতি স্ট্যান্ডার্ড লাইব্রেরি ডিলিট অপারেটর আচরণ প্রদান করে। অবজেক্টটি ফ্রোজেন না হলে এটি অবজেক্ট থেকে প্রদত্ত কী সরিয়ে দেয়। Standard Library ডিলিট অপারেটরের মতো, প্রথম ইনপুট ভ্যালু (objectInput) এমন অবজেক্ট হলে, যা ফ্রোজেন নয়, এটি true রিটার্ন করে, এমনকি দ্বিতীয় ইনপুট ভ্যালু (keyToDelete) এমন কী নির্দিষ্ট করলেও, যা নেই। অন্য সব ক্ষেত্রে এটি false রিটার্ন করে। তবে, এটি নিম্নলিখিত উপায়ে স্ট্যান্ডার্ড লাইব্রেরি ডিলিট অপারেটর থেকে আলাদা:

  • keyToDelete ডট-ডিলিমিটেড স্ট্রিং হতে পারে না যা নেস্টেড কী নির্দিষ্ট করে।
  • অ্যারে থেকে এলিমেন্ট সরানোর জন্য delete() ব্যবহার করা যাবে না।
  • গ্লোবাল স্কোপ থেকে কোনও প্রপার্টি সরানোর জন্য delete() ব্যবহার করা যাবে না।

সিনট্যাক্স

Object.keys(objectInput)
Object.values(objectInput)
Object.entries(objectInput)
Object.freeze(objectInput)
Object.delete(objectInput, keyToDelete)

প্যারামিটার

Object.keys

প্যারামিটার ধরন বিবরণ
objectInput যেকোনও যে অবজেক্টের কী গণনা করতে হবে। ইনপুট কোনও অবজেক্ট না হলে, এটি একটি অবজেক্টে জোরপূর্বক পরিবর্তন করা হবে।

Object.values

প্যারামিটার ধরন বিবরণ
objectInput যেকোনও যে অবজেক্টের মান গণনা করতে হবে। ইনপুট কোনও অবজেক্ট না হলে, এটি একটি অবজেক্টে জোরপূর্বক পরিবর্তন করা হবে।

Object.entries

প্যারামিটার ধরন বিবরণ
objectInput যেকোনও যে অবজেক্টের কী/ভ্যালু পেয়ার গণনা করতে হবে। ইনপুট যদি অবজেক্ট না হয়, তাহলে এটিকে অবজেক্টে পরিবর্তন করা হবে।

Object.freeze

প্যারামিটার ধরন বিবরণ
objectInput যেকোনও যে অবজেক্ট ফ্রিজ করতে হবে। ইনপুট কোনও অবজেক্ট না হলে, এটি ফ্রোজেন অবজেক্ট হিসেবে বিবেচিত হবে।

Object.delete

প্যারামিটার ধরন বিবরণ
objectInput যেকোনও যে অবজেক্টের 'কী' মুছে দিতে হবে।
keyToDelete স্ট্রিং মুছে ফেলার জন্য টপ-লেভেল কী।

উদাহরণ

const Object = require('Object');

// The keys of an object are enumerated in an array.
const keys = Object.keys({foo: 'bar'});

// The values of an object are enumerated in an array.
const values = Object.values({foo: 'bar'});

// The key/value pairs of an object are enumerated in an array.
const entries = Object.entries({foo: 'bar'});

// The input object is frozen.
const frozen = Object.freeze({foo: 'bar'});

// The key is removed from the input object.
const obj1 = {deleteme: 'value'};
Object.delete(obj1, 'deleteme');
// Only a top-level key can be specified as the key to delete.
const obj2 = {nested: {key: 'value'}};
Object.delete(obj2, 'nested.key'); // This has no effect.
Object.delete(obj2.nested, 'key'); // This deletes the nested key.

Promise

এমন একটি অবজেক্ট রিটার্ন করে যা প্রমিজের সাথে ইন্টার‍্যাক্ট করার পদ্ধতি প্রদান করে।

প্রমিস, জাভাস্ক্রিপ্ট প্রমিসের মতোই কাজ করে। প্রতিটি ইনস্ট্যান্সে তিনটি পদ্ধতি আছে যা একটি Promise রিটার্ন করে। এটি কোনও Promise সেটেল হলে আরও অ্যাকশন নেওয়ার অনুমতি দেয়:

  • .then() - সমাধান করা এবং বাতিল করা, দুই ধরনের কেসই ম্যানেজ করে। এটি প্যারামিটার হিসেবে দুটি কলব্যাক নেয়: একটি সফল হওয়ার ক্ষেত্রে এবং একটি ব্যর্থ হওয়ার ক্ষেত্রে।
  • .catch() - শুধুমাত্র বাতিল করা কেসগুলি হ্যান্ডেল করে। প্যারামিটার হিসেবে একটি কলব্যাক নেয়।
  • .finally() - প্রমিস রিজলভ বা বাতিল করা হয়েছে কিনা তা নির্বিশেষে কোড রান করার উপায় প্রদান করে। প্যারামিটার হিসেবে একটি কলব্যাক নেয় যা কোনও আর্গুমেন্ট ছাড়াই ইনভোক করা হয়।

একটি ভেরিয়েবেল যা প্রমিজের সমাধান করা ভ্যালুর সমান প্রমিজ ফেরত দেয়, অথবা false যদি প্রমিজ বাতিল করে।

উদাহরণ

promise.then((resolvedValue) => {
    // Handles when promise resolves.
  }, (rejectedValue) => {
    // Handles when promise rejects.
  });
promise.catch((rejectedValue) => {
    // Handles when promise rejects.
  });
promise.finally(() => {
    // Runs regardless of whether or not the previous promise resolves or
    // rejects.
  });

Promise.all

একটি প্রমিস রিটার্ন করে যা:

  • সব ইনপুট সমাধান হয়ে গেলে সমাধান হয়, অথবা
  • যেকোনও ইনপুট বাতিল হলে বাতিল করে

সিনট্যাক্স

Promise.all(inputs);

প্যারামিটার

প্যারামিটার ধরন বিবরণ
inputs Array ভ্যালু বা প্রমিজের অ্যারে। ইনপুট যদি প্রমিস না হয়, তাহলে ইনপুটটি এমনভাবে পাস করা হয় যেন এটি প্রমিসের সমাধান করা ভ্যালু। ইনপুট অ্যারে না হলে সমস্যা দেখায়।

উদাহরণ

const Promise = require('Promise');
const sendHttpGet = require('sendHttpGet');

return Promise.all(['a', sendHttpGet('https://example.com')])
  .then((results) => {
    // results will equal: ['a', {statusCode: 200, headers: {}, body: ''}]
  });

সংশ্লিষ্ট অনুমতি

কোনওটিই নয়।

Promise.create

এমন একটি প্রমিস তৈরি করে যা কার্যকারিতার দিক থেকে জাভাস্ক্রিপ্ট প্রমিসের সমতুল্য।

সিনট্যাক্স

Promise.create(resolver);

প্যারামিটার

প্যারামিটার ধরন বিবরণ
resolver ফাংশন একটি ফাংশন যা দুটি ফাংশন সহ আহ্বান করা হয় -- সমাধান এবং প্রত্যাখ্যান। সংশ্লিষ্ট প্যারামিটারটি কল করা হলে, রিটার্ন করা প্রমিসটি সমাধান বা প্রত্যাখ্যান করা হবে। রিজলভার কোনও ফাংশন না হলে, এটি একটি সমস্যা দেখায়।

উদাহরণ

const Promise = require('Promise');

return Promise.create((resolve, reject) => {
  // Do asynchronous work that eventually calls resolve() or reject()
});

সংশ্লিষ্ট অনুমতি

কোনওটিই নয়।

Test API

Google Tag Manager-এ কাস্টম টেমপ্লেটের জন্য টেস্ট তৈরি করতে, এইসব API স্যান্ডবক্স করা JavaScript টেস্টের সাথে কাজ করে। এইসব টেস্ট API-এর জন্য require() স্টেটমেন্টের প্রয়োজন নেই। [কাস্টম টেমপ্লেট টেস্ট সম্পর্কে আরও জানুন]।


assertApi

একটি ম্যাচিং অবজেক্ট রিটার্ন করে যা প্রদত্ত API সম্পর্কে সাবলীলভাবে অ্যাসারশন করতে ব্যবহার করা যেতে পারে।

সিনট্যাক্স

assertApi(apiName)

প্যারামিটার

প্যারামিটার ধরন বিবরণ
apiName স্ট্রিং চেক করার জন্য API-এর নাম; require()-এ পাস করা স্ট্রিংয়ের মতো একই স্ট্রিং।

ম্যাচার

  • Subject.wasCalled()
  • Subject.wasNotCalled()
  • Subject.wasCalledWith(...expected)
  • Subject.wasNotCalledWith(...expected)

উদাহরণ

assertApi('sendPixel').wasCalled();
assertApi('getUrl').wasNotCalled();
assertApi('makeNumber').wasCalledWith('8');
assertApi('setInWindow').wasNotCalledWith('myVar', 'theWrongValue');

assertThat

assertThat API-কে Google-এর [Truth] লাইব্রেরির আদলে তৈরি করা হয়েছে। এটি এমন একটি অবজেক্ট রিটার্ন করে যা কোনও সাবজেক্টের ভ্যালু সম্পর্কে সাবলীলভাবে অ্যাসার্শন করতে ব্যবহার করা যেতে পারে। অ্যাসার্শন ব্যর্থ হলে পরীক্ষাটি অবিলম্বে বন্ধ হয়ে যাবে এবং এটিকে ব্যর্থ হিসেবে চিহ্নিত করা হবে। তবে, একটি টেস্টে ব্যর্থ হলে অন্য টেস্ট কেসে কোনও প্রভাব পড়বে না।

সিনট্যাক্স

assertThat(actual, opt_message)

প্যারামিটার

প্যারামিটার ধরন বিবরণ
actual যেকোনও ফ্লুয়েন্ট চেক করার জন্য যে ভ্যালু ব্যবহার করা হবে।
opt_message স্ট্রিং অ্যাসার্শন ব্যর্থ হলে প্রিন্ট করার জন্য ঐচ্ছিক মেসেজ।

ম্যাচার

ম্যাচার বিবরণ
isUndefined() নিশ্চিত করে যে সাবজেক্ট হল undefined।
isDefined() সাবজেক্ট undefined নয় বলে দাবি করে।
isNull() নিশ্চিত করে যে সাবজেক্ট হল null।
isNotNull() সাবজেক্ট null নয় বলে দাবি করে।
isFalse() নিশ্চিত করে যে সাবজেক্ট হল false।
isTrue() নিশ্চিত করে যে সাবজেক্ট হল true।
isFalsy() Asserts that the subject is falsy. মিথ্যা ভ্যালু হল undefined, null, false, NaN, 0, এবং '' (খালি স্ট্রিং)।
isTruthy() সাবজেক্টটি সত্য বলে দাবি করে। মিথ্যা ভ্যালু হল undefined, null, false, NaN, 0, এবং '' (খালি স্ট্রিং)।
isNaN() সাবজেক্টের ভ্যালু NaN কিনা তা অ্যাসার্ট করে।
isNotNaN() NaN ছাড়া সাবজেক্টের যেকোনও ভ্যালু আছে কিনা তা অ্যাসার্ট করে।
isInfinity() Asserts that the subject is positive or negative Infinity.
isNotInfinity() নিশ্চিত করে যে সাবজেক্ট হল পজিটিভ বা নেগেটিভ ইনফিনিটি ছাড়া অন্য যেকোনও ভ্যালু।
isEqualTo(expected) সাবজেক্টটি প্রদত্ত মানের সমান কিনা তা নিশ্চিত করে। এটি ভ্যালুর তুলনা, রেফারেন্সের তুলনা নয়। অবজেক্ট ও অ্যারের কন্টেন্ট রিকার্সিভভাবে তুলনা করা হয়।
isNotEqualTo(expected) সাবজেক্ট প্রদত্ত মানের সমান নয় বলে দাবি করে। এটি একটি ভ্যালু তুলনা, রেফারেন্স তুলনা নয়। অবজেক্ট ও অ্যারের কন্টেন্ট রিকার্সিভভাবে তুলনা করা হয়।
isAnyOf(...expected) সাবজেক্টটি প্রদত্ত ভ্যালুর মধ্যে একটির সমান কিনা তা নিশ্চিত করে। এটি একটি ভ্যালু তুলনা, রেফারেন্স তুলনা নয়। অবজেক্ট ও অ্যারের কন্টেন্ট রিকার্সিভভাবে তুলনা করা হয়।
isNoneOf(...expected) নিশ্চিত করে যে সাবজেক্ট প্রদত্ত কোনও ভ্যালুর সমান নয়। এটি ভ্যালুর তুলনা, রেফারেন্সের তুলনা নয়। অবজেক্ট ও অ্যারের কন্টেন্ট রিকার্সিভ পদ্ধতিতে তুলনা করা হয়।
isStrictlyEqualTo(expected) নিশ্চিত করে যে সাবজেক্টটি প্রদত্ত মানের সাথে সম্পূর্ণ সমান (===)।
isNotStrictlyEqualTo(expected) নিশ্চিত করে যে সাবজেক্ট প্রদত্ত ভ্যালুর সাথে কঠোরভাবে সমান (!==) নয়।
isGreaterThan(expected) অর্ডার করা তুলনার ক্ষেত্রে, সাবজেক্ট প্রদত্ত ভ্যালুর থেকে বেশি (>) হলে তা অ্যাসার্ট করে।
isGreaterThanOrEqualTo(expected) অর্ডার করা তুলনার ক্ষেত্রে সাবজেক্ট প্রদত্ত ভ্যালুর থেকে বেশি বা সমান (>=) বলে দাবি করে।
isLessThan(expected) অর্ডার করা তুলনার ক্ষেত্রে সাবজেক্ট প্রদত্ত ভ্যালুর চেয়ে কম (<) হলে তা অ্যাসার্ট করে।
isLessThanOrEqualTo(expected) নিশ্চিত করে যে সাবজেক্টটি প্রদত্ত ভ্যালুর থেকে কম বা সমান (<=) একটি অর্ডার করা তুলনার মধ্যে।
contains(...expected) নিশ্চিত করে যে সাবজেক্ট হল একটি অ্যারে বা স্ট্রিং যাতে যেকোনও ক্রমে প্রদত্ত সব ভ্যালু থাকে। এটি ভ্যালুর তুলনা, রেফারেন্সের তুলনা নয়। অবজেক্ট ও অ্যারের কন্টেন্ট পুনরাবৃত্তিমূলকভাবে তুলনা করা হয়।
doesNotContain(...expected) নিশ্চিত করে যে সাবজেক্টটি একটি অ্যারে বা স্ট্রিং যাতে প্রদত্ত মানগুলির কোনওটিই নেই। এটি ভ্যালুর তুলনা, রেফারেন্সের তুলনা নয়। অবজেক্ট ও অ্যারের কন্টেন্ট রিকার্সিভভাবে তুলনা করা হয়।
containsExactly(...expected) নিশ্চিত করে যে সাবজেক্ট হল এমন একটি অ্যারে যাতে প্রদত্ত সব ভ্যালু যেকোনও ক্রমে থাকে এবং অন্য কোনও ভ্যালু থাকে না। এটি ভ্যালুর তুলনা, রেফারেন্সের তুলনা নয়। অবজেক্ট ও অ্যারের কন্টেন্ট পুনরাবৃত্তিমূলকভাবে তুলনা করা হয়।
doesNotContainExactly(...expected) নিশ্চিত করে যে সাবজেক্ট হল এমন একটি অ্যারে যাতে যেকোনও ক্রমে প্রদত্ত ভ্যালু থেকে ভ্যালুর একটি ভিন্ন সেট রয়েছে। এটি ভ্যালুর তুলনা, রেফারেন্সের তুলনা নয়। অবজেক্ট ও অ্যারের কন্টেন্ট রিকার্সিভভাবে তুলনা করা হয়।
hasLength(expected) নিশ্চিত করে যে সাবজেক্টটি প্রদত্ত দৈর্ঘ্য সহ একটি অ্যারে বা স্ট্রিং। ভ্যালু অ্যারে বা স্ট্রিং না হলে অ্যাসার্শন সবসময় ব্যর্থ হয়।
isEmpty() Asserts that the subject is an array or string that is empty (length = 0). ভ্যালু অ্যারে বা স্ট্রিং না হলে অ্যাসার্শন সবসময় ব্যর্থ হয়।
isNotEmpty() নিশ্চিত করে যে সাবজেক্টটি একটি অ্যারে বা স্ট্রিং যা খালি নয় (দৈর্ঘ্য > ০)। ভ্যালুটি অ্যারে বা স্ট্রিং না হলে, অ্যাসার্শন সবসময় ব্যর্থ হয়।
isArray() সাবজেক্টের ধরন যে অ্যারে তা নিশ্চিত করে।
isBoolean() সাবজেক্টের ধরন যে বুলিয়ান তা অ্যাসার্ট করে।
isFunction() সাবজেক্টের ধরন যে একটি ফাংশন তা অ্যাসার্ট করে।
isNumber() নিশ্চিত করে যে সাবজেক্টের ধরন হল একটি সংখ্যা।
isObject() সাবজেক্টের ধরন যে অবজেক্ট তা নিশ্চিত করে।
isString() সাবজেক্টের ধরন যে স্ট্রিং তা নিশ্চিত করে।

উদাহরণ

assertThat(undefined).isUndefined();
assertThat(id, 'ID must be defined').isDefined();
assertThat(null).isNull();
assertThat(undefined).isNotNull();
assertThat(true).isTrue();
assertThat(false).isFalse();
assertThat(1).isTruthy();
assertThat('').isFalsy();
assertThat(1/0).isInfinity();
assertThat(0).isNotInfinity();
assertThat(-'foo').isNaN();
assertThat(100).isNotNaN();
assertThat(sentUrl).isEqualTo('https://endpoint.example.com/?account=12345');
assertThat(category).isNotEqualTo('premium');
assertThat(5).isAnyOf(1, 2, 3, 4, 5);
assertThat(42).isNoneOf('the question', undefined, 41.9);
assertThat('value').isStrictlyEqualTo('value');
assertThat('4').isNotStrictlyEqualTo(4);
assertThat(['a', 'b', 'c']).contains('a', 'c');
assertThat(['x', 'y', 'z']).doesNotContain('f');
assertThat(['1', '2', '3']).containsExactly('3', '2', '1');
assertThat(['4', '5']).doesNotContainExactly('4');
assertThat('a string').hasLength(8);
assertThat([]).isEmpty();
assertThat('another string').isNotEmpty();

fail

বর্তমান টেস্টে সাথে সাথে ব্যর্থ হয় এবং মেসেজ দেওয়া থাকলে সেটি প্রিন্ট করে।

সিনট্যাক্স

fail(opt_message);

প্যারামিটার

প্যারামিটার ধরন বিবরণ
opt_message স্ট্রিং সমস্যার মেসেজের ঐচ্ছিক টেক্সট।

উদাহরণ

fail('This test has failed.');

mock

mock API আপনাকে স্যান্ডবক্স করা API-এর আচরণ ওভাররাইড করার অনুমতি দেয়। টেমপ্লেট কোডে মক API ব্যবহার করা নিরাপদ, তবে এটি শুধুমাত্র টেস্ট মোডে কাজ করে। প্রতিটি টেস্ট চালানোর আগে মক রিসেট করা হয়।

সিনট্যাক্স

mock(apiName, returnValue);

প্যারামিটার

প্যারামিটার ধরন বিবরণ
apiName স্ট্রিং মক করার জন্য API-এর নাম; require()-এ পাস করা স্ট্রিংয়ের মতো একই স্ট্রিং
returnValue যেকোনও API-এর জন্য বা API-এর পরিবর্তে কল করা ফাংশনের জন্য যে ভ্যালু ফেরত দিতে হবে। returnValue যদি কোনও ফাংশন হয়, তাহলে Sandboxed API-এর পরিবর্তে সেই ফাংশন কল করা হয়; returnValue যদি ফাংশন ছাড়া অন্য কিছু হয়, তাহলে Sandboxed API-এর পরিবর্তে সেই ভ্যালু ফেরত দেওয়া হয়।

উদাহরণ

mock('encodeUri', "https://endpoint.example.com/?account=12345");
mock('sendPixel', function(url, onSuccess, onFailure) {
    onSuccess();
});

mockObject

mockObject API আপনাকে স্যান্ডবক্স করা API-এর আচরণ ওভাররাইড করতে দেয় যা একটি অবজেক্ট রিটার্ন করে। টেমপ্লেট কোডে API ব্যবহার করা নিরাপদ, তবে এটি শুধুমাত্র টেস্ট মোডে কাজ করে। প্রতিটি টেস্ট চালানোর আগে মক রিসেট করা হয়।

সিনট্যাক্স

mockObject(apiName, objectMock);

প্যারামিটার

প্যারামিটার ধরন বিবরণ
apiName স্ট্রিং মক করার জন্য API-এর নাম; require()-এ পাস করা স্ট্রিংয়ের মতো একই স্ট্রিং
objectMock অবজেক্ট API-এর জন্য বা API-এর পরিবর্তে কল করা ফাংশনের জন্য যে ভ্যালু ফেরত দিতে হবে। অবশ্যই একটি অবজেক্ট হতে হবে।

উদাহরণ

const storage = {};
let firestoreId = 1;

function asTestPromise(result) {
  return {
    then: (callback) => callback(result)
  };
}

mockObject('Firestore', {
  write: (collection, input) => {
    storage[collection + '/' + (++firestoreId)] = input;
    return asTestPromise(firestoreId);
  },
  read: (document) => asTestPromise({data: storage[document]})
});

runCode

প্রদত্ত ইনপুট ডেটা অবজেক্ট সহ বর্তমান টেস্ট এনভায়রনমেন্টে, টেমপ্লেটের জন্য কোড, অর্থাৎ কোড ট্যাবের কন্টেন্ট রান করে।

সিনট্যাক্স

runCode(data)

প্যারামিটার

প্যারামিটার ধরন বিবরণ
data অবজেক্ট টেস্টে ব্যবহার করার জন্য ডেটা অবজেক্ট।

রিটার্ন ভ্যালু

ভেরিয়েবেল টেমপ্লেটের জন্য ভেরিয়েবেলের ভ্যালু রিটার্ন করে; অন্য সব টেমপ্লেটের ধরনের জন্য undefined রিটার্ন করে।

উদাহরণ

runCode({field1: 123, field2: 'value'});