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

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

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

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

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

পূর্বশর্ত

নোড.জেএস

একটি গুগল চ্যাট অ্যাপ যা ইন্টারঅ্যাকশন ইভেন্ট গ্রহণ করে এবং সেগুলোর উত্তর দেয়। একটি HTTP সার্ভিস ব্যবহার করে ইন্টারেক্টিভ চ্যাট অ্যাপ তৈরি করতে, এই কুইকস্টার্টটি সম্পূর্ণ করুন।

পাইথন

একটি গুগল চ্যাট অ্যাপ যা ইন্টারঅ্যাকশন ইভেন্ট গ্রহণ করে এবং সেগুলোর উত্তর দেয়। একটি HTTP সার্ভিস ব্যবহার করে ইন্টারেক্টিভ চ্যাট অ্যাপ তৈরি করতে, এই কুইকস্টার্টটি সম্পূর্ণ করুন।

জাভা

একটি গুগল চ্যাট অ্যাপ যা ইন্টারঅ্যাকশন ইভেন্ট গ্রহণ করে এবং সেগুলোর উত্তর দেয়। একটি HTTP সার্ভিস ব্যবহার করে ইন্টারেক্টিভ চ্যাট অ্যাপ তৈরি করতে, এই কুইকস্টার্টটি সম্পূর্ণ করুন।

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

একটি গুগল চ্যাট অ্যাপ যা ইন্টারঅ্যাকশন ইভেন্ট গ্রহণ করে এবং সেগুলোর উত্তর দেয়। অ্যাপস স্ক্রিপ্টে একটি ইন্টারেক্টিভ চ্যাট অ্যাপ তৈরি করতে, এই কুইকস্টার্টটি সম্পূর্ণ করুন।

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

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

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

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

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

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

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

এই কন্টাক্ট ফর্মটি ব্যবহার করে এমন একটি চ্যাট অ্যাপের উদাহরণের জন্য, নিম্নলিখিত কোডটি দেখুন:

নোড.জেএস

node/contact-form-app/index.js
/**
 * The section of the contact card that contains the form input widgets. Used in a dialog and card message.
 * To add and preview widgets, use the Card Builder: https://addons.gsuite.google.com/uikit/builder
 */
const CONTACT_FORM_WIDGETS = [
  {
    "textInput": {
      "name": "contactName",
      "label": "First and last name",
      "type": "SINGLE_LINE"
    }
  },
  {
    "dateTimePicker": {
      "name": "contactBirthdate",
      "label": "Birthdate",
      "type": "DATE_ONLY"
    }
  },
  {
    "selectionInput": {
      "name": "contactType",
      "label": "Contact type",
      "type": "RADIO_BUTTON",
      "items": [
        {
          "text": "Work",
          "value": "Work",
          "selected": false
        },
        {
          "text": "Personal",
          "value": "Personal",
          "selected": false
        }
      ]
    }
  }
];

পাইথন

python/contact-form-app/main.py
# The section of the contact card that contains the form input widgets. Used in a dialog and card message.
# To add and preview widgets, use the Card Builder: https://addons.gsuite.google.com/uikit/builder
CONTACT_FORM_WIDGETS = [
  {
    "textInput": {
      "name": "contactName",
      "label": "First and last name",
      "type": "SINGLE_LINE"
    }
  },
  {
    "dateTimePicker": {
      "name": "contactBirthdate",
      "label": "Birthdate",
      "type": "DATE_ONLY"
    }
  },
  {
    "selectionInput": {
      "name": "contactType",
      "label": "Contact type",
      "type": "RADIO_BUTTON",
      "items": [
        {
          "text": "Work",
          "value": "Work",
          "selected": False
        },
        {
          "text": "Personal",
          "value": "Personal",
          "selected": False
        }
      ]
    }
  }
]

জাভা

java/contact-form-app/src/main/java/com/google/chat/contact/App.java
// The section of the contact card that contains the form input widgets. Used in a dialog and card message.
// To add and preview widgets, use the Card Builder: https://addons.gsuite.google.com/uikit/builder
final static private List<GoogleAppsCardV1Widget> CONTACT_FORM_WIDGETS = List.of(
  new GoogleAppsCardV1Widget().setTextInput(new GoogleAppsCardV1TextInput()
    .setName("contactName")
    .setLabel("First and last name")
    .setType("SINGLE_LINE")),
  new GoogleAppsCardV1Widget().setDateTimePicker(new GoogleAppsCardV1DateTimePicker()
    .setName("contactBirthdate")
    .setLabel("Birthdate")
    .setType("DATE_ONLY")),
  new GoogleAppsCardV1Widget().setSelectionInput(new GoogleAppsCardV1SelectionInput()
    .setName("contactType")
    .setLabel("Contact type")
    .setType("RADIO_BUTTON")
    .setItems(List.of(
      new GoogleAppsCardV1SelectionItem()
        .setText("Work")
        .setValue("Work")
        .setSelected(false),
      new GoogleAppsCardV1SelectionItem()
        .setText("Personal")
        .setValue("Personal")
        .setSelected(false)))));

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

apps-script/contact-form-app/contactForm.gs
/**
 * The section of the contact card that contains the form input widgets. Used in a dialog and card message.
 * To add and preview widgets, use the Card Builder: https://addons.gsuite.google.com/uikit/builder
 */
const CONTACT_FORM_WIDGETS = [
  {
    "textInput": {
      "name": "contactName",
      "label": "First and last name",
      "type": "SINGLE_LINE"
    }
  },
  {
    "dateTimePicker": {
      "name": "contactBirthdate",
      "label": "Birthdate",
      "type": "DATE_ONLY"
    }
  },
  {
    "selectionInput": {
      "name": "contactType",
      "label": "Contact type",
      "type": "RADIO_BUTTON",
      "items": [
        {
          "text": "Work",
          "value": "Work",
          "selected": false
        },
        {
          "text": "Personal",
          "value": "Personal",
          "selected": false
        }
      ]
    }
  }
];

তথ্য সংগ্রহের জন্য ব্যবহারযোগ্য ইন্টারেক্টিভ উইজেটের আরও উদাহরণের জন্য, “একটি ইন্টারেক্টিভ কার্ড বা ডায়ালগ ডিজাইন করুন” দেখুন।

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

যখনই ব্যবহারকারীরা কোনো বাটনে ক্লিক করেন, চ্যাট অ্যাপগুলো বাটনটির অবস্থানের ওপর নির্ভর করে একটি ইন্টারঅ্যাকশন ইভেন্ট পায়:

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

    আপনি common.formInputs. WIDGET_NAME অবজেক্টটি থেকে মানগুলো পুনরুদ্ধার করতে পারেন, যেখানে WIDGET_NAME হলো উইজেটটির জন্য আপনার নির্দিষ্ট করা name ফিল্ড। মানগুলো উইজেটটির জন্য একটি নির্দিষ্ট ডেটা টাইপ হিসেবে ফেরত আসে (যা একটি Inputs অবজেক্ট দ্বারা উপস্থাপিত হয়)।

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

    HTTP

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

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

    {
      "type": "CARD_CLICKED",
      "common": { "formInputs": {
        "contactName": { "": { "stringInputs": {
          "value": ["Kai 0"]
        }}},
        "contactBirthdate": { "": { "dateInput": {
          "msSinceEpoch": 1000425600000
        }}},
          "contactType": { "": { "stringInputs": {
          "value": ["Personal"]
        }}}
      }}
    }
    
  • বাটনটি হোমপেজে থাকলে, চ্যাট অ্যাপগুলো একটি SUBMIT_FORM ইন্টার‍্যাকশন ইভেন্ট পায়। এই ইন্টার‍্যাকশন ইভেন্টের পেলোডে একটি commonEventObject.formInputs অবজেক্ট থাকে, যেখানে ব্যবহারকারীর দেওয়া যেকোনো ভ্যালু অন্তর্ভুক্ত থাকে।

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

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

    HTTP

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

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

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

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

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

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

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

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

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

নোড.জেএস

node/contact-form-app/index.js
buttonList: { buttons: [{
  text: "Submit",
  onClick: { action: {
    function: "submitForm",
    parameters: [{
      key: "contactName", value: name }, {
      key: "contactBirthdate", value: birthdate }, {
      key: "contactType", value: type
    }]
  }}
}]}

পাইথন

python/contact-form-app/main.py
'buttonList': { 'buttons': [{
  'text': "Submit",
  'onClick': { 'action': {
    'function': "submitForm",
    'parameters': [{
      'key': "contactName", 'value': name }, {
      'key': "contactBirthdate", 'value': birthdate }, {
      'key': "contactType", 'value': type
    }]
  }}
}]}

জাভা

java/contact-form-app/src/main/java/com/google/chat/contact/App.java
new GoogleAppsCardV1Widget().setButtonList(new GoogleAppsCardV1ButtonList().setButtons(List.of(new GoogleAppsCardV1Button()
  .setText("Submit")
  .setOnClick(new GoogleAppsCardV1OnClick().setAction(new GoogleAppsCardV1Action()
    .setFunction("submitForm")
    .setParameters(List.of(
      new GoogleAppsCardV1ActionParameter().setKey("contactName").setValue(name),
      new GoogleAppsCardV1ActionParameter().setKey("contactBirthdate").setValue(birthdate),
      new GoogleAppsCardV1ActionParameter().setKey("contactType").setValue(type))))))))));

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

apps-script/contact-form-app/main.gs
buttonList: { buttons: [{
  text: "Submit",
  onClick: { action: {
    function: "submitForm",
    parameters: [{
      key: "contactName", value: name }, {
      key: "contactBirthdate", value: birthdate }, {
      key: "contactType", value: type
    }]
  }}
}]}

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

একটি ফর্ম জমা দেওয়ার প্রতিক্রিয়া জানান

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

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

নোড.জেএস

node/contact-form-app/index.js
const contactName = event.common.parameters["contactName"];
// Checks to make sure the user entered a contact name.
// If no name value detected, returns an error message.
const errorMessage = "Don't forget to name your new contact!";
if (!contactName && event.dialogEventType === "SUBMIT_DIALOG") {
  return { actionResponse: {
    type: "DIALOG",
    dialogAction: { actionStatus: {
      statusCode: "INVALID_ARGUMENT",
      userFacingMessage: errorMessage
    }}
  }};
}

পাইথন

python/contact-form-app/main.py
contact_name = event.get('common').get('parameters')["contactName"]
# Checks to make sure the user entered a contact name.
# If no name value detected, returns an error message.
error_message = "Don't forget to name your new contact!"
if contact_name == "" and "SUBMIT_DIALOG" == event.get('dialogEventType'):
  return { 'actionResponse': {
    'type': "DIALOG",
    'dialogAction': { 'actionStatus': {
      'statusCode': "INVALID_ARGUMENT",
      'userFacingMessage': error_message
    }}
  }}

জাভা

java/contact-form-app/src/main/java/com/google/chat/contact/App.java
String contactName = event.at("/common/parameters/contactName").asText();
// Checks to make sure the user entered a contact name.
// If no name value detected, returns an error message.
String errorMessage = "Don't forget to name your new contact!";
if (contactName.isEmpty() && event.at("/dialogEventType") != null && "SUBMIT_DIALOG".equals(event.at("/dialogEventType").asText())) {
  return new Message().setActionResponse(new ActionResponse()
    .setType("DIALOG")
    .setDialogAction(new DialogAction().setActionStatus(new ActionStatus()
      .setStatusCode("INVALID_ARGUMENT")
      .setUserFacingMessage(errorMessage))));
}

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

apps-script/contact-form-app/main.gs
const contactName = event.common.parameters["contactName"];
// Checks to make sure the user entered a contact name.
// If no name value detected, returns an error message.
const errorMessage = "Don't forget to name your new contact!";
if (!contactName && event.dialogEventType === "SUBMIT_DIALOG") {
  return { actionResponse: {
    type: "DIALOG",
    dialogAction: { actionStatus: {
      statusCode: "INVALID_ARGUMENT",
      userFacingMessage: errorMessage
    }}
  }};
}

একটি ডায়ালগ প্রসেস ও বন্ধ করতে, আপনাকে একটি ActionResponse অবজেক্ট রিটার্ন করতে হবে, যা নির্দিষ্ট করে দেয় যে আপনি একটি কনফার্মেশন মেসেজ পাঠাতে চান, মূল মেসেজ বা কার্ড আপডেট করতে চান, নাকি শুধু ডায়ালগটি বন্ধ করতে চান। ধাপগুলোর জন্য, “একটি ডায়ালগ বন্ধ করুন” দেখুন।

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

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

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