কার্ড ও ডায়ালগ সংক্রান্ত সমস্যার সমাধান করা

এই নির্দেশিকায়, আপনি সম্মুখীন হতে পারেন এমন সাধারণ কার্ড-সম্পর্কিত সমস্যার বিবরণ এবং কীভাবে সেগুলি সমাধান করবেন তা বলা হয়েছে।


চ্যাট অ্যাপের জন্য মেসেজিং ও ইউজার ইন্টারফেস ডিজাইন ও প্রিভিউ করতে কার্ড বিল্ডার ব্যবহার করুন:

কার্ড বিল্ডার খুলুন

কার্ড সংক্রান্ত সমস্যা কীভাবে দেখানো হয়

কার্ড সংক্রান্ত সমস্যা বিভিন্নভাবে দেখা দিতে পারে:

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

আপনি যদি এই ধরনের আচরণ দেখতে পান, তাহলে এর অর্থ হল আপনার অ্যাপের কার্ডে কোনও সমস্যা আছে।

রেফারেন্সের জন্য: কাজ করে এমন, কোনও সমস্যা নেই এমন কার্ড মেসেজ ও ডায়ালগ

ভুল কার্ডের উদাহরণ পরীক্ষা করার আগে, প্রথমে এই কাজ করা কার্ড মেসেজ ও ডায়ালগ বিবেচনা করুন। প্রতিটি উদাহরণমূলক সমস্যা ও তার সমাধান বোঝাতে, এই কার্ডের JSON-এ সমস্যা যোগ করে তা পরিবর্তন করা হয়েছে।

ভুলমুক্ত কার্ড মেসেজ

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

ভুলমুক্ত ডায়ালগ

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

সমস্যা: কার্ডের কিছু অংশ দেখা যাচ্ছে না

কখনও কখনও কার্ড রেন্ডার হয়, কিন্তু আপনি যে কার্ডটি দেখতে পাবেন বলে আশা করেছিলেন তার কিছু অংশ দেখা যায় না; এর সম্ভাব্য কারণগুলি হল:

  • প্রয়োজনীয় JSON ফিল্ড নেই।
  • JSON ফিল্ডের বানান ভুল বা ক্যাপিটাল অক্ষর ভুল জায়গায় আছে।

কারণ: প্রয়োজনীয় JSON ফিল্ড নেই

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

এই সমস্যার সমাধান করতে, প্রয়োজনীয় JSON ফিল্ড যোগ করুন; এই উদাহরণে, title।

JSON ফিল্ডের প্রয়োজন আছে কিনা তা জানতে, Cards v2 রেফারেন্স ডকুমেন্টেশন দেখুন। এই উদাহরণে, title ফিল্ডের বিবরণ CardHeader-এ দেখুন।

এখানে দুটি উদাহরণ দেওয়া হল:

উদাহরণ ১: subtitle উল্লেখ করা হলেও প্রয়োজনীয় title বাদ দিলে, পুরো হেডারটি ফাঁকা দেখায়:

এই কার্ডের শীর্ষকে প্রয়োজনীয় ফিল্ড, শিরোনাম না থাকার কারণে তা দেখানো হচ্ছে না।
ছবি ১: এই কার্ডের হেডার দেখা যাচ্ছে না কারণ একটি প্রয়োজনীয় ফিল্ড, title, নেই।

ভুল কার্ড JSON স্নিপেট দেখুন

সমস্যা: header-এ title ফিল্ডটি নেই, এটি পূরণ করা বাধ্যতামূলক।

    . . .
    "header": {

            "subtitle": "Software Engineer"
          }
    . . .
    

সঠিক কার্ডের JSON স্নিপেট দেখুন

সমাধান করা হয়েছে: প্রয়োজনীয় ফিল্ড, title, header স্পেসিফিকেশনের অংশ।

    . . .
    "header": {
            "title": "Sasha",
            "subtitle": "Software Engineer"
          }
    . . .
    

উদাহরণ ২: subtitle, imageUrl, imageType ও imageAltText উল্লেখ করা হলেও, প্রয়োজনীয় title বাদ দিলে, ছবি যেমনটি আশা করা হয়েছিল তেমনটিই রেন্ডার হয়, কিন্তু সাবটাইটেল নয়:

এই কার্ডের শীর্ষকে প্রয়োজনীয় ফিল্ড, শিরোনাম না থাকার কারণে তা দেখানো হচ্ছে না।
ছবি ২: এই কার্ডের শীর্ষকে সাবটাইটেল দেখানো হচ্ছে না কারণ একটি প্রয়োজনীয় ফিল্ড, title, নেই, কিন্তু ছবি প্রত্যাশিতভাবেই রেন্ডার হচ্ছে।

ভুল কার্ড JSON স্নিপেট দেখুন

সমস্যা: header-এ title ফিল্ডটি নেই, এটি পূরণ করা বাধ্যতামূলক।

    . . .
    "header": {

            "subtitle": "Software Engineer",
            "imageUrl":
            "https://developers.google.com/chat/images/quickstart-app-avatar.png",
            "imageType": "CIRCLE",
            "imageAltText": "Avatar for Sasha",
          }
    . . .
    

সঠিক কার্ডের JSON স্নিপেট দেখুন

সমাধান করা হয়েছে: প্রয়োজনীয় ফিল্ড, title, header স্পেসিফিকেশনের অংশ।

    . . .
    "header": {
            "title": "Sasha",
            "subtitle": "Software Engineer",
            "imageUrl":
            "https://developers.google.com/chat/images/quickstart-app-avatar.png",
            "imageType": "CIRCLE",
            "imageAltText": "Avatar for Sasha",
          }
    . . .
    

কারণ: JSON-এর বানান বা ক্যাপিটাল অক্ষর ভুল লেখা হয়েছে

এই সমস্যার উদাহরণে, কার্ড JSON-এ সমস্ত প্রয়োজনীয় ফিল্ড অন্তর্ভুক্ত থাকলেও, একটি ফিল্ড, imageUrl ভুলভাবে imageURL (বড় হাতের R বড় হাতের L) হিসেবে লেখা হয়েছে, যার ফলে সমস্যা হয়েছে: এটি যে ছবিটির দিকে নির্দেশ করছে সেটি রেন্ডার হচ্ছে না।

এই ধরনের সমস্যা সমাধান করতে, সঠিক JSON ফর্ম্যাটিং ব্যবহার করুন। এই ক্ষেত্রে, imageUrl সঠিক। সন্দেহ হলে, কার্ড রেফারেন্স ডকুমেন্টের সাথে কার্ড JSON মিলিয়ে দেখুন।

এই কার্ডের শীর্ষকে প্রয়োজনীয় ফিল্ড, শিরোনাম না থাকার কারণে তা দেখানো হচ্ছে না।
ছবি ৩: এই কার্ডের হেডার সাবটাইটেল দেখাচ্ছে না কারণ একটি প্রয়োজনীয় ফিল্ড, title, নেই, কিন্তু ছবি ঠিকমতোই রেন্ডার হচ্ছে।

ভুল কার্ড JSON স্নিপেট দেখুন

সমস্যা: imageURL ফিল্ডে বড় হাতের অক্ষর ভুলভাবে ব্যবহার করা হয়েছে। এটি imageUrl হওয়া উচিত।

    . . .
    "header": {
      "title": "Sasha",
      "subtitle": "Software Engineer",
      "imageURL":
      "https://developers.google.com/chat/images/quickstart-app-avatar.png",
      "imageType": "CIRCLE",
      "imageAltText": "Avatar for Sasha",
    }
    . . .
    

সঠিক কার্ডের JSON স্নিপেট দেখুন

সমাধান করা হয়েছে: imageUrl ফিল্ডটি সঠিকভাবে বড় হাতের অক্ষরে লেখা হয়েছে।

    . . .
    "header": {
            "title": "Sasha",
            "subtitle": "Software Engineer",
            "imageUrl":
            "https://developers.google.com/chat/images/quickstart-app-avatar.png",
            "imageType": "CIRCLE",
            "imageAltText": "Avatar for Sasha",
          }
    . . .
    

সমস্যা: সম্পূর্ণ কার্ড দেখা যাচ্ছে না

কখনও কখনও কার্ডটিই দেখা যায় না; এর সম্ভাব্য কারণগুলি হল:

কারণ: ভুলভাবে buttonList বা cardFixedFooter উল্লেখ করা হয়েছে

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

এই সমস্যা সমাধান করতে, কার্ড রেফারেন্স ডকুমেন্টের সাথে কার্ড JSON চেক করুন। বিশেষ করে, যেকোনও ButtonList উইজেটকে ButtonList উইজেট গাইড-এর সাথে তুলনা করুন।

যেমন: ButtonList উইজেট নির্দেশিকায়, প্রথম বোতামে অসম্পূর্ণ onClick অ্যাকশন পাস করলে, পুরো কার্ডটি রেন্ডার করা যায় না।

ভুল কার্ড JSON স্নিপেট দেখুন

সমস্যা: onClick অবজেক্টে কোনও ফিল্ড নির্দিষ্ট করা নেই, তাই পুরো কার্ডটি দেখা যাচ্ছে না।

    . . .
    {
      "buttonList": {
        "buttons": [
          {
            "text": "Share",
            "onClick": {


              }
            }
          },
          {
            "text": "Edit",
            "onClick": {
              "action": {
                "function": "goToView",
                "parameters": [
                  {
                    "key": "viewType",
                    "value": "EDIT",
                  }
                ],
              }
            }
          },
        ],
      },
    }
    . . .
    

সঠিক কার্ড JSON স্নিপেট দেখুন

সমাধান করা হয়েছে: onClick অবজেক্টে এখন openLink ফিল্ড আছে, তাই কার্ডটি প্রত্যাশিতভাবেই দেখা যাচ্ছে।

    . . .
    {
      "buttonList": {
        "buttons": [
          {
            "text": "Share",
            "onClick": {
              "openLink": {
                "url": "https://example.com/share",
              }
            }
          },
          {
            "text": "Edit",
            "onClick": {
              "action": {
                "function": "goToView",
                "parameters": [
                  {
                    "key": "viewType",
                    "value": "EDIT",
                  }
                ],
              }
            }
          },
        ],
      },
    }
    . . .
    

সমস্যা: ডায়ালগ বন্ধ হয়ে যায়, আটকে যায় বা খোলে না

কোনও ডায়ালগ অপ্রত্যাশিতভাবে বন্ধ হয়ে গেলে, লোড না হলে বা না খুললে, এর সম্ভাব্য কারণ হল এর কার্ড ইন্টারফেসে কোনও সমস্যা।

এগুলি হল সবচেয়ে সাধারণ কারণ:

কারণ: CardFixedFooter-এর কোনও primaryButton নেই

CardFixedFooter উইজেট সহ ডায়ালগে, টেক্সট ও রঙ, দুটিই আছে এমন primaryButton নির্দিষ্ট করা প্রয়োজন। primaryButton বাদ দিলে বা ভুলভাবে সেট করলে, সম্পূর্ণ ডায়ালগটি আর দেখা যায় না।

এই সমস্যার সমাধান করতে, CardFixedFooter উইজেটে সঠিকভাবে নির্দিষ্ট করা primaryButton আছে কিনা তা নিশ্চিত করুন।

ভুল কার্ড JSON স্নিপেট দেখুন

সমস্যা: fixedFooter অবজেক্টে কোনও primaryButton ফিল্ড নির্দিষ্ট করা নেই, যার ফলে ডায়ালগ লোড বা খোলা যাচ্ছে না।

    . . .
    "fixedFooter": {

        "onClick": {
          . . .
      },
      "secondaryButton": {
        . . .
        }
      }
    }
    . . .
    

সঠিক কার্ড JSON স্নিপেট দেখুন

সমাধান করা হয়েছে: fixedFooter-এ এখন নির্দিষ্ট primaryButton ফিল্ড আছে, তাই ডায়ালগ প্রত্যাশা অনুযায়ী কাজ করে।

    . . .
    "fixedFooter": {
      "primaryButton": {
        "text": "Submit",
        "color": {
          "red": 0,
          "blue": 1,
          "green": 0
        },
        "onClick": {
          . . .
      },
      "secondaryButton": {
        . . .
        }
      }
    }
    . . .
    

কারণ: FixedFooter-এ ভুল onClick সেটিং

CardFixedFooter উইজেট সহ ডায়ালগে, যেকোনও বোতামে onClick সেটিং ভুলভাবে নির্দিষ্ট করা বা বাদ দেওয়া, যার ফলে ডায়ালগ বন্ধ হয়ে যায়, লোড হতে বা খুলতে পারে না।

এই সমস্যার সমাধান করতে, প্রতিটি বোতামে সঠিকভাবে নির্দিষ্ট করা onClick সেটিং আছে কিনা তা নিশ্চিত করুন।

ভুল কার্ড JSON স্নিপেট দেখুন

সমস্যা: primaryButton অবজেক্টে onClick ফিল্ডে `parameters` অ্যারেতে বানান ভুল আছে, এর ফলে ডায়ালগ লোড বা খুলতে পারছে না।

    . . .
    "fixedFooter": {
      "primaryButton": {
        "text": "Submit",
        "color": {
          "red": 0,
          "blue": 1,
          "green": 0
        },
        "onClick": {
          "action": {
            "function": "setLanguageType",
            "parrammetters": [
              {
                "key": "languageType",
                "value": "C++"
              }
            ]
          }
        }
      },
      "secondaryButton": {
        "text": "Cancel",
        "onClick": {
          "action": {
            "function": "reset"
          }
        }
      }
    }
    . . .
    

সঠিক কার্ড JSON স্নিপেট দেখুন

সমাধান করা হয়েছে: primaryButton অবজেক্টে `parameters` অ্যারে সহ একটি onClick ফিল্ড আছে, তাই ডায়ালগ প্রত্যাশা অনুযায়ী কাজ করে।

    . . .
    "fixedFooter": {
      "primaryButton": {
        "text": "Submit",
        "color": {
          "red": 0,
          "blue": 1,
          "green": 0
        },
        "onClick": {
          "action": {
            "function": "setLanguageType",
            "parameters": [
              {
                "key": "languageType",
                "value": "C++"
              }
            ]
          }
        }
      },
      "secondaryButton": {
        "text": "Cancel",
        "onClick": {
          "action": {
            "function": "reset"
          }
        }
      }
    }
    . . .
    

কারণ: TextInput-এর কোনও name নেই

কোনও ডায়ালগে name ফিল্ড বাদ দিয়ে TextInput উইজেট থাকলে, ডায়ালগটি প্রত্যাশিত আচরণ করে না। এটি বন্ধ হয়ে যেতে পারে, খুলতে পারে কিন্তু লোড নাও হতে পারে অথবা খুলতেই না পারে।

এই সমস্যার সমাধান করতে, প্রতিটি TextInput উইজেটে উপযুক্ত name ফিল্ড আছে কিনা তা নিশ্চিত করুন। কার্ডের প্রতিটি name ফিল্ড অনন্য কিনা তা নিশ্চিত করুন।

ভুল কার্ড JSON স্নিপেট দেখুন

সমস্যা: textInput অবজেক্টে কোনও name ফিল্ড নির্দিষ্ট করা নেই, এর ফলে ডায়ালগ বন্ধ হয়ে যায়, লোড করা যায় না বা খোলা যায় না।

    . . .
    {
      "textInput": {
        "label": "Name",
        "type": "SINGLE_LINE",

      }
    }
    . . .
    

সঠিক কার্ড JSON স্নিপেট দেখুন

সমাধান করা হয়েছে: textInput-এ এখন নির্দিষ্ট name ফিল্ড আছে, তাই ডায়ালগ প্রত্যাশা অনুযায়ী কাজ করে।

    . . .
    {
      "textInput": {
        "label": "Name",
        "type": "SINGLE_LINE",
        "name": "contactName"
      }
    }
    . . .
    

অ্যাসিঙ্ক্রোনাস অ্যাপ আর্কিটেকচারের ক্ষেত্রে ডায়ালগ খোলা, জমা দেওয়া বা বাতিল করার অ্যাকশন কাজ করে না

আপনার Chat অ্যাপ যদি ডায়ালগ নিয়ে কাজ করার সময় Could not load dialog. Invalid response returned by bot. Cloud Pub/Sub বা মেসেজ তৈরি করুন API পদ্ধতির মতো অ্যাসিঙ্ক্রোনাস আর্কিটেকচার ব্যবহার করার কারণে সমস্যার মেসেজ দেখায়, তাহলে এমন হতে পারে।

ডায়ালগ খোলা, জমা দেওয়া বা বাতিল করার জন্য RenderActions অবজেক্ট (যেমন, action.navigations-এর সাথে pushCard বা endNavigation) সহ Chat অ্যাপ থেকে সিঙ্ক্রোনাস উত্তর পেতে হবে। সেই অনুযায়ী, অ্যাসিঙ্ক্রোনাস আর্কিটেকচার দিয়ে তৈরি অ্যাপে ডায়ালগ কাজ করে না।

এর বিকল্প হিসেবে, ডায়ালগের পরিবর্তে কার্ড মেসেজ ব্যবহার করার কথা বিবেচনা করুন।

কার্ড ও ডায়ালগ সংক্রান্ত অন্যান্য সমস্যা

এই পৃষ্ঠায় বর্ণিত সমাধানগুলি আপনার অ্যাপে কার্ড সম্পর্কিত সমস্যার সমাধান না করলে, অ্যাপের সমস্যার লগ কোয়েরি করুন। লগ কোয়েরি করলে কার্ড JSON বা অ্যাপ কোডে কোনও সমস্যা থাকলে তা খুঁজে পাওয়া যায় এবং সমস্যা সমাধানের জন্য লগগুলিতে বর্ণনামূলক সমস্যার মেসেজ থাকে।

Google Chat অ্যাপ সংক্রান্ত সমস্যার সমাধান করার ব্যাপারে সাহায্য পেতে, Google Chat অ্যাপ সংক্রান্ত সমস্যার সমাধান করা এবং Chat অ্যাপ ডিবাগ করা দেখুন।

অ্যাড-অন নয় এমন চ্যাট অ্যাপ: কার্ড ও ডায়ালগ সংক্রান্ত সমস্যার সমাধান করা

Google Workspace অ্যাড-অন নয় এমন Chat অ্যাপের ক্ষেত্রে নিম্নলিখিত ডকুমেন্টেশন প্রযোজ্য। অ্যাড-অন নয় এমন কোনও Chat অ্যাপ মাইগ্রেট করতে, Chat অ্যাপকে Google Workspace অ্যাড-অনে কনভার্ট করুন লিঙ্ক দেখুন।

অ্যাড-অন নয় এমন চ্যাট অ্যাপের ক্ষেত্রে, জমা দেওয়া বা বাতিল করার জন্য ডায়ালগ সিঙ্ক্রোনাস ActionResponse DialogEventType প্রয়োজন।