টেক্সট ইনপুট জন্য স্বয়ংসম্পূর্ণ পরামর্শ

টেক্সট ইনপুট উইজেট আপনার অ্যাড-অন পড়তে দেয় এবং ব্যবহারকারীদের দেওয়া টেক্সটে প্রতিক্রিয়া জানায়। ইনপুট পাঠ্যের জন্য ব্যবহারকারীদের স্বয়ংক্রিয় পরামর্শ প্রদান করতে আপনি এই উইজেটগুলি কনফিগার করতে পারেন।

প্রদত্ত পরামর্শগুলি আপনার প্রদান করা স্ট্রিংগুলির একটি স্ট্যাটিক তালিকা থেকে আসতে পারে। বিকল্পভাবে, আপনি প্রসঙ্গ থেকে পরামর্শ তৈরি করতে পারেন, যেমন ব্যবহারকারী ইতিমধ্যে উইজেটে টাইপ করেছেন এমন পাঠ্য।

পরামর্শ কনফিগার করা হচ্ছে

একটি পাঠ্য ইনপুটের জন্য পরামর্শ কনফিগার করার জন্য আপনাকে নিম্নলিখিতগুলি করতে হবে:

  • এর দ্বারা পরামর্শের একটি তালিকা তৈরি করুন:
    • একটি স্ট্যাটিক তালিকা তৈরি করা, এবং/অথবা
    • একটি কলব্যাক ফাংশন সহ একটি কর্ম সংজ্ঞায়িত করা যা প্রসঙ্গ থেকে গতিশীলভাবে সেই তালিকা তৈরি করে।
  • টেক্সট ইনপুট উইজেটে পরামর্শের তালিকা এবং/অথবা অ্যাকশন সংযুক্ত করুন।

আপনি যদি পরামর্শের একটি স্ট্যাটিক তালিকা এবং একটি ক্রিয়া উভয়ই প্রদান করেন, তাহলে ব্যবহারকারী অক্ষর প্রবেশ করা শুরু না করা পর্যন্ত অ্যাপ্লিকেশন UI স্ট্যাটিক তালিকা ব্যবহার করে, যেখানে কলব্যাক ফাংশন ব্যবহার করা হয় এবং স্ট্যাটিক তালিকা উপেক্ষা করা হয়।

স্ট্যাটিক পরামর্শ

পরামর্শের একটি স্ট্যাটিক তালিকা অফার করতে, আপনাকে শুধুমাত্র নিম্নলিখিতগুলি করতে হবে:

  1. একটি Suggestions অবজেক্ট তৈরি করুন।
  2. addSuggestion() বা addSuggestions() ব্যবহার করে প্রতিটি স্ট্যাটিক সাজেশন যোগ করুন।
  3. TextInput.setSuggestions() ব্যবহার করে উইজেটের সাথে Suggestions অবজেক্ট সংযুক্ত করুন।

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

পরামর্শ কর্ম

আপনি যদি একটি স্ট্যাটিক পরামর্শ তালিকা ব্যবহার না করেন, তাহলে আপনাকে অবশ্যই আপনার পরামর্শগুলিকে গতিশীলভাবে তৈরি করতে একটি ক্রিয়া সংজ্ঞায়িত করতে হবে৷ আপনি এই পদক্ষেপগুলি অনুসরণ করে এটি করতে পারেন:

  1. একটি Action অবজেক্ট তৈরি করুন এবং এটিকে আপনার সংজ্ঞায়িত একটি কলব্যাক ফাংশনের সাথে সংযুক্ত করুন।
  2. উইজেটের TextInput.setSuggestionsAction() ফাংশনকে কল করুন, এটিকে Action অবজেক্ট প্রদান করে।
  3. পরামর্শ তালিকা তৈরি করতে কলব্যাক ফাংশনটি প্রয়োগ করুন এবং একটি বিল্ট SuggestionsResponse অবজেক্ট ফেরত দিন।

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

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

উদাহরণ

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

// Create an input with a static suggestion list.
var textInput1 = CardService.newTextInput()
    .setFieldName('colorInput')
    .setTitle('Color choice')
    .setSuggestions(CardService.newSuggestions()
        .addSuggestion('Red')
        .addSuggestion('Yellow')
        .addSuggestions(['Blue', 'Black', 'Green']));

// Create an input with a dynamic suggestion list.
var action = CardService.newAction()
    .setFunctionName('refreshSuggestions');
var textInput2 = CardService.newTextInput()
    .setFieldName('emailInput')
    .setTitle('Email')
    .setSuggestionsAction(action);

// ...

/**
 *  Build and return a suggestion response. In this case, the suggestions
 *  are a list of emails taken from the To: and CC: lists of the open
 *  message in Gmail, filtered by the text that the user has already
 *  entered. This method assumes the Google Workspace
 *  add-on extends Gmail; the add-on only calls this method for cards
 *  displayed when the user has entered a message context.
 *
 *  @param {Object} e the event object containing data associated with
 *      this text input widget.
 *  @return {SuggestionsResponse}
 */
 function refreshSuggestions(e) {
   // Activate temporary Gmail scopes, in this case so that the
   // open message metadata can be read.
   var accessToken = e.gmail.accessToken;
   GmailApp.setCurrentMessageAccessToken(accessToken);

   var userInput = e && e.formInput['emailInput'].toLowerCase();
   var messageId = e.gmail.messageId;
   var message = GmailApp.getMessageById(messageId);

   // Combine the comma-separated returned by these methods.
   var addresses = message.getTo() + ',' + message.getCc();

   // Filter the address list to those containing the text the user
   // has already entered.
   var suggestionList = [];
   addresses.split(',').forEach(function(email) {
     if (email.toLowerCase().indexOf(userInput) !== -1) {
       suggestionList.push(email);
     }
   });
   suggestionList.sort();

   return CardService.newSuggestionsResponseBuilder()
       .setSuggestions(CardService.newSuggestions()
           .addSuggestions(suggestionList))
       .build();  // Don't forget to build the response!
 }

পরামর্শ এবং OnChangeAction()

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

  1. একটি পরামর্শ নির্বাচন করার পরে setOnChangeAction() হ্যান্ডলারটি কার্যকর করে।
  2. ব্যবহারকারী নির্বাচিত সাজেশন পরিবর্তন না করে এন্টার চাপলে (অথবা অন্যথায় টেক্সট ইনপুট ফোকাস হারায়) তাহলে setOnChangeAction() আবার ট্রিগার হয় না।
  3. setOnChangeAction() আবার ট্রিগার করে যদি ব্যবহারকারী, একটি পরামর্শ নির্বাচন করার পরে, এটি সম্পাদনা করে যাতে এটি তালিকার কোনো পরামর্শের সাথে আর মেলে না।
  4. যদি ব্যবহারকারী একটি পরামর্শ নির্বাচন না করে, তাহলে টেক্সট ইনপুট ফোকাস হারায় setOnChangeAction() ট্রিগার করে।