কোড রান করুন

Run code অ্যাকশনটি JavaScript এক্সিকিউট করে। আপনি ওয়ার্কফ্লোর আগের ধাপগুলো থেকে ডেটাকে Run code অ্যাকশনে ইনপুট হিসেবে পাঠাতে পারেন, এবং পরবর্তী ধাপগুলোতে ব্যবহার করার জন্য ভ্যালু রিটার্ন করতে পারেন।

ফিল্ড

Run code অ্যাকশনে নিম্নলিখিত ফিল্ডগুলো রয়েছে।

Run code অ্যাকশনে ব্যবহৃত ফিল্ড।
ফিল্ডবিবরণ
ইনপুটপ্রয়োজন। আগের ধাপগুলোর ডেটাকে Run code অ্যাকশনের ইনপুট হিসেবে ব্যবহার করার জন্য একটি GraphQL কোয়েরি।
আউটপুটপ্রয়োজন। অ্যাকশনের মাধ্যমে রিটার্ন করা ডেটার একটি উপস্থাপনা, যা GraphQL-এর স্কিমা ডেফিনিশন ল্যাঙ্গুয়েজ (SDL)-এ সংজ্ঞায়িত করা থাকে।
কোডপ্রয়োজন। সেই JavaScript যা Run code অ্যাকশনটি এক্সিকিউট করবে।

ইনপুট ডেটা

Run code অ্যাকশনের আগে হওয়া ধাপগুলো থেকে ইনপুট ডেটা পাঠানো যেতে পারে। এই ডেটা অন্তর্ভুক্ত করতে, আপনি ইনপুট ফিল্ডে একটি GraphQL কোয়েরি লিখতে পারেন। কোয়েরি থেকে রিটার্ন করা ডেটা export default দিয়ে চিহ্নিত ফাংশনে input আর্গুমেন্ট হিসেবে পাওয়া যাবে, যাকে প্রথামাফিক main বলা হয়।

ইনপুট কোয়েরিটি হলো Flow এনভায়রনমেন্ট ডেটার জন্য একটি কোয়েরি, এটি Shopify Admin API-এর কোনো কোয়েরি নয়। তাই আপনি ইনপুট ডেটাতে কোনো Shopify কোয়েরি ঢোকাতে পারবেন না। এছাড়া, Flow কোয়েরিতে edges এবং nodes পরিচালনা করে, তাই আপনার কোয়েরিতে সেগুলো বা অন্যান্য পেজিং সিনট্যাক্স যোগ করার প্রয়োজন নেই।

এমন একটি ইনপুটের উদাহরণ যা অর্ডারের নোট এবং লাইন আইটেমের টাইটেল পায়:

{
  order {
    note
    lineItems {
      title
    }
  }
}

এই ডেটাকে একটি input ভেরিয়েবলে রূপান্তর করা হয় যা কোডে ব্যবহার করা যেতে পারে:

export default function main(input) {
  // input.order.note
  // input.order.lineItems[0].title
}

ইনপুটগুলো ফাংশনের সিগনেচারে ডিস্ট্রাকচারও করা যেতে পারে:

export default function main({order}) {
  // order.note
  // order.lineItems[0].title
}

মেটাফিল্ড

Run code-এ একক মেটাফিল্ডের ভ্যালু অ্যাক্সেস করতে, আপনাকে প্রথমে Flow-এর এনভায়রনমেন্ট ডেটাতে মেটাফিল্ড যোগ করতে হবে। এটি Run code ছাড়া অন্য যেকোনো অ্যাকশন বা শর্তে (condition) করা যেতে পারে। উদাহরণস্বরূপ, আপনি একটি Log output অ্যাকশন যোগ করতে পারেন এবং তারপর মেটাফিল্ড যোগ করার জন্য নির্দেশিকা অনুসরণ করতে পারেন।

ওয়ার্কফ্লো এনভায়রনমেন্টে একটি মেটাফিল্ড যোগ করার পর, আপনি এটি Run code-এ অ্যাক্সেস করতে পারবেন। উদাহরণস্বরূপ, ধরা যাক আপনি giftMessage উপনামের সাথে একটি অর্ডার মেটাফিল্ড যোগ করেছেন। এরপর আপনি আপনার ইনপুট ক্যোয়ারিতে এটি অ্যাক্সেস করতে পারবেন:

{
  order {
    giftMessage {
      value
    }
  }
}

আউটপুট ডেটা

Run code অ্যাকশন কাস্টম ডেটা রিটার্ন করতে পারে। কোড যে ধরনের ডেটা রিটার্ন করবে তা সংজ্ঞায়িত করতে, Output ফিল্ড এবং GraphQL-এর স্কিমা ডেফিনিশন ল্যাঙ্গুয়েজ (SDL) ব্যবহার করুন। সমর্থিত আউটপুটের ধরনগুলো হলো String, Int, Float, Boolean এবং ID, যা প্রয়োজনীয় ফিল্ড, তালিকা এবং কাস্টম ডেটা কীভাবে নির্দিষ্ট করতে হয় তার জন্য SDL নির্দিষ্টকরণ অনুসরণ করে।

উদাহরণস্বরূপ, giftMessage নামের একটি স্ট্রিং এবং totalGifts নামের একটি নম্বর রিটার্ন করতে:

type Output {
  "The message to include in the gift"
  giftMessage: String!
  "The total number of gifts"
  totalGifts: Int!
}

মন্তব্যগুলো ঐচ্ছিক, তবে Flow UI-তে ডেটা বর্ণনা করতে ব্যবহৃত হবে। JavaScript কোডে এই ডেটা আউটপুট করতে, ধরনটির সাথে মিলে যায় এমন একটি অবজেক্ট রিটার্ন করুন:

export default function main(input) {
  // your code
  return {
    giftMessage: 'Hello',
    totalGifts: 1,
  };
}

আরও জটিল ডেটা রিটার্ন করার জন্য আপনি একটি কাস্টম ধরনও সংজ্ঞায়িত করতে পারেন। উদাহরণস্বরূপ, message নামের একটি স্ট্রিং এবং amount নামের একটি নম্বর রয়েছে এমন Gift নামক একটি ধরন রিটার্ন করতে:

type Output {
  "The gift to send"
  gifts: [Gift!]!
}

type Gift {
  "The message to include in the gift"
  message: String!
  "The total number of gifts"
  amount: Int!
}

এই অ্যাকশনের পরের ধাপগুলোতে এই ডেটা অ্যাক্সেস করতে, Run code নামের ভেরিয়েবল ব্যবহার করুন, যা Run code অ্যাকশন কনফিগারেশনে আপনার সংজ্ঞায়িত করা Output স্কিমা অনুযায়ী টাইপ করা হবে। আপনি শর্ত ও অ্যাকশন উভয় ক্ষেত্রেই এই ভেরিয়েবলটি ব্যবহার করতে পারবেন।

Console.log

ট্রাবলশুটিংয়ের উদ্দেশ্যে Flow-এর ওয়ার্কফ্লো রান লগে ডেটা আউটপুট করতে আপনি console.log ব্যবহার করতে পারেন। আউটপুটটি ওয়ার্কফ্লোর Run log-এ দৃশ্যমান হবে। উদাহরণস্বরূপ নিচেরগুলো বৈধ:

export default function main(input) {
  console.log('Hello, world!');
  //Hello, world!
  console.log(input);
  // { order: { note: 'Hello', lineItems: [ { title: 'World' } ] } }
  console.log(input.order, 'is the order');
  // { note: 'Hello', lineItems: [ { title: 'World' } ] }
  // is the order

  return {
    giftMessage: 'Hello',
    totalGifts: 1,
  };
}

আপনি Run code অ্যাকশনে console.info, console.error বা অন্যান্য ফাংশন ব্যবহার করতে পারবেন না।

উদাহরণ

কোড অ্যাকশনের উদাহরণগুলো Flow-এর উদাহরণ রিপোজিটরিতে পাওয়া যেতে পারে।

সীমাবদ্ধতা

Run code অ্যাকশনে নিম্নলিখিত সীমাবদ্ধতা রয়েছে:

  • Run code অ্যাকশনটি ECMA2020 JavaScript সমর্থন করে। এটি NodeJS বা CommonJS API-গুলি কিংবা মডিউল ইমপোর্ট করা সমর্থন করে না।
  • আপনার কোডটি HTTP কল (fetch) করতে পারবে না।
  • র‍্যান্ডম এবং ক্লক-ভিত্তিক ফাংশনগুলো ব্যবহার করা যাবে না। তারিখের ডেটা, যেমন scheduledAt বা createdAt, ইনপুট হিসেবে দেওয়া যেতে পারে।
  • Console.log ব্রাউজার কনসোলে লগ করে না।
  • পেলোড সাইজ সেভ করার জন্য, আউটপুট ডেটার পেলোড কেবল ডাউনস্ট্রিম পদক্ষেপে ব্যবহৃত ভেরিয়েবলগুলো রিটার্ন করে।
  • আপনি Run code অ্যাকশনে সরাসরি একটি মেটাফিল্ড উপনাম যোগ করতে পারবেন না। এটি সম্পন্ন করতে, এই পেজের মেটাফিল্ড বিভাগটি পর্যালোচনা করুন।

এছাড়াও, নিচের সীমাগুলো প্রয়োগ করা হয়:

  • ইনপুট ডেটার ক্যোয়ারি 5000 ক্যারেক্টারের মধ্যে সীমাবদ্ধ।
  • আউটপুট ডেটার স্কিমা 5000 ক্যারেক্টারের মধ্যে সীমাবদ্ধ।
  • আউটপুট ডেটার পেলোড এবং Console.log আউটপুট একত্রে 50KB-এর মধ্যে সীমাবদ্ধ।
  • কোড 50000 ক্যারেক্টারের চেয়ে বড় হতে পারবে না।
  • সর্বমোট এক্সিকিউশনের সময়কাল 5 সেকেন্ডের মধ্যে সীমাবদ্ধ।
  • মেমরির ব্যবহার 10MB-এর মধ্যে সীমাবদ্ধ।

টেমপ্লেট

নতুন অর্ডারে বিনামূল্যের (100% ডিসকাউন্টযুক্ত) আইটেম যোগ করুন

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

  • অর্ডারে সারপ্রাইজ হিসেবে বিনামূল্যের আইটেম যোগ করার মাধ্যমে গ্রাহকের সন্তুষ্টি বাড়ান।
  • অর্ডারে ফ্রি স্যাম্পল হিসেবে নতুন বা স্বল্প-পরিচিত পণ্য যোগ করার মাধ্যমে সেগুলোর প্রচার করুন।
  • বিনামূল্যের আইটেম অন্তর্ভুক্ত করা ও ডিসকাউন্ট দেওয়ার প্রক্রিয়া অটোমেট করার মাধ্যমে প্রচারণাকে স্ট্রিমলাইন করুন।

টেমপ্লেট দেখুন

নিষ্ক্রিয় রিটার্ন বাতিল করুন

নির্দিষ্ট সময়ের মধ্যে রিফান্ড বা রিস্টক করা হয়নি এমন একটি রিটার্ন স্বয়ংক্রিয়ভাবে বাতিল করুন। টেমপ্লেট দেখুন

Run code অ্যাকশন ব্যবহার করে প্রিফিক্স থাকা ট্যাগগুলোকে পণ্যের মেটাফিল্ডে কনভার্ট করুন

এই ওয়ার্কফ্লোটি 'color:'-এর মতো প্রিফিক্স দিয়ে শুরু হওয়া ট্যাগগুলোকে নেয় এবং সেগুলোকে একটি পণ্যের মেটাফিল্ড তালিকায় যোগ করে। এটি ট্যাগ ও মেটাফিল্ড তালিকায় থাকা বিদ্যমান আইটেমগুলো পার্স করার জন্য Run code অ্যাকশন ব্যবহার করে। একটি পণ্য তৈরি করার সময় ওয়ার্কফ্লোটি রান হয়, তবে এটি বিদ্যমান পণ্যের উপর ম্যানুয়ালি রান করা যেতে পারে। টেমপ্লেট দেখুন

কোনো গ্রাহক একটি পণ্যের একাধিক ভ্যারিয়েন্ট অর্ডার করলে বিজ্ঞপ্তি পাঠান

কোনো গ্রাহক একই পণ্যের একাধিক ভ্যারিয়েন্ট অর্ডার করলে একটি ইমেইল বিজ্ঞপ্তি গ্রহণ করুন। টেমপ্লেট দেখুন

অর্ডারে কোনো বান্ডেল থাকলে বিজ্ঞপ্তি পাঠান

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

সম্পর্কিত UTM ক্যাম্পেইন দিয়ে অর্ডারগুলোকে ট্যাগ করুন

যেকোনো সম্পর্কিত UTM ক্যাম্পেইনের নাম থাকা অর্ডারগুলোতে ট্যাগ যোগ করে। টেমপ্লেট দেখুন