মেসেজ UI প্রসারিত করুন

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

অ্যাড-অন মেসেজ UI অ্যাক্সেস করুন

একটি অ্যাড-অনের মেসেজ UI দেখার দুটি উপায় আছে। প্রথম উপায়টি হলো, অ্যাড-অনটি আগে থেকেই খোলা থাকা অবস্থায় একটি মেসেজ খোলা (উদাহরণস্বরূপ, Gmail ইনবক্স উইন্ডোতে অ্যাড-অনের হোমপেজ দেখার সময়)। দ্বিতীয় উপায়টি হলো, একটি মেসেজ দেখার সময় অ্যাড-অনটি চালু করা।

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

একটি মেসেজ অ্যাড-অন তৈরি করুন

এই সাধারণ ধাপগুলো অনুসরণ করে আপনি একটি অ্যাড-অনে মেসেজ কার্যকারিতা যোগ করতে পারেন:

  1. অ্যাড-অন স্ক্রিপ্ট প্রজেক্টের ম্যানিফেস্টে উপযুক্ত ফিল্ডগুলো যোগ করুন, যার মধ্যে মেসেজ কার্যকারিতার জন্য প্রয়োজনীয় স্কোপগুলোও অন্তর্ভুক্ত থাকবে। ম্যানিফেস্টে অবশ্যই একটি কন্ডিশনাল ট্রিগার ফিল্ড যোগ করবেন, যার unconditional ভ্যালু হবে {}
  2. একটি প্রাসঙ্গিক ট্রিগার ফাংশন তৈরি করুন যা ব্যবহারকারী কোনো মেসেজে অ্যাড-অন নির্বাচন করলে একটি মেসেজ UI তৈরি করে।
  3. ব্যবহারকারীর UI ইন্টারঅ্যাকশনের প্রতিক্রিয়া জানাতে প্রয়োজনীয় সংশ্লিষ্ট ফাংশনগুলো বাস্তবায়ন করুন।

প্রাসঙ্গিক ট্রিগার

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

আপনার অ্যাড-অনের প্রজেক্ট ম্যানিফেস্টে কনটেক্সচুয়াল ট্রিগারগুলো সংজ্ঞায়িত করা থাকে। ট্রিগার ডেফিনিশনটি Gmail-কে বলে দেয় কোন পরিস্থিতিতে কোন ট্রিগার ফাংশনটি চালু হবে। উদাহরণস্বরূপ, এই ম্যানিফেস্ট স্নিপেটটি একটি শর্তহীন ট্রিগার সেট করে, যা কোনো মেসেজ খোলা হলে onGmailMessageOpen() ট্রিগার ফাংশনটিকে কল করে:

{
  ...
  "addOns": {

    "common": {
      ...
    },
    "gmail": {
      "contextualTriggers": [
        {
          "unconditional": {},
          "onTriggerFunction": "onGmailMessageOpen"
        }
      ],
      ...
    },
    ...
  }
  ...
}

প্রাসঙ্গিক ট্রিগার ফাংশন

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

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

  // Activate temporary Gmail scopes, in this case to allow
  // the add-on to read message metadata and content.
  var accessToken = e.gmail.accessToken;
  GmailApp.setCurrentMessageAccessToken(accessToken);

  // Read message metadata and content. This requires the Gmail scope
  // https://www.googleapis.com/auth/gmail.addons.current.message.readonly.
  var messageId = e.gmail.messageId;
  var message = GmailApp.getMessageById(messageId);
  var subject = message.getSubject();
  var sender = message.getFrom();
  var body = message.getPlainBody();
  var messageDate = message.getDate();

  // Setting the access token with a gmail.addons.current.message.readonly
  // scope also allows read access to the other messages in the thread.
  var thread = message.getThread();
  var threadMessages = thread.getMessages();

  // Using this link can avoid the need to copy message or thread content
  var threadLink = thread.getPermalink();

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

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

  function onGmailMessageOpen(e) {
    // Activate temporary Gmail scopes, in this case to allow
    // message metadata to be read.
    var accessToken = e.gmail.accessToken;
    GmailApp.setCurrentMessageAccessToken(accessToken);

    var messageId = e.gmail.messageId;
    var message = GmailApp.getMessageById(messageId);
    var subject = message.getSubject();
    var sender = message.getFrom();

    // Create a card with a single card section and two widgets.
    // Be sure to execute build() to finalize the card construction.
    var exampleCard = CardService.newCardBuilder()
        .setHeader(CardService.newCardHeader()
            .setTitle('Example card'))
        .addSection(CardService.newCardSection()
            .addWidget(CardService.newDecoratedText()
                .setTopLabel('Subject')
                .setText(subject))
            .addWidget(CardService.newDecoratedText()
                .setTopLabel('From')
                .setText(sender)))
        .build();   // Don't forget to build the Card!
    return [exampleCard];
  }