Google Chat ব্যবহারকারীদের কাছ থেকে তথ্য সংগ্রহ ও প্রক্রিয়া করুন

এই নির্দেশিকাটি বর্ণনা করে যে কীভাবে Google Chat অ্যাপগুলি কার্ড-ভিত্তিক ইন্টারফেসে ফর্ম ইনপুট তৈরি করে ব্যবহারকারীদের কাছ থেকে তথ্য সংগ্রহ এবং প্রক্রিয়া করতে পারে।

Google Chat-এ অ্যাড-অনগুলি ব্যবহারকারীদের কাছে Google Chat অ্যাপ হিসেবে দেখা যায়। আরও জানতে, এক্সটেন্ড Google চ্যাট ওভারভিউ দেখুন।

একটি ডায়ালগ যা বিভিন্ন ধরনের উইজেট সমন্বিত করে।
চিত্র 1 : একটি চ্যাট অ্যাপ যা যোগাযোগের তথ্য সংগ্রহ করার জন্য একটি ডায়ালগ খোলে।

চ্যাট অ্যাপগুলি নিম্নলিখিত উপায়গুলি সহ চ্যাটের মধ্যে বা বাইরে ক্রিয়া সম্পাদনের জন্য ব্যবহারকারীদের কাছ থেকে তথ্যের অনুরোধ করে:

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

পূর্বশর্ত

Node.js

একটি Google Workspace অ্যাড-অন যা Google Chat-এ কাজ করে। একটি তৈরি করতে, HTTP কুইকস্টার্ট সম্পূর্ণ করুন।

অ্যাপস স্ক্রিপ্ট

একটি Google Workspace অ্যাড-অন যা Google Chat-এ কাজ করে। একটি তৈরি করতে, Apps Script quickstart সম্পূর্ণ করুন।

কার্ড ব্যবহার করে ফর্ম তৈরি করুন

তথ্য সংগ্রহ করার জন্য, চ্যাট অ্যাপগুলি ফর্ম এবং তাদের ইনপুটগুলি ডিজাইন করে এবং সেগুলিকে কার্ডে তৈরি করে৷ ব্যবহারকারীদের কাছে কার্ড প্রদর্শন করতে, চ্যাট অ্যাপগুলি নিম্নলিখিত চ্যাট ইন্টারফেসগুলি ব্যবহার করতে পারে:

  • চ্যাট বার্তা যাতে এক বা একাধিক কার্ড থাকে।
  • ডায়ালগ , যা কার্ড যা বার্তা এবং হোমপেজ থেকে একটি নতুন উইন্ডোতে খোলে।

চ্যাট অ্যাপগুলি নিম্নলিখিত উইজেটগুলি ব্যবহার করে কার্ডগুলি তৈরি করতে পারে:

  • ফর্ম ইনপুট উইজেট যা ব্যবহারকারীদের কাছ থেকে তথ্যের জন্য অনুরোধ করে। ঐচ্ছিকভাবে, আপনি ইনপুট উইজেট গঠনে বৈধতা যোগ করতে পারেন, যাতে ব্যবহারকারীরা তথ্য সঠিকভাবে ইনপুট এবং ফর্ম্যাট করে তা নিশ্চিত করতে পারেন। চ্যাট অ্যাপগুলি নিম্নলিখিত ফর্ম ইনপুট উইজেটগুলি ব্যবহার করতে পারে:

    • ফ্রি-ফর্ম বা প্রস্তাবিত পাঠ্যের জন্য পাঠ্য ইনপুট ( textInput )।
    • নির্বাচন ইনপুট ( selectionInput ) হল নির্বাচনযোগ্য UI উপাদান যেমন চেকবক্স, রেডিও বোতাম এবং ড্রপ-ডাউন মেনু। সিলেকশন ইনপুট উইজেটগুলি Google Workspace ডেটা (যেমন চ্যাট স্পেস) বা ডায়নামিক ডেটা সোর্স থেকে আইটেমগুলিকে সাজেস্ট করতে পারে। বিশদ বিবরণের জন্য, একটি বহুনির্বাচন মেনু যুক্ত করুন নিম্নলিখিত বিভাগটি দেখুন।

    • তারিখ এবং সময় এন্ট্রির জন্য তারিখ সময় পিকার ( dateTimePicker )।

  • একটি বোতাম উইজেট যাতে ব্যবহারকারীরা কার্ডে যে মানগুলি ইনপুট করেছেন তা জমা দিতে পারে৷ একজন ব্যবহারকারী বোতামটি ক্লিক করার পরে, চ্যাট অ্যাপটি তার প্রাপ্ত তথ্যগুলিকে প্রক্রিয়া করতে পারে৷

নিম্নলিখিত উদাহরণে, একটি কার্ড একটি পাঠ্য ইনপুট, তারিখ সময় পিকার এবং নির্বাচন ইনপুট ব্যবহার করে যোগাযোগের তথ্য সংগ্রহ করে:

ইন্টারেক্টিভ উইজেটগুলির আরও উদাহরণের জন্য যা আপনি তথ্য সংগ্রহ করতে ব্যবহার করতে পারেন, Google Chat API ডকুমেন্টেশনে একটি ইন্টারেক্টিভ কার্ড ডিজাইন বা ডায়ালগ দেখুন।

একটি বহুনির্বাচন মেনু যোগ করুন

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

আপনি নিম্নলিখিত ডেটা উত্স থেকে একটি বহুনির্বাচন মেনুর জন্য আইটেমগুলি পূরণ করতে পারেন:

  • Google Workspace ডেটা , যার মধ্যে ব্যবহারকারী বা Chat স্পেস অন্তর্ভুক্ত থাকে যার ব্যবহারকারী একজন সদস্য। মেনু শুধুমাত্র একই Google Workspace সংস্থার আইটেমগুলিকে পূরণ করে।
  • বাহ্যিক তথ্য উত্স , যেমন একটি রিলেশনাল ডাটাবেস। উদাহরণস্বরূপ, আপনি একটি গ্রাহক সম্পর্ক ব্যবস্থাপনা (CRM) সিস্টেম থেকে বিক্রয় লিডের একটি তালিকা থেকে ব্যবহারকারীকে নির্বাচন করতে সাহায্য করার জন্য মাল্টিসিলেক্ট মেনু ব্যবহার করতে পারেন।

Google Workspace ডেটা সোর্স থেকে আইটেম পূরণ করুন

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

নিম্নলিখিত কোডটি Google Workspace ব্যবহারকারীদের একটি বহুনির্বাচিত মেনু দেখায়। ব্যবহারকারীদের পপুলেট করতে, নির্বাচন ইনপুট commonDataSource USER এ সেট করে:

JSON

{
  "selectionInput": {
    "name": "contacts",
    "type": "MULTI_SELECT",
    "label": "Selected contacts",
    "multiSelectMaxSelectedItems": 5,
    "multiSelectMinQueryLength": 1,
    "platformDataSource": {
      "commonDataSource": "USER"
    }
  }
}

নিম্নলিখিত কোড চ্যাট স্পেসগুলির একটি বহুনির্বাচিত মেনু দেখায়। স্পেস পূরণ করতে, নির্বাচন ইনপুট hostAppDataSource ক্ষেত্র নির্দিষ্ট করে। মাল্টিসিলেক্ট মেনুটি defaultToCurrentSpace true এ সেট করে, যা বর্তমান স্থানটিকে মেনুতে ডিফল্ট নির্বাচন করে তোলে:

JSON

{
  "selectionInput": {
    "name": "spaces",
    "type": "MULTI_SELECT",
    "label": "Selected contacts",
    "multiSelectMaxSelectedItems": 3,
    "multiSelectMinQueryLength": 1,
    "platformDataSource": {
      "hostAppDataSource": {
        "chatDataSource": {
          "spaceDataSource": {
            "defaultToCurrentSpace": true
          }
        }
      }
    }
  }
}

একটি বাহ্যিক তথ্য উৎস থেকে আইটেম পপুলেট

মাল্টিসিলেক্ট মেনুগুলি তৃতীয়-পক্ষ বা বাহ্যিক ডেটা উত্স থেকে আইটেমগুলিকে পপুলেট করতে পারে। একটি বাহ্যিক ডেটা উত্স ব্যবহার করার জন্য, আপনি SelectionInput উইজেটে externalDataSource ক্ষেত্রটি নির্দিষ্ট করুন যাতে এমন ফাংশন রয়েছে যা ডেটা উত্স থেকে আইটেমগুলিকে জিজ্ঞাসা করে এবং ফেরত দেয়৷

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

নিম্নলিখিত কোডটি একটি বহুনির্বাচন মেনু দেখায় যা একটি বহিরাগত ডেটা উত্স থেকে আইটেমগুলিকে জিজ্ঞাসা করে এবং পপুলেট করে:

JSON

{
  "selectionInput": {
    "name": "contacts",
    "type": "MULTI_SELECT",
    "label": "Selected contacts",
    "multiSelectMaxSelectedItems": 3,
    "multiSelectMinQueryLength": 1,
    "externalDataSource": { "function": "FUNCTION" },
    // Suggested items loaded by default.
    // The list is static here but it could be dynamic.
    "items": [FUNCTION]
  }
}

HTTP URL বা Apps Script ফাংশন নামের সাথে FUNCTION প্রতিস্থাপন করুন যা বহিরাগত ডাটাবেসকে জিজ্ঞাসা করে। একটি সম্পূর্ণ উদাহরণের জন্য যা দেখায় কিভাবে প্রস্তাবিত আইটেমগুলি ফেরত দিতে হয়, বিভাগটি দেখুন মাল্টিসিলেক্ট আইটেম সাজেস্ট করুন

ইন্টারেক্টিভ উইজেট থেকে ডেটা গ্রহণ করুন

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

আপনি commonEventObject.formInputs. WIDGET_NAME , যেখানে WIDGET_NAME হল name ক্ষেত্র যা আপনি উইজেটের জন্য নির্দিষ্ট করেছেন৷ মানগুলি উইজেটের জন্য একটি নির্দিষ্ট ডেটা টাইপ হিসাবে ফেরত দেওয়া হয়।

নিম্নলিখিত একটি ইভেন্ট অবজেক্টের একটি অংশ দেখায় যেখানে ব্যবহারকারী প্রতিটি উইজেটের জন্য মান ইনপুট করে:

{
  "commonEventObject": { "formInputs": {
    "contactName": { "stringInputs": {
      "value": ["Kai 0"]
    }},
    "contactBirthdate": { "dateInput": {
      "msSinceEpoch": 1000425600000
    }},
    "contactType": { "stringInputs": {
      "value": ["Personal"]
    }}
  }}
}

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

ফর্ম ইনপুট উইজেট ইনপুট ডেটার ধরন ইভেন্ট অবজেক্ট থেকে ইনপুট মান উদাহরণ মান
textInput stringInputs event.commonEventObject.formInputs.contactName.stringInputs.value[0] Kai O
selectionInput stringInputs প্রথম বা একমাত্র মান পেতে, event.commonEventObject.formInputs.contactType.stringInputs.value[0] Personal
dateTimePicker যেটি শুধুমাত্র তারিখগুলি গ্রহণ করে৷ dateInput event.commonEventObject.formInputs.contactBirthdate.dateInput.msSinceEpoch 1000425600000

চ্যাট অ্যাপ ডেটা পাওয়ার পরে, এটি নিম্নলিখিতগুলির যে কোনও একটি করতে পারে:

একাধিক নির্বাচন আইটেম প্রস্তাব

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

একটি মাল্টিসিলেক্ট মেনুতে আইটেমগুলিকে সাজেস্ট করতে এবং গতিশীলভাবে পপুলেট করতে, কার্ডের SelectionInput উইজেটকে অবশ্যই একটি ফাংশন নির্দিষ্ট করতে হবে যা বাহ্যিক ডেটা উৎসকে জিজ্ঞাসা করে । প্রস্তাবিত আইটেমগুলি ফেরত দিতে, ফাংশনটি অবশ্যই নিম্নলিখিতগুলি করতে হবে:

  1. একটি ইভেন্ট অবজেক্ট পরিচালনা করুন, যা ব্যবহারকারীরা মেনুতে টাইপ করলে চ্যাট অ্যাপটি গ্রহণ করে।
  2. ইভেন্ট অবজেক্ট থেকে, ব্যবহারকারী যে মানটি টাইপ করে তা পান, যা event.commonEventObject.parameters["autocomplete_widget_query"] ফিল্ডে উপস্থাপন করা হয়।
  3. ব্যবহারকারীকে পরামর্শ দেওয়ার জন্য এক বা একাধিক SelectionItems পেতে ব্যবহারকারীর ইনপুট মান ব্যবহার করে ডেটা উত্সটি জিজ্ঞাসা করুন৷
  4. একটি modifyCard অবজেক্টের সাথে RenderActions অ্যাকশন ফিরিয়ে দিয়ে প্রস্তাবিত আইটেমগুলি ফিরিয়ে দিন।

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

Node.js

/**
 * Google Cloud Function that responds to events sent from a
 * Google Chat space.
 *
 * @param {Object} req Request sent from Google Chat space
 * @param {Object} res Response to send back
 */
exports.selectionInput = function selectionInput(req, res) {
  if (req.method === 'GET' || !req.body.chat) {
    return res.send('Hello! This function is meant to be used ' +
        'in a Google Chat Space.');
  }
  // Stores the Google Chat event
  const chatEvent = req.body.chat;

  // Handle user interaction with multiselect.
  if(chatEvent.widgetUpdatedPayload) {
    return res.send(queryContacts(req.body));
  }
  // Replies with a card that contains the multiselect menu.
  return res.send({ hostAppDataAction: { chatDataAction: { createMessageAction: { message: {
    cardsV2: [{
      cardId: "contactSelector",
      card: { sections:[{ widgets: [{
        selectionInput: {
          name: "contacts",
          type: "MULTI_SELECT",
          label: "Selected contacts",
          multiSelectMaxSelectedItems: 3,
          multiSelectMinQueryLength: 1,
          externalDataSource: { function: "FUNCTION_URL" },
          // Suggested items loaded by default.
          // The list is static here but it could be dynamic.
          items: [getSuggestedContact("3")]
        }
      }]}]}
    }]
  }}}}});
};

/**
* Get contact suggestions based on text typed by users.
*
* @param {Object} event the event object that contains the user's query
* @return {Object} suggestions
*/
function queryContacts(event) {
  const query = event.commonEventObject.parameters["autocomplete_widget_query"];
  return { action: { modifyOperations: [{ updateWidget: { selectionInputWidgetSuggestions: { suggestions: [
    // The list is static here but it could be dynamic.
    getSuggestedContact("1"), getSuggestedContact("2"), getSuggestedContact("3"), getSuggestedContact("4"), getSuggestedContact("5")
  // Only return items based on the query from the user.
  ].filter(e => !query || e.text.includes(query)) }}}]}};
}

/**
 * Generate a suggested contact given an ID.
 *
 * @param {String} id The ID of the contact to return.
 * @return {Object} The contact formatted as a selection item in the menu.
 */
function getSuggestedContact(id) {
  return {
    value: id,
    startIconUri: "https://www.gstatic.com/images/branding/product/2x/contacts_48dp.png",
    text: "Contact " + id
  };
}

FUNCTION_URL HTTP এন্ডপয়েন্ট দিয়ে প্রতিস্থাপন করুন যা বহিরাগত ডেটা উৎসকে জিজ্ঞাসা করে।

অ্যাপস স্ক্রিপ্ট

/**
* Responds to a Message trigger in Google Chat.
*
* @param {Object} event the event object from Google Chat
* @return {Object} Response from the Chat app.
*/
function onMessage(event) {
  // Replies with a card that contains the multiselect menu.
  return { hostAppDataAction: { chatDataAction: { createMessageAction: { message: {
    cardsV2: [{
      cardId: "contactSelector",
      card: { sections:[{ widgets: [{
        selectionInput: {
          name: "contacts",
          type: "MULTI_SELECT",
          label: "Selected contacts",
          multiSelectMaxSelectedItems: 3,
          multiSelectMinQueryLength: 1,
          externalDataSource: { function: "queryContacts" },
          // Suggested items loaded by default.
          // The list is static here but it could be dynamic.
          items: [getSuggestedContact"3")]
        }
      }]}]}
    }]
  }}}}};
}

/**
* Get contact suggestions based on text typed by users.
*
* @param {Object} event the interactive event.
* @return {Object} suggestions
*/
function queryContacts(event) {
  const query = event.commonEventObject.parameters["autocomplete_widget_query"];
  return { action: { modifyOperations: [{ updateWidget: { selectionInputWidgetSuggestions: { suggestions: [
    // The list is static here but it could be dynamic.
    getSuggestedContact("1"), getSuggestedContact("2"), getSuggestedContact("3"), getSuggestedContact("4"), getSuggestedContact("5")
  // Only return items based on the query from the user.
  ].filter(e => !query || e.text.includes(query)) }}}]}};
}

/**
* Generate a suggested contact given an ID.
*
* @param {String} id The ID of the contact to return.
* @return {Object} The contact formatted as a selection item in the menu.
*/
function getSuggestedContact(id) {
  return {
    value: id,
    startIconUri: "https://www.gstatic.com/images/branding/product/2x/contacts_48dp.png",
    text: "Contact " + id
  };
}

অন্য কার্ডে ডেটা স্থানান্তর করুন

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

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

প্রাথমিক কার্ড থেকে ডেটা ইনপুট স্থানান্তর করতে, আপনি actionParameters সহ button উইজেট তৈরি করতে পারেন যাতে উইজেটের name এবং ব্যবহারকারীর ইনপুটগুলির মান থাকে, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে:

{
  "buttonList": { "buttons": [{
    "text": "Submit",
    "onClick": { "action": {
      "function": "submitForm",
      "parameters": [
        {
          "key": "WIDGET_NAME",
          "value": "USER_INPUT_VALUE"
        },
        // Can specify multiple parameters
      ]
    }}
  }]}
}

যেখানে WIDGET_NAME হল উইজেটের name এবং USER_INPUT_VALUE হল ব্যবহারকারী যা ইনপুট করে। উদাহরণস্বরূপ, একটি টেক্সট ইনপুট যা একজন ব্যক্তির নাম সংগ্রহ করে, উইজেটের নাম হল contactName এবং একটি উদাহরণ মান হল Kai O

যখন একজন ব্যবহারকারী বোতামে ক্লিক করেন, তখন আপনার চ্যাট অ্যাপ একটি ইভেন্ট অবজেক্ট পায় যেখান থেকে আপনি ডেটা গ্রহণ করতে পারেন।

একটি ফর্ম জমা সাড়া

একটি কার্ড বার্তা বা ডায়ালগ থেকে ডেটা পাওয়ার পরে, চ্যাট অ্যাপটি হয় প্রাপ্তি স্বীকার করে বা একটি ত্রুটি ফেরত দিয়ে প্রতিক্রিয়া জানায়।

নিম্নলিখিত উদাহরণে, একটি চ্যাট অ্যাপ একটি কার্ড মেসেজ থেকে জমা দেওয়া ফর্ম সফলভাবে পেয়েছে তা নিশ্চিত করতে একটি টেক্সট মেসেজ পাঠায়।

Node.js

/**
 * Google Cloud Function that handles all Google Workspace Add On events for
 * the contact manager app.
 *
 * @param {Object} req Request sent from Google Chat space
 * @param {Object} res Response to send back
 */
exports.contactManager = function contactManager(req, res) {
  const chatEvent = req.body.chat;
  const chatMessage = chatEvent.messagePayload.message;

  // Handle message payloads in the event object
  if(chatEvent.messagePayload) {
    return res.send(handleMessage(chatMessage, chatEvent.user));
  // Handle button clicks on the card
  } else if(chatEvent.buttonClickedPayload) {
    switch(req.body.commonEventObject.parameters.actionName) {
        case "openDialog":
            return res.send(openDialog());
        case "openNextCard":
            return res.send(openNextCard(req.body));
        case "submitForm":
            return res.send(submitForm(req.body));
    }
  }
};

/**
 * Submits information from a dialog or card message.
 *
 * @param {Object} event the interactive event with form inputs.
 * @return {Object} a message response that posts a private message.
 */
function submitForm(event) {
  const chatUser = event.chat.user;
  const contactName = event.commonEventObject.parameters["contactName"];

  return { hostAppDataAction: { chatDataAction: { createMessageAction: { message: {
    privateMessageViewer: chatUser,
    text: "✅ " + contactName + " has been added to your contacts."
  }}}}};
}

অ্যাপস স্ক্রিপ্ট

/**
 * Sends private text message that confirms submission.
 *
 * @param {Object} event the interactive event with form inputs.
 * @return {Object} a message response that posts a private message.
 */
function submitForm(event) {
  const chatUser = event.chat.user;
  const contactName = event.commonEventObject.parameters["contactName"];

  return { hostAppDataAction: { chatDataAction: { createMessageAction: { message: {
    privateMessageViewer: chatUser,
    text: "✅ " + contactName + " has been added to your contacts."
  }}}}};
}

একটি ডায়ালগ প্রক্রিয়া করতে এবং বন্ধ করতে, আপনি একটি RenderActions অবজেক্ট ফেরত দেন যা নির্দিষ্ট করে যে আপনি একটি নিশ্চিতকরণ বার্তা পাঠাতে চান, আসল বার্তা বা কার্ড আপডেট করতে চান, অথবা ডায়ালগটি বন্ধ করতে চান। পদক্ষেপের জন্য, একটি ডায়ালগ বন্ধ করুন দেখুন।

সমস্যা সমাধান

যখন একটি Google চ্যাট অ্যাপ বা কার্ড একটি ত্রুটি ফেরত দেয়, তখন চ্যাট ইন্টারফেস "কিছু ভুল হয়েছে" বলে একটি বার্তা দেখায়। অথবা "আপনার অনুরোধ প্রক্রিয়া করতে অক্ষম।" কখনও কখনও চ্যাট UI কোনও ত্রুটি বার্তা প্রদর্শন করে না, তবে চ্যাট অ্যাপ বা কার্ড একটি অপ্রত্যাশিত ফলাফল তৈরি করে; উদাহরণস্বরূপ, একটি কার্ড বার্তা প্রদর্শিত নাও হতে পারে৷

যদিও একটি ত্রুটি বার্তা চ্যাট UI-তে প্রদর্শিত নাও হতে পারে, বর্ণনামূলক ত্রুটি বার্তা এবং লগ ডেটা উপলব্ধ রয়েছে যাতে আপনি যখন চ্যাট অ্যাপগুলির জন্য ত্রুটি লগিং চালু থাকে তখন ত্রুটিগুলি ঠিক করতে সহায়তা করে৷ দেখা, ডিবাগিং এবং ত্রুটিগুলি সংশোধন করতে সহায়তার জন্য, Google Chat ত্রুটিগুলি সমস্যা সমাধান এবং ঠিক করুন দেখুন৷