ব্যবহারকারীর ইন্টার‍্যাকশন পাওয়া ও তার উত্তর দেওয়া

Google Chat-এ ব্যবহারকারীর ইন্টার‍্যাকশন কীভাবে আপনার Google Chat অ্যাপ পেতে ও উত্তর দিতে পারে তা এই পৃষ্ঠায় বর্ণনা করা হয়েছে।

Chat অ্যাপের জন্য ইন্টার‍্যাক্টিভ ইন্টারফেস তৈরি করতে, আপনি নিম্নলিখিত কম্পোনেন্ট ব্যবহার করেন:

  • ট্রিগার: Google Chat ব্যবহারকারীরা যেসব উপায়ে কোনও Chat অ্যাপ চালু করতে পারেন, যেমন, কোনও স্পেসে এটি যোগ করা বা সেটিতে মেসেজ পাঠানো।
  • ইভেন্ট অবজেক্ট: ট্রিগার বা UI ইন্টার‍্যাকশন থেকে Chat অ্যাপ যে ডেটা পায়।
  • অ্যাকশন: Chat অ্যাপ যেভাবে ইন্টার‍্যাকশনে উত্তর দিতে পারে, যেমন মেসেজ পাঠানো বা কার্ড-ভিত্তিক ইউজার ইন্টারফেস দেখানো।
'স্পেসে যোগ করা হয়েছে' ট্রিগার থেকে Chat অ্যাপ একটি ইভেন্ট অবজেক্ট পায়
ছবি ১: কোনও ব্যবহারকারী স্পেসে Chat অ্যাপ যোগ করলে, স্পেসে যোগ করা হয়েছে ট্রিগার ফায়ার হয় এবং একটি ইভেন্ট অবজেক্ট পাঠায়। মেসেজের মাধ্যমে উত্তর দিতে, Chat অ্যাপ ইভেন্ট অবজেক্ট ম্যানেজ করে এবং মেসেজ তৈরি করে এমন অ্যাকশন রিটার্ন করে।

চ্যাট অ্যাপ নিম্নলিখিত উপায়ে ইন্টারফেস তৈরি ও দেখাতে পারে:

  • মেসেজ যাতে টেক্সট, স্ট্যাটিক বা ইন্ট্যার‍্যাক্টিভ কার্ড ও অ্যাক্সেসরি বোতাম থাকতে পারে।
  • হোমপেজ (অ্যাপ হোম) যা Chat অ্যাপের সাথে ১:১ সরাসরি মেসেজের হোম ট্যাবে দেখা যায়।
  • ডায়ালগ, যা নতুন উইন্ডোতে খোলে এমন কার্ড এবং সাধারণত ব্যবহারকারীদের তথ্য জমা দিতে প্রম্পট করে।
  • লিঙ্ক প্রিভিউ, যা হল এমন কার্ড যা কোনও এক্সটার্নাল পরিষেবা সম্পর্কে তথ্য প্রিভিউ করে।

পূর্বশর্ত

ব্যবহারকারীর ইন্টার‍্যাকশন কীভাবে কাজ করে

কোনও ব্যবহারকারী Chat অ্যাপের সাথে ইন্টার‍্যাক্ট করলে, Google Chat কনফিগার করা ট্রিগার ইনভোক করে এবং আপনার Chat অ্যাপের এন্ডপয়েন্ট বা ফাংশনে একটি ইভেন্ট অবজেক্ট পাঠায়। আপনার Chat অ্যাপ ইভেন্ট অবজেক্ট প্রসেস করে এবং ৩০ সেকেন্ডের মধ্যে সিঙ্ক্রোনাস অ্যাকশন রিটার্ন করতে অথবা Chat API ব্যবহার করে অ্যাসিঙ্ক্রোনাস উত্তর দিতে পারে।

নিচের ডায়াগ্রাম থেকে বোঝা যায় যে Google Chat অ্যাপ কীভাবে ব্যবহারকারীর ইন্ট্যার‍্যাকশন প্রসেস করে এবং উত্তর দেয়:

Google Chat অ্যাপ কীভাবে ব্যবহারকারীর ইন্টার‍্যাকশন প্রসেস করে তার আর্কিটেকচার।

ট্রিগার

ট্রিগার হল সেইসব নির্দিষ্ট উপায় যার মাধ্যমে ব্যবহারকারীরা চ্যাট UI ব্যবহার করে চ্যাট অ্যাপ চালু করেন, যেমন @mention বা অ্যাপ কমান্ড ব্যবহার করা।

নিচের সারণীতে চ্যাট ট্রিগার, তার বিবরণ এবং কীভাবে চ্যাট অ্যাপ সাধারণত উত্তর দেয় তা দেখানো হয়েছে:

Trigger বিবরণ সাধারণ উত্তর
স্পেসে যোগ করা হয়েছে

কোনও ব্যবহারকারী স্পেসে Chat অ্যাপ যোগ করলে অথবা কোনও Google Workspace অ্যাডমিনিস্ট্রেটর তার সংস্থায় ব্যবহারকারীদের জন্য সরাসরি মেসেজ স্পেসে Chat অ্যাপ ইনস্টল করলে। অ্যাডমিনিস্ট্রেটরদের ইনস্টল করা Chat অ্যাপ সম্পর্কে জানতে, এইসব দেখুন: আপনার ডোমেনে Marketplace অ্যাপ ইনস্টল করুন, যা Google Workspace অ্যাডমিন সহায়তা ডকুমেন্টেশনে আছে।

Chat অ্যাপ একটি অনবোর্ডিং মেসেজ পাঠায় যা এটি কী করে এবং স্পেসের ব্যবহারকারীরা কীভাবে এটির সাথে ইন্টার‍্যাক্ট করতে পারেন তা ব্যাখ্যা করে।
মেসেজ

কোনও ব্যবহারকারী নিম্নলিখিত পদ্ধতিগুলির মধ্যে একটিতে মেসেজের মাধ্যমে Chat অ্যাপের সাথে ইন্টার‍্যাক্ট করেন:

  • Chat অ্যাপের মাধ্যমে সরাসরি মেসেজ (DM) স্পেসে মেসেজ পাঠায়।
  • যেকোনও ধরনের স্পেসে Chat অ্যাপকে @উল্লেখ করা হয়।
  • লিঙ্ক প্রিভিউয়ের জন্য URL প্যাটার্নের সাথে ম্যাচ করে এমন লিঙ্ক সহ মেসেজ পাঠায়।
  • একটি selectionInput উইজেটের মাল্টি-সিলেক্ট মেনুতে টেক্সট টাইপ করে।
Chat অ্যাপটি মেসেজের কন্টেন্টের উপর ভিত্তি করে উত্তর দেয়। যেমন, একটি চ্যাট অ্যাপ মেসেজের মাধ্যমে উত্তর দেয়, লিঙ্ক প্রিভিউ কার্ড অ্যাটাচ করে অথবা একটি মাল্টি-সিলেক্ট মেনুতে আইটেম সাজেস্ট করে।
স্পেস থেকে সরানো হয়েছে

কোনও ব্যবহারকারী স্পেস থেকে Chat অ্যাপ সরিয়ে দিলে অথবা Google Workspace অ্যাডমিনিস্ট্রেটর তার সংস্থার কোনও ব্যবহারকারীর জন্য Chat অ্যাপ আনইনস্টল করলে।

অ্যাডমিনিস্ট্রেটর ইনস্টল করেছেন এমন Chat অ্যাপ ব্যবহারকারীরা সরাতে পারবেন না। কোনও ব্যবহারকারী আগে Chat অ্যাপ ইনস্টল করে থাকলে, Google Workspace অ্যাডমিনিস্ট্রেটর সেটি আনইনস্টল করার চেষ্টা করলেও, Chat অ্যাপ ইনস্টল করা থাকে।

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

ব্যবহারকারী কোনও চ্যাট অ্যাপ কমান্ড (যেমন, স্ল্যাশ কমান্ড, কুইক কমান্ড বা মেসেজ অ্যাকশন) ইনভোক করেন।

Chat অ্যাপ কমান্ডের উত্তর দেয়। যেমন, এটি কোনও মেসেজ দিয়ে উত্তর দেয় অথবা একটি ডায়ালগ খোলে।
অ্যাপ হোম

কোনও ব্যবহারকারী Chat অ্যাপের মাধ্যমে ১:১ সরাসরি মেসেজ (DM) স্পেসে হোম ট্যাব খোলেন অথবা হোমপেজ কার্ডে থাকা কোনও উইজেটের সাথে ইন্টার‍্যাক্ট করেন।

Chat অ্যাপ একটি RenderActions অবজেক্ট রিটার্ন করে যা একটি হোমপেজ কার্ড পুশ করে (pushCard) অথবা দেখানো হোমপেজ কার্ড আপডেট করে (updateCard)।

আপনি Chat API-এর কনফিগারেশন পৃষ্ঠায় Google Cloud কনসোলে এইসব ট্রিগারের জন্য এন্ডপয়েন্ট বা কলব্যাক ফাংশন কনফিগার করেন। ধাপে ধাপে নির্দেশের জন্য, Google Chat API কনফিগার করুন।

স্টার্টার প্রম্পট কনফিগার করা

আপনার অ্যাপের সাথে ১:১ সরাসরি মেসেজ খুললে, স্টার্টার প্রম্পট ব্যবহারকারীদের আপনার Chat অ্যাপের কার্যকারিতা ডিসকভার করতে সাহায্য করে। আপনি সর্বাধিক তিনটি স্টার্টার প্রম্পট কনফিগার করতে পারবেন।

স্টার্টার প্রম্পট যোগ ও কনফিগার করতে:

  1. Google Cloud Console-এ, Chat API-এর কনফিগারেশন পৃষ্ঠায় যান:

    Chat API কনফিগারেশন পৃষ্ঠায় যান

  2. ইন্টার‍্যাক্টিভ ফিচার বিকল্পের মধ্যে, স্টার্টার প্রম্পট খুঁজে নিয়ে প্রম্পট যোগ করুন বিকল্পে ক্লিক করুন।

  3. র‍্যাঙ্ক (১-৩) ফিল্ডে, ডিসপ্লে অর্ডার নির্দিষ্ট করতে 1 থেকে 3-এর মধ্যে কোনও সংখ্যা লিখুন।

  4. টাইপ বেছে নেওয়া বিকল্পের মধ্যে, প্রম্পট কীভাবে আচরণ করবে তা বেছে নিন:

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

    • আপনি টেক্সট প্রম্পট বেছে নিলে:

      1. শীর্ষক-এ, চিপে দেখানো প্রম্পটের শীর্ষক লিখুন (সর্বাধিক ৩০ অক্ষর)।
      2. প্রম্পট টেক্সটে, কম্পোজ বারে অটো-ফিল করা টেক্সট লিখুন (সর্বাধিক ৬০টি অক্ষর)।
      3. ঐচ্ছিক: অন্যান্য ভাষার ব্যবহারকারীদের জন্য স্থানীয় ভাষায় শীর্ষক ও টেক্সট যোগ করুন:
      4. স্থানীয় ভাষায় প্রম্পট বিকল্পের মধ্যে, একটি ভাষা যোগ করুন বিকল্পে ক্লিক করুন।
      5. ভাষা বিকল্পে গিয়ে ড্রপ-ডাউন থেকে একটি মানানসই ভাষা বেছে নিন।
      6. স্থানীয়কৃত শীর্ষক-এ, স্থানীয়কৃত শীর্ষক লিখুন (সর্বাধিক ৩০ অক্ষর)।
      7. স্থানীয়করণ করা প্রম্পট টেক্সটে, স্থানীয়করণ করা প্রম্পট টেক্সট (সর্বাধিক ৬০টি অক্ষর) লিখুন।
      8. প্রয়োজন অনুযায়ী আরও ভাষা যোগ করতে এই ধাপগুলি আবার অনুসরণ করুন।
    • আপনি Command prompt বেছে নিলে:

      1. স্ল্যাশ কমান্ড / কুইক কমান্ড বিকল্পে গিয়ে, ড্রপ-ডাউন থেকে কমান্ড বেছে নিন।
  6. হয়ে গেছে বিকল্পে ক্লিক করুন এবং তারপর পৃষ্ঠার নিচে সেভ করুন বিকল্পে ক্লিক করুন।

আপনার পরিষেবায় HTTP কল আবার করার বিষয়টি ম্যানেজ করা

আপনার পরিষেবায় HTTPS অনুরোধ ব্যর্থ হলে (যেমন, টাইম-আউট, সাময়িক নেটওয়ার্ক ব্যর্থতা বা 2xx নয় এমন HTTPS স্ট্যাটাস কোড), Google Chat কয়েক মিনিটের মধ্যে কয়েকবার ডেলিভার করার চেষ্টা করতে পারে (তবে এটি নিশ্চিত নয়)। এর ফলে, নির্দিষ্ট কিছু পরিস্থিতিতে Chat অ্যাপ একই ইভেন্ট কয়েকবার পেতে পারে। অনুরোধটি সফলভাবে সম্পূর্ণ হলেও, যদি একটি ভুল রেসপন্স পেলোড ফেরত আসে, তাহলে Google Chat অনুরোধটি আবার করার চেষ্টা করে না।

ইভেন্ট অবজেক্ট

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

ইভেন্ট অবজেক্ট পেলোড

প্রতিটি চ্যাট ইভেন্ট অবজেক্টে হোস্ট ও প্ল্যাটফর্মের বিবরণ (hostApp: "CHAT", clientPlatform, userLocale, userTimezone, parameters ও formInputs) সহ একটি commonEventObject এবং চ্যাট-নির্দিষ্ট প্রসঙ্গ সহ একটি chat অবজেক্ট থাকে:

  • অ্যাপ হোম ট্রিগারের (যখন কোনও ব্যবহারকারী Chat অ্যাপের সাথে ১:১ সরাসরি মেসেজে হোম ট্যাব খোলেন) জন্য, chat অবজেক্টে ইউনিয়ন payload ফিল্ড ছাড়াই chat.user ও chat.eventTime থাকে। হোমপেজ কার্ডে কোনও ব্যবহারকারী বোতামে ক্লিক করলে, ইভেন্ট অবজেক্টে chat.buttonClickedPayload-এর সাথে commonEventObject.parameters (এবং commonEventObject.formInputs যদি কার্ডে ফর্ম ইনপুট থাকে) অন্তর্ভুক্ত থাকে।
  • স্পেস ও মেসেজ ইন্টার‍্যাকশনের জন্য (স্পেসে যোগ করা হয়েছে, মেসেজ, স্পেস থেকে সরানো হয়েছে, অ্যাপ কমান্ড অথবা বোতাম ও উইজেট ইন্টার‍্যাকশন), chat অবজেক্টে chat.user, chat.space, chat.eventTime এবং সংশ্লিষ্ট ইন্টার‍্যাকশন পেলোড থাকে:
    • messagePayload: কোনও ব্যবহারকারী মেসেজ পাঠালে, এতে space, message এবং configCompleteRedirectUri থাকে।
    • addedToSpacePayload: Chat অ্যাপ কোনও স্পেসে যোগ করা হলে, এতে space, interactionAdd ও configCompleteRedirectUri থাকে।
    • removedFromSpacePayload: কোনও স্পেস থেকে Chat অ্যাপ সরিয়ে দেওয়া হলে, এতে space থাকে।
    • buttonClickedPayload: কোনও ব্যবহারকারী কার্ড বা ডায়ালগে কোনও বোতামে ক্লিক করলে, এতে space, message, isDialogEvent, এবং dialogEventType থাকে।
    • widgetUpdatedPayload: কোনও ব্যবহারকারী এক্সটার্নাল ডেটা সোর্স সহ মাল্টি-সিলেক্ট মেনুতে টাইপ করার মতো উইজেটের সাথে ইন্টার‍্যাক্ট করলে space থাকে।
    • appCommandPayload: কোনও ব্যবহারকারী অ্যাপ কমান্ড ইনভোক করলে space, message, appCommandMetadata, isDialogEvent, dialogEventType ও configCompleteRedirectUri থাকে।

Chat ও অন্যান্য Google Workspace অ্যাপ্লিকেশনের মধ্যে অ্যাড-অন ইভেন্ট অবজেক্ট সম্পর্কে জানতে, ইভেন্ট অবজেক্ট দেখুন।

উত্তর দেওয়া

এই বিভাগে ব্যাখ্যা করা হয়েছে যে কীভাবে Chat অ্যাপ ব্যবহারকারীর ইন্টার‍্যাকশনের প্রতি সিঙ্ক্রোনাস উত্তর দিতে অ্যাকশন ব্যবহার করে।

অ্যাকশনের মাধ্যমে উত্তর দিতে, Chat অ্যাপকে ৩০ সেকেন্ডের মধ্যে উত্তর দিতে হবে এবং যে স্পেসে ইন্ট্যার‍্যাকশন হয়েছে, উত্তরটি সেখানে প্রযোজ্য হতে হবে। এইসব সিঙ্ক্রোনাস উত্তরের জন্য যাচাইকরণ প্রয়োজন হয় না। আপনার Chat অ্যাপের ৩০ সেকেন্ডের বেশি সময় লাগলে অথবা স্পেসের বাইরে অ্যাক্ট করার প্রয়োজন হলে, যাচাইকরণ সেট-আপ করুন এবং Google Chat API ব্যবহার করে অ্যাসিঙ্ক্রোনাস পদ্ধতিতে উত্তর দিন।

ব্যবহারকারীর ইন্টার‍্যাকশনের উত্তর সিঙ্ক্রোনাসভাবে দিতে, আপনার Chat অ্যাপ ইনকামিং ইভেন্ট অবজেক্ট হ্যান্ডেল করে এবং নিম্নলিখিত JSON অবজেক্টের মধ্যে একটি রিটার্ন করে:

  • DataActions: তৈরি বা আপডেট করে চ্যাট মেসেজ (CreateMessageAction, UpdateMessageAction) অথবা লিঙ্ক প্রিভিউ (UpdateInlinePreviewAction) অ্যাটাচ করে, এর জন্য chatDataActionMarkup ব্যবহার করা হয়।
  • RenderActions: হোমপেজ বা ডায়ালগ (pushCard, updateCard, endNavigation: "CLOSE_DIALOG") তৈরি, আপডেট বা বন্ধ করে অথবা মাল্টিসিলেক্ট মেনুর (modifyCard) জন্য ডায়নামিক ইনপুট সাজেশন দেয়।
  • AuthorizationError: ব্যবহারকারীকে একটি প্রাথমিক অনুমোদন কার্ড (basic_authorization_prompt) প্রদান করে যাতে তিনি কোনও এক্সটার্নাল পরিষেবায় সাইন-ইন বা যাচাইকরণ করতে পারেন।

নিচের সারণী থেকে জানুন, কীভাবে Chat অ্যাপ অ্যাকশনের মাধ্যমে উত্তর দিতে পারে। চ্যাট অ্যাপ সরাসরি JSON অবজেক্ট রিটার্ন করতে পারে অথবা Apps Script-এর AddOnResponseService ও CardService ব্যবহার করে উত্তর তৈরি করতে পারে।

Chat অ্যাপের উত্তর ফেরানোর জন্য প্রয়োজনীয় অ্যাকশন (JSON) ফেরত পাঠানোর জন্য প্রয়োজনীয় অ্যাকশন (Apps Script)
মেসেজ পাঠান অথবা মেসেজ আপডেট করুন। DataActions (createMessageAction বা updateMessageAction) DataActionsResponse
Chat ব্যবহারকারীরা স্পেসে যে মেসেজ পাঠান সেগুলিতে লিঙ্কের প্রিভিউ। DataActions (updateInlinePreviewAction) DataActionsResponse
সরাসরি মেসেজের হোম ট্যাবে হোমপেজ রেন্ডার বা আপডেট করা। RenderActions (pushCard বা updateCard) ActionResponse
ডায়ালগ খুলুন, আপডেট করুন বা বন্ধ করুন। RenderActions (pushCard, updateCard বা endNavigation: "CLOSE_DIALOG") ActionResponse
কার্ড বা ডায়ালগ থেকে তথ্য সংগ্রহ করতে, ব্যবহারকারী মাল্টি-সিলেক্ট মেনুতে যা টাইপ করেন তার ভিত্তিতে বেছে নেওয়ার আইটেম সাজেস্ট করুন। RenderActions (modifyCard) ActionResponse
এক্সটার্নাল পরিষেবার জন্য কনফিগারেশন বা অনুমোদনের অনুরোধ করুন। AuthorizationError (basic_authorization_prompt) AuthorizationException

মেসেজ পাঠানোর মাধ্যমে উত্তর দিন

চ্যাট অ্যাপ নিম্নলিখিত ট্রিগার বা ইন্টার‍্যাকশনের যেকোনও একটির উত্তর মেসেজ দিয়ে দিতে পারে:

  • মেসেজ ট্রিগার, যেমন, ব্যবহারকারী @উল্লেখ করলে বা Chat অ্যাপে সরাসরি মেসেজ পাঠালে।
  • স্পেসে যোগ করা ট্রিগার, যেমন ব্যবহারকারীরা Google Workspace Marketplace থেকে Chat অ্যাপ ইনস্টল করলে বা কোনও স্পেসে যোগ করলে।
  • অ্যাপ কমান্ড ট্রিগার, যেমন ব্যবহারকারীরা স্ল্যাশ কমান্ড বা কুইক কমান্ড ইনভোক করলে।
  • মেসেজ বা ডায়ালগে কার্ড থেকে বোতামে ক্লিক করা। যেমন, ব্যবহারকারী তথ্য লিখে জমা দিন বিকল্পে ক্লিক করলে।

চ্যাট অ্যাপ মেসেজে নিম্নলিখিত যেকোনও একটি অন্তর্ভুক্ত করতে পারে:

  • হাইপারলিঙ্ক, @উল্লেখ ও ইমোজি সহ টেক্সট। মেসেজ ফর্ম্যাট করা দেখুন।
  • এক বা একাধিক কার্ড, যা মেসেজে দেখা যেতে পারে বা নতুন উইন্ডোতে ডায়ালগ হিসেবে খুলতে পারে। Google Chat অ্যাপের জন্য কার্ড তৈরি করা দেখুন।
  • এক বা একাধিক অ্যাক্সেসরি উইজেট, যা কোনও টেক্সট বা মেসেজে কার্ডের পরে দেখানো বোতাম।

মেসেজ দিয়ে উত্তর দিতে, DataActions-এর সাথে একটি CreateMessageAction অবজেক্ট রিটার্ন করুন:

{
  "hostAppDataAction": {
    "chatDataAction": {
      "createMessageAction": {
        "message": <var>MESSAGE</var>
      }
    }
  }
}

Chat API থেকে পাওয়া MESSAGE-এর পরিবর্তে Message রিসোর্স ব্যবহার করুন।

নিচের উদাহরণে, কোনও স্পেসে যোগ করা হলে, Chat অ্যাপ স্পেসে যোগ করা হয়েছে ট্রিগারকে DataActions দিয়ে উত্তর দেওয়ার মাধ্যমে একটি অনবোর্ডিং টেক্সট মেসেজ তৈরি করে ও পাঠায়:

Node.js

/**
 * Sends an onboarding message when the Chat app is added to a space.
 *
 * @param {Object} req The request object from Google Chat.
 * @param {Object} res The response object from the Chat app.
 */
exports.cymbalApp = function cymbalApp(req, res) {
  const chatEvent = req.body.chat;
  // Send an onboarding message when added to a Chat space
  if (chatEvent.addedToSpacePayload) {
    res.json({ hostAppDataAction: { chatDataAction: { createMessageAction: { message: {
      text: 'Hi, Cymbal at your service. I help you manage your calendar ' +
        'from Google Chat. Take a look at your schedule today by typing ' +
        '`/checkCalendar`, or schedule a meeting with `/scheduleMeeting`. ' +
        'To learn what else I can do, type `/help`.'
    }}}}});
  }
};

Python

from flask import Flask, request, json
app = Flask(__name__)

@app.route('/', methods=['POST'])
def cymbal_app():
  """Sends an onboarding message when the Chat app is added to a space.

  Returns:
    Mapping[str, Any]: The response object from the Chat app.
  """
  chat_event = request.get_json()["chat"]
  if "addedToSpacePayload" in chat_event:
    return json.jsonify({ "hostAppDataAction": { "chatDataAction": {
      "createMessageAction": { "message": {
        "text": 'Hi, Cymbal at your service. I help you manage your calendar ' +
        'from Google Chat. Take a look at your schedule today by typing ' +
        '`/checkCalendar`, or schedule a meeting with `/scheduleMeeting`. ' +
        'To learn what else I can do, type `/help`.'
      }}
    }}})

Java

@SpringBootApplication
@RestController
public class App {
  public static void main(String[] args) {
    SpringApplication.run(App.class, args);
  }

  /*
   * Sends an onboarding message when the Chat app is added to a space.
   *
   * @return The response object from the Chat app.
   */
  @PostMapping("/")
  @ResponseBody
  public GenericJson onEvent(@RequestBody JsonNode event) throws Exception {
    JsonNode chatEvent = event.at("/chat");
    if (!chatEvent.at("/addedToSpacePayload").isEmpty()) {
      return new GenericJson() { {
        put("hostAppDataAction", new GenericJson() { {
          put("chatDataAction", new GenericJson() { {
            put("createMessageAction", new GenericJson() { {
              put("message", new Message().setText(
                "Hi, Cymbal at your service. I help you manage your calendar " +
                "from Google Chat. Take a look at your schedule today by typing " +
                "`/checkCalendar`, or schedule a meeting with `/scheduleMeeting`. " +
                "To learn what else I can do, type `/help`."
              ));
            } });
          } });
        } });
      } };
    }
    return new GenericJson();
  }
}

Apps Script

/**
 * Sends an onboarding message when the Chat app is added to a space.
 *
 * @param {Object} event The event object from Google Chat.
 * @return {Object} Response from the Chat app.
 */
function onAddedToSpace(event) {
  return { hostAppDataAction: { chatDataAction: { createMessageAction: { message: {
    text: 'Hi, Cymbal at your service. I help you manage your calendar ' +
          'from Google Chat. Take a look at your schedule today by typing ' +
          '`/checkCalendar`, or schedule a meeting with `/scheduleMeeting`. ' +
          'To learn what else I can do, type `/help`.'
  }}}}};
}

কোড স্যাম্পেল থেকে নিম্নলিখিত টেক্সট মেসেজ পাওয়া যায়:

অনবোর্ডিং মেসেজের উদাহরণ।

মেসেজ আপডেট করা

এছাড়াও, চ্যাট অ্যাপ তাদের পাঠানো মেসেজ আপডেট করতে পারে। যেমন, কোনও ব্যবহারকারী ডায়ালগ জমা দেওয়ার পরে বা মেসেজে কার্ডের কোনও বোতামে ক্লিক করলে, কোনও চ্যাট অ্যাপ মেসেজ আপডেট করতে পারে।

ইন্টার‍্যাকশনের উত্তরে Chat অ্যাপ মেসেজ আপডেট করতে, DataActions-এর সাথে UpdateMessageAction রিটার্ন করুন:

{
  "hostAppDataAction": {
    "chatDataAction": {
      "updateMessageAction": {
        "message": <var>MESSAGE</var>
      }
    }
  }
}

Chat API থেকে পাওয়া MESSAGE-এর পরিবর্তে Message রিসোর্স ব্যবহার করুন।

এছাড়াও, চ্যাট অ্যাপ updateInlinePreviewAction ব্যবহার করে কোনও ব্যবহারকারীর পাঠানো মেসেজ আপডেট করে তাতে লিঙ্ক প্রিভিউ কার্ড অ্যাটাচ করতে পারে। আরও বিবরণের জন্য, লিঙ্কের প্রিভিউ দেখুন।

Google Chat API ব্যবহার করে অ্যাসিঙ্ক্রোনাস পদ্ধতিতে উত্তর দেওয়া

সিঙ্ক্রোনাস অ্যাকশন রিটার্ন করার পরিবর্তে, ইন্টার‍্যাকশনের উত্তর দিতে বা আগে থেকে মেসেজ পাঠানোর জন্য Chat অ্যাপকে Google Chat API কল করতে হতে পারে। যেমন, চ্যাট অ্যাপকে নিম্নলিখিত যেকোনও কাজ করতে Google Chat API কল করতে হবে:

  • ৩০ সেকেন্ড পরে কোনও ইন্টার‍্যাকশনের উত্তর দাও (যেমন, কোনও দীর্ঘক্ষণ ধরে চলা টাস্ক সম্পূর্ণ হওয়ার পরে)।
  • শিডিউল অনুযায়ী মেসেজ পাঠানো অথবা এক্সটার্নাল রিসোর্সে পরিবর্তন সম্পর্কে বিজ্ঞপ্তি পাঠানো।
  • যে স্পেসে ইন্টার‍্যাকশন হয়েছে তার বাইরে টাস্ক সম্পূর্ণ করা।
  • Chat-এ এমন টাস্ক পারফর্ম করুন যা সিঙ্ক্রোনাস অ্যাকশন হিসেবে উপলভ্য নয়, যেমন স্পেস তালিকাভুক্ত করা বা স্পেসে মেম্বার যোগ করা।
  • Chat ব্যবহারকারীর হয়ে টাস্ক পারফর্ম করা (এর জন্য ব্যবহারকারী যাচাইকরণ প্রয়োজন)।

৩০ সেকেন্ড পরে কোনও ইন্টার‍্যাকশনের উত্তর দেওয়ার সময়, ব্যবহারকারীকে দেখানো এরর মেসেজ এড়াতে, যেখানে বলা হয় যে আপনার Chat অ্যাপ উত্তর দিচ্ছে না, আপনাকে অবশ্যই ৩০ সেকেন্ডের মধ্যে ইভেন্ট অবজেক্ট পাওয়ার কথা স্বীকার করতে হবে। এটি করার জন্য একটি খালি উত্তর দিন:

Node.js

async function onEvent(req, res) {
  // Trigger asynchronous job that will respond using the Google Chat API.
  ...

  // Respond with an empty response to the Google Chat platform.
  return res.send({});
};

Python

def on_event(event) -> dict:
  # Trigger asynchronous job that will respond using the Google Chat API.
  ...

  // Respond with an empty response to the Google Chat platform.
  return {}

Java

public String onEvent(JsonNode event) {
  // Trigger asynchronous job that will respond using the Google Chat API.
  ...

  // Respond with an empty response to the Google Chat platform.
  return "{}";
}

Apps Script

function onEvent(event) {
  // Trigger asynchronous job that will respond using the Google Chat API.
  ...

  // Respond with an empty response to the Google Chat platform.
  return null;
}

Chat API ব্যবহার করে মেসেজ পাঠাতে, যাচাইকরণ সেট-আপ করুন এবং spaces.messages.create পদ্ধতি কল করুন। ধাপগুলি জানতে, মেসেজ পাঠান দেখুন। অতিরিক্ত Chat API পদ্ধতি ব্যবহার করার গাইড পেতে, Chat API ওভারভিউ দেখুন।

অ্যাড-অন নয় এমন চ্যাট অ্যাপ: ব্যবহারকারীর ইন্ট্যার‍্যাকশন গ্রহণ করা ও উত্তর দেওয়া

Google Workspace অ্যাড-অন নয় এমন চ্যাট অ্যাপ চ্যাট API ইন্টার‍্যাকশন ইভেন্ট (Event) পায়, তার পরিবর্তে Google Workspace অ্যাড-অন ইভেন্ট অবজেক্ট (EventObject) পায় না এবং অ্যাকশনের পরিবর্তে Message রিসোর্স রিটার্ন করে উত্তর দেয়।

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

ইন্টার‍্যাকশন ইভেন্টের ধরন

ব্যবহারকারীর ইন্টার‍্যাকশনের প্রতিটি ধরনের জন্য, Google Chat অ্যাড-অন নয় এমন Chat অ্যাপকে Event অবজেক্ট পাঠায়, যার ধরন eventType ফিল্ড দ্বারা দেখানো হয়:

ব্যবহারকারীর ইন্টার‍্যাকশন eventType অ্যাড-অন নয় এমন চ্যাট অ্যাপের থেকে পাওয়া সাধারণ উত্তর
কোনও ব্যবহারকারী Chat অ্যাপে মেসেজ করেন। যেমন, Chat অ্যাপকে @উল্লেখ করেন বা স্ল্যাশ কমান্ড ব্যবহার করেন। MESSAGE Chat অ্যাপটি মেসেজের কন্টেন্টের উপর ভিত্তি করে উত্তর দেয়। যেমন, Chat অ্যাপ /about স্ল্যাশ কমান্ডের উত্তর একটি মেসেজের মাধ্যমে দেয় যা Chat অ্যাপের করা যায় এমন টাস্ক ব্যাখ্যা করে।
কোনও ব্যবহারকারী স্পেসে Chat অ্যাপ যোগ করেন। ADDED_TO_SPACE Chat অ্যাপ একটি অনবোর্ডিং মেসেজ পাঠায় যা অ্যাপের কাজ এবং স্পেসের ব্যবহারকারীরা কীভাবে এটির সাথে ইন্টার‍্যাক্ট করতে পারবেন তা ব্যাখ্যা করে।
কোনও ব্যবহারকারী স্পেস থেকে Chat অ্যাপ সরিয়ে দেন। REMOVED_FROM_SPACE Chat অ্যাপ স্পেসের জন্য কনফিগার করা যেকোনও ইনকামিং বিজ্ঞপ্তি সরিয়ে দেয় (যেমন, কোনও ওয়েবহুক মুছে দেওয়া) এবং যেকোনও অভ্যন্তরীণ স্টোরেজ খালি করে দেয়।
কোনও ব্যবহারকারী Chat অ্যাপ মেসেজ, ডায়ালগ বা হোমপেজ থেকে কার্ডের কোনও বোতামে ক্লিক করেন। CARD_CLICKED Chat অ্যাপ ব্যবহারকারীর জমা দেওয়া যেকোনও ডেটা প্রসেস ও স্টোর করে অথবা অন্য কার্ড রিটার্ন করে।
কোনও ব্যবহারকারী ১:১ মেসেজে হোম ট্যাবে ক্লিক করে Chat অ্যাপের হোমপেজ খুলছেন। APP_HOME Chat অ্যাপ হোমপেজ থেকে স্ট্যাটিক বা ইন্ট্যার‍্যাক্টিভ কার্ড ফেরত দেয়।
কোনও ব্যবহারকারী Chat অ্যাপের হোমপেজ থেকে ফর্ম জমা দেন। SUBMIT_FORM Chat অ্যাপ ব্যবহারকারীর জমা দেওয়া যেকোনও ডেটা প্রসেস ও স্টোর করে অথবা অন্য কার্ড রিটার্ন করে।
ব্যবহারকারী দ্রুত কমান্ড ব্যবহার করে কমান্ড প্রয়োগ করেন। APP_COMMAND Chat অ্যাপটি সেই কমান্ডের ভিত্তিতে উত্তর দেয় যেটি ইনভোক করা হয়েছে। যেমন, Chat অ্যাপ, সম্পর্কে কমান্ডের উত্তর একটি মেসেজ দিয়ে দেয় যা Chat অ্যাপের করা কাজগুলি ব্যাখ্যা করে।

কাজ করে এমন সব ইন্টার‍্যাকশন ইভেন্ট ও JSON পেলোড উদাহরণ দেখতে, Chat অ্যাপ ইন্টার‍্যাকশন ইভেন্টের ধরন ও EventType রেফারেন্স ডকুমেন্টেশন দেখুন।

ডায়ালগ থেকে ইন্টার‍্যাকশন ইভেন্ট

আপনার Chat অ্যাপ, যা কোনও অ্যাড-অন নয়, সেটি ডায়ালগ খুললে, ইন্টার‍্যাকশন ইভেন্টে নিম্নলিখিত অতিরিক্ত তথ্য থাকে যা আপনি উত্তরের প্রসেস করার জন্য ব্যবহার করতে পারেন:

  • isDialogEvent ফিল্ড true হিসেবে সেট করা আছে।
  • DialogEventType (REQUEST_DIALOG, SUBMIT_DIALOG, বা CANCEL_DIALOG) থেকে এটি স্পষ্ট হয় যে ইন্টার‍্যাকশন কোনও ডায়ালগ খোলার ট্রিগার করে, কোনও ডায়ালগ থেকে তথ্য জমা দেয় বা কোনও ডায়ালগ বন্ধ করে।

ইন্টার‍্যাকশন ইভেন্ট পেতে, অ্যাড-অন নয় এমন একটি Chat অ্যাপ কনফিগার করা

  1. Google Cloud Console-এ, Chat API কনফিগারেশন পৃষ্ঠায় যান:

    Chat API কনফিগারেশন পৃষ্ঠায় যান

  2. ইন্টারেক্টিভ ফিচার বিকল্পের মধ্যে, এই Chat অ্যাপকে Google Workspace অ্যাড-অন হিসেবে তৈরি করুন বিকল্পটি মুছে দিন এবং কার্যকারিতা, একটি কানেকশন সেটিংস এন্ডপয়েন্ট (HTTP এন্ডপয়েন্ট URL, Apps Script, Cloud Pub/Sub টপিক নাম বা Dialogflow), কমান্ড, স্টার্টার প্রম্পট, লিঙ্ক প্রিভিউ এবং দৃশ্যমানতা কনফিগার করুন।

  3. সেভ করুন বিকল্পে ক্লিক করুন।

অ্যাড-অন নয় এমন Chat অ্যাপে মেসেজ দিয়ে উত্তর দেওয়া

অ্যাড-অন নয় এমন কোনও Chat অ্যাপে সিঙ্ক্রোনাসভাবে উত্তর দিতে, সরাসরি একটি Message অবজেক্ট রিটার্ন করুন। নিচে দেওয়া উদাহরণে ADDED_TO_SPACE ইন্টার‍্যাকশন ইভেন্টের উত্তর টেক্সট মেসেজের মাধ্যমে দেওয়া হয়েছে:

Node.js

/**
 * Sends an onboarding message when the Chat app is added to a space.
 *
 * @param {Object} req The event object from Chat API.
 * @param {Object} res The response object from the Chat app.
 */
exports.cymbalApp = function cymbalApp(req, res) {
  // Send an onboarding message when added to a Chat space
  if (req.body.type === 'ADDED_TO_SPACE') {
    res.json({
      'text': 'Hi, Cymbal at your service. I help you manage your calendar ' +
        'from Google Chat. Take a look at your schedule today by typing ' +
        '`/checkCalendar`, or schedule a meeting with `/scheduleMeeting`. To ' +
        'learn what else I can do, type `/help`.'
    });
  }
};

Python

from flask import Flask, request, json
app = Flask(__name__)

@app.route('/', methods=['POST'])
def cymbal_app():
  """Sends an onboarding message when the Chat app is added to a space.

  Returns:
    Mapping[str, Any]: The response object from the Chat app.
  """
  event = request.get_json()
  if event['type'] == 'ADDED_TO_SPACE':
    return json.jsonify({
      'text': 'Hi, Cymbal at your service. I help you manage your calendar ' +
      'from Google Chat. Take a look at your schedule today by typing ' +
      '`/checkCalendar`, or schedule a meeting with `/scheduleMeeting`. To ' +
      'learn what else I can do, type `/help`.'
    })
  return json.jsonify({})

Java

@SpringBootApplication
@RestController
public class App {
  public static void main(String[] args) {
    SpringApplication.run(App.class, args);
  }

  /*
   * Sends an onboarding message when the Chat app is added to a space.
   *
   * @return The response object from the Chat app.
   */
  @PostMapping("/")
  @ResponseBody
  public Message onEvent(@RequestBody JsonNode event) {
    switch (event.get("type").asText()) {
      case "ADDED_TO_SPACE":
        return new Message().setText(
          "Hi, Cymbal at your service. I help you manage your calendar " +
          "from Google Chat. Take a look at your schedule today by typing " +
          "`/checkCalendar`, or schedule a meeting with `/scheduleMeeting`. " +
          "To learn what else I can do, type `/help`.");
      default:
        return new Message();
    }
  }
}

Apps Script

/**
 * Sends an onboarding message when the Chat app is added to a space.
 *
 * @param {Object} event The event object from Chat API.
 * @return {Object} Response from the Chat app.
 */
function onAddToSpace(event) {
  return {
    'text': 'Hi, Cymbal at your service. I help you manage your calendar ' +
      'from Google Chat. Take a look at your schedule today by typing ' +
      '`/checkCalendar`, or schedule a meeting with `/scheduleMeeting`. To learn ' +
      'what else I can do, type `/help`.'
  };
}