Google Chat অ্যাপের আদেশে সাড়া দিন

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

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

আপনি কমান্ড তৈরি করবেন কিনা তা সিদ্ধান্ত নিতে এবং ব্যবহারকারীর মিথস্ক্রিয়া কীভাবে ডিজাইন করতে হয় তা বুঝতে, "সমস্ত ব্যবহারকারীর যাত্রা সংজ্ঞায়িত করুন" দেখুন।

চ্যাট অ্যাপ কমান্ডের প্রকারভেদ

আপনি চ্যাট অ্যাপের কমান্ডগুলোকে স্ল্যাশ কমান্ড, কুইক কমান্ড বা মেসেজ অ্যাকশন হিসেবে তৈরি করতে পারেন। প্রতিটি ধরনের কমান্ড ব্যবহার করার জন্য, ব্যবহারকারীরা নিম্নলিখিত পদক্ষেপগুলো অনুসরণ করতে পারেন:
  1. স্ল্যাশ কমান্ড: ব্যবহারকারীরা মেনু থেকে একটি স্ল্যাশ কমান্ড বেছে নিতে পারেন অথবা একটি স্ল্যাশ ( / ) টাইপ করে তারপরে একটি পূর্বনির্ধারিত টেক্সট, যেমন /about , লিখতে পারেন। চ্যাট অ্যাপগুলিতে সাধারণত স্ল্যাশ কমান্ডের জন্য আর্গুমেন্ট টেক্সটের প্রয়োজন হয়।

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

  2. দ্রুত কমান্ড: ব্যবহারকারীরা চ্যাট বার্তার উত্তর দেওয়ার অংশ থেকে মেনু খুলে কমান্ড ব্যবহার করেন। কোনো কমান্ড ব্যবহার করতে, তাঁরা 'অ্যাড' (Add) এ ক্লিক করেন। এবং মেনু থেকে একটি কমান্ড নির্বাচন করুন।

    আপনার চ্যাট অ্যাপটি যদি অতিরিক্ত কোনো ইনপুটের জন্য অপেক্ষা না করে ব্যবহারকারীকে তাৎক্ষণিকভাবে সাড়া দিতে পারে, তাহলে একটি কুইক কমান্ড তৈরি করুন। উদাহরণস্বরূপ, আপনি 'র‍্যান্ডম ইমেজ' নামে একটি কুইক কমান্ড তৈরি করতে পারেন, যা সাথে সাথে একটি ছবি পাঠিয়ে দেবে।

  3. মেসেজ অ্যাকশন: ( ডেভেলপার প্রিভিউ) ব্যবহারকারীরা কোনো মেসেজের উপর মাউস হোভার করে এবং থ্রি-ডট মেনুতে ক্লিক করে মেসেজ অ্যাকশন ব্যবহার করেন। কোনো কমান্ড ব্যবহার করার জন্য, তারা থ্রি-ডট মেনুটি খোলেন এবং মেনু থেকে একটি কমান্ড নির্বাচন করেন।

    আপনার চ্যাট অ্যাপ যদি বার্তার প্রেক্ষাপটের ওপর ভিত্তি করে কোনো কাজ করতে পারে, তাহলে একটি মেসেজ অ্যাকশন তৈরি করুন।

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

পূর্বশর্ত

HTTP

একটি গুগল ওয়ার্কস্পেস অ্যাড-অন যা গুগল চ্যাটের কার্যকারিতা বৃদ্ধি করে। এটি তৈরি করতে, HTTP কুইকস্টার্টটি সম্পূর্ণ করুন।

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

একটি গুগল ওয়ার্কস্পেস অ্যাড-অন যা গুগল চ্যাটের কার্যকারিতা বৃদ্ধি করে। এটি তৈরি করতে, অ্যাপস স্ক্রিপ্ট কুইকস্টার্টটি সম্পূর্ণ করুন।

কমান্ড সেট আপ করুন

এই বিভাগে একটি কমান্ড সেট আপ করার জন্য নিম্নলিখিত ধাপগুলি কীভাবে সম্পন্ন করতে হয় তা ব্যাখ্যা করা হয়েছে:

  1. কমান্ডটির জন্য একটি নাম ও বিবরণ তৈরি করুন
  2. গুগল ক্লাউড কনসোলে কমান্ডটি কনফিগার করুন

কমান্ডটির নাম ও বর্ণনা দিন।

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

স্ল্যাশ কমান্ডের নাম এবং বিবরণ
স্ল্যাশ কমান্ডের নাম ও বিবরণ।

আপনার কমান্ডের জন্য নাম ও বিবরণ বাছাই করার সময় নিম্নলিখিত সুপারিশগুলো বিবেচনা করুন:

একটি কমান্ডের নাম দিতে:

  • ব্যবহারকারীর কাছে নির্দেশাবলী স্পষ্ট করার জন্য সংক্ষিপ্ত, বর্ণনামূলক এবং কার্যকরী শব্দ বা বাক্যাংশ ব্যবহার করুন। উদাহরণস্বরূপ, Create a reminder নামের পরিবর্তে Remind me ব্যবহার করুন।
  • আপনার কমান্ডের জন্য একটি অনন্য বা প্রচলিত নাম ব্যবহার করার কথা বিবেচনা করুন। যদি আপনার কমান্ডটি কোনো সাধারণ ব্যবহার বা ফিচারের বর্ণনা দেয়, তাহলে আপনি এমন একটি প্রচলিত নাম ব্যবহার করতে পারেন যা ব্যবহারকারীরা চেনে এবং আশা করে, যেমন Settings বা Feedback । অন্যথায়, অনন্য কমান্ডের নাম ব্যবহার করার চেষ্টা করুন, কারণ যদি অন্যান্য চ্যাট অ্যাপেও আপনার কমান্ডের নাম একই হয়, তবে ব্যবহারকারীকে আপনারটি খুঁজে ব্যবহার করার জন্য একই রকম কমান্ডগুলোর মধ্যে থেকে বেছে নিতে হবে।

একটি কমান্ড বর্ণনা করতে:

  • বর্ণনাটি সংক্ষিপ্ত ও স্পষ্ট রাখুন, যাতে ব্যবহারকারীরা কমান্ডটি ব্যবহার করার সময় কী আশা করতে পারেন তা বুঝতে পারেন।
  • কমান্ডটির জন্য কোনো ফরম্যাটিং আবশ্যকতা থাকলে ব্যবহারকারীদের জানিয়ে দিন। উদাহরণস্বরূপ, যদি আপনি এমন একটি স্ল্যাশ কমান্ড তৈরি করেন যার জন্য আর্গুমেন্ট টেক্সট প্রয়োজন, তাহলে বিবরণটি Remind me to do [something] at [time] এর মতো কিছু একটা সেট করুন।
  • ব্যবহারকারীদের জানিয়ে দিন যে চ্যাট অ্যাপটি স্পেসের সবাইকে উত্তর দেবে, নাকি শুধুমাত্র যিনি কমান্ডটি ব্যবহার করেছেন তাকে ব্যক্তিগতভাবে উত্তর দেবে। উদাহরণস্বরূপ, About কুইক কমান্ডটির জন্য, আপনি এটিকে এভাবে বর্ণনা করতে পারেন: Learn about this app (Only visible to you)

গুগল ক্লাউড কনসোলে কমান্ডটি কনফিগার করুন।

স্ল্যাশ কমান্ড, কুইক কমান্ড বা মেসেজ অ্যাকশন তৈরি করতে, আপনাকে আপনার চ্যাট অ্যাপের গুগল চ্যাট এপিআই (Google Chat API) কনফিগারেশনে কমান্ড বা অ্যাকশনটি সম্পর্কে তথ্য উল্লেখ করতে হবে।

গুগল চ্যাট এপিআই-তে একটি কমান্ড কনফিগার করতে, নিম্নলিখিত ধাপগুলো সম্পন্ন করুন:

  1. Google Cloud কনসোলে, > এপিআই ও পরিষেবা > সক্রিয় এপিআই ও পরিষেবা > Google Chat API- তে ক্লিক করুন।

    গুগল চ্যাট এপিআই পৃষ্ঠায় যান

  2. কনফিগারেশন- এ ক্লিক করুন।

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

    1. HTTP এন্ডপয়েন্ট ইউআরএল : আপনি এখানে একটি সাধারণ HTTP এন্ডপয়েন্ট ইউআরএল নির্দিষ্ট করতে পারেন। বিকল্পভাবে, বিভিন্ন ট্রিগারের জন্য ভিন্ন ভিন্ন HTTP এন্ডপয়েন্ট ব্যবহার করতে চাইলে, সরাসরি অ্যাপ কমান্ড ফিল্ডে এন্ডপয়েন্টটি নির্দিষ্ট করুন।
    2. অ্যাপস স্ক্রিপ্ট : অ্যাপস স্ক্রিপ্ট ডিপ্লয়মেন্ট আইডি লিখুন। ডিফল্টরূপে, onAppCommand ফাংশনটি কল করা হবে। ভিন্ন কোনো অ্যাপস স্ক্রিপ্ট ফাংশন ব্যবহার করতে চাইলে, অ্যাপ কমান্ড ফিল্ডে কাস্টম ফাংশনের নামটি উল্লেখ করুন।
  4. Commands-এর অধীনে, Add a command-এ ক্লিক করুন।

  5. কমান্ড সম্পর্কে নিম্নলিখিত তথ্য প্রবেশ করান:

    1. কমান্ড আইডি: ১ থেকে ১০০০ পর্যন্ত একটি সংখ্যা, যা আপনার চ্যাট অ্যাপ কমান্ডটি শনাক্ত করতে এবং প্রতিক্রিয়া জানাতে ব্যবহার করে।
    2. বিবরণ: যে লেখাটি কমান্ডের ব্যবহার ও ফরম্যাট করার পদ্ধতি বর্ণনা করে। বিবরণ সর্বোচ্চ ৫০ অক্ষরের হতে পারে।
    3. কমান্ডের ধরণ: কুইক কমান্ড , স্ল্যাশ কমান্ড , অথবা মেসেজ অ্যাকশন-এর মধ্যে যেকোনো একটি নির্বাচন করুন।
    4. কমান্ডটির জন্য একটি নাম নির্দিষ্ট করুন:
      • দ্রুত কমান্ডের নাম: এটি সেই প্রদর্শিত নাম যা ব্যবহারকারীরা কমান্ডটি চালু করার জন্য মেনু থেকে নির্বাচন করেন। এটি ৫০ অক্ষর পর্যন্ত হতে পারে এবং এতে বিশেষ অক্ষরও অন্তর্ভুক্ত থাকতে পারে। উদাহরণস্বরূপ, Remind me
      • স্ল্যাশ কমান্ডের নাম: মেসেজে কমান্ডটি চালু করার জন্য ব্যবহারকারীরা যে টেক্সট টাইপ করেন। এটি অবশ্যই একটি স্ল্যাশ দিয়ে শুরু হতে হবে, এতে শুধুমাত্র টেক্সট থাকতে হবে এবং এটি সর্বোচ্চ ৫০ অক্ষরের হতে পারে। উদাহরণস্বরূপ, /remindMe
      • মেসেজ অ্যাকশনের নাম: ( ডেভেলপার প্রিভিউ) এটি সেই প্রদর্শিত নাম যা ব্যবহারকারীরা মেসেজ অ্যাকশনটি চালু করার জন্য মেনু থেকে নির্বাচন করেন। এটি সর্বোচ্চ ৫০ অক্ষরের হতে পারে এবং এতে বিশেষ অক্ষরও অন্তর্ভুক্ত থাকতে পারে। উদাহরণস্বরূপ, Remind me
  6. ঐচ্ছিক: লোডিং নোটিফিকেশন বার্তা : ( ডেভেলপার প্রিভিউ) মেসেজ অ্যাকশনটি কার্যকর থাকাকালীন ব্যবহারকারীকে দেখানোর জন্য একটি টোস্ট নোটিফিকেশন বার্তা। শুধুমাত্র সেইসব মেসেজ অ্যাকশনের জন্য উপলব্ধ যেগুলো কোনো ডায়ালগ খোলে না।

  7. ঐচ্ছিক: আপনি যদি চান আপনার চ্যাট অ্যাপটি কমান্ডের জবাবে একটি ডায়ালগ বক্স দেখাক, তাহলে ‘ওপেন এ ডায়ালগ’ চেকবক্সটি নির্বাচন করুন।

  8. সংরক্ষণ করুন- এ ক্লিক করুন।

কমান্ডটি এখন চ্যাট অ্যাপের জন্য কনফিগার করা হয়েছে।

একটি আদেশের প্রতিক্রিয়া জানান

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

সিম্বাল ল্যাবস চ্যাট অ্যাপের জন্য ব্যক্তিগত বার্তা। বার্তাটিতে বলা হয়েছে যে, চ্যাট অ্যাপটি সিম্বাল ল্যাবস তৈরি করেছে এবং এতে ডকুমেন্টেশনের একটি লিঙ্ক ও সাপোর্ট টিমের সাথে যোগাযোগের একটি লিঙ্ক শেয়ার করা হয়েছে।
একটি চ্যাট অ্যাপ /help স্ল্যাশ কমান্ডের জবাবে ব্যক্তিগতভাবে উত্তর দিয়ে জানায় কীভাবে সহায়তা পাওয়া যাবে।

নিম্নলিখিত কোডটি একটি চ্যাট অ্যাপের উদাহরণ দেখায় যা /about স্ল্যাশ কমান্ডের উত্তরে একটি টেক্সট মেসেজ পাঠায়। স্ল্যাশ কমান্ডের উত্তর দেওয়ার জন্য, চ্যাট অ্যাপটি একটি App কমান্ড ট্রিগার থেকে ইভেন্ট অবজেক্ট পরিচালনা করে। যখন কোনো ইভেন্ট অবজেক্টের পেলোডে একটি স্ল্যাশ কমান্ড আইডি থাকে, তখন চ্যাট অ্যাপটি একটি createMessageAction অবজেক্ট সহ DataActions অ্যাকশনটি রিটার্ন করে:

নোড.জেএস

node/chat/avatar-app/index.js
// The ID of the slash command "/about".
// You must use the same ID in the Google Chat API configuration.
const ABOUT_COMMAND_ID = 1;

/**
 * Handle requests from Google Workspace add on
 *
 * @param {Object} req Request sent by Google Chat
 * @param {Object} res Response to be sent back to Google Chat
 */
http('avatarApp', (req, res) => {
  const chatEvent = req.body.chat;
  let message;
  if (chatEvent.appCommandPayload) {
    message = handleAppCommand(chatEvent);
  } else {
    message = handleMessage(chatEvent);
  }
  res.send({ hostAppDataAction: { chatDataAction: { createMessageAction: {
    message: message
  }}}});
});

/**
 * Responds to an APP_COMMAND event in Google Chat.
 *
 * @param {Object} event the event object from Google Chat
 * @return the response message object.
 */
function handleAppCommand(event) {
  switch (event.appCommandPayload.appCommandMetadata.appCommandId) {
    case ABOUT_COMMAND_ID:
      return {
        text: 'The Avatar app replies to Google Chat messages.'
      };
  }
}

পাইথন

python/chat/avatar-app/main.py
# The ID of the slash command "/about".
# You must use the same ID in the Google Chat API configuration.
ABOUT_COMMAND_ID = 1

@functions_framework.http
def avatar_app(req: flask.Request) -> Mapping[str, Any]:
  """Handle requests from Google Workspace add on

  Args:
    flask.Request req: the request sent by Google Chat

  Returns:
    Mapping[str, Any]: the response to be sent back to Google Chat
  """
  chat_event = req.get_json(silent=True)["chat"]
  if chat_event and "appCommandPayload" in chat_event:
    message = handle_app_command(chat_event)
  else:
    message = handle_message(chat_event)
  return { "hostAppDataAction": { "chatDataAction": { "createMessageAction": {
      "message": message
  }}}}

def handle_app_command(event: Mapping[str, Any]) -> Mapping[str, Any]:
  """Responds to an APP_COMMAND event in Google Chat.

  Args:
    Mapping[str, Any] event: the event object from Google Chat

  Returns:
    Mapping[str, Any]: the response message object.
  """
  if event["appCommandPayload"]["appCommandMetadata"]["appCommandId"] == ABOUT_COMMAND_ID:
    return {
      "text": "The Avatar app replies to Google Chat messages.",
    }
  return {}

জাভা

java/chat/avatar-app/src/main/java/com/google/chat/avatar/App.java
// The ID of the slash command "/about".
// You must use the same ID in the Google Chat API configuration.
private static final int ABOUT_COMMAND_ID = 1;

private static final Gson gson = new Gson();

/**
 * Handle requests from Google Workspace add on
 * 
 * @param request the request sent by Google Chat
 * @param response the response to be sent back to Google Chat
 */
@Override
public void service(HttpRequest request, HttpResponse response) throws Exception {
  JsonObject event = gson.fromJson(request.getReader(), JsonObject.class);
  JsonObject chatEvent = event.getAsJsonObject("chat");
  Message message;
  if (chatEvent.has("appCommandPayload")) {
    message = handleAppCommand(chatEvent);
  } else {
    message = handleMessage(chatEvent);
  }
  JsonObject createMessageAction = new JsonObject();
  createMessageAction.add("message", gson.fromJson(gson.toJson(message), JsonObject.class));
  JsonObject chatDataAction = new JsonObject();
  chatDataAction.add("createMessageAction", createMessageAction);
  JsonObject hostAppDataAction = new JsonObject();
  hostAppDataAction.add("chatDataAction", chatDataAction);
  JsonObject dataActions = new JsonObject();
  dataActions.add("hostAppDataAction", hostAppDataAction);
  response.getWriter().write(gson.toJson(dataActions));
}

/**
 * Handles an APP_COMMAND event in Google Chat.
 *
 * @param event the event object from Google Chat
 * @return the response message object.
 */
private Message handleAppCommand(JsonObject event) throws Exception {
  switch (event.getAsJsonObject("appCommandPayload")
    .getAsJsonObject("appCommandMetadata").get("appCommandId").getAsInt()) {
    case ABOUT_COMMAND_ID:
      return new Message()
        .setText("The Avatar app replies to Google Chat messages.");
    default:
      return null;
  }
}

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

apps-script/chat/avatar-app/Code.gs
// The ID of the slash command "/about".
// You must use the same ID in the Google Chat API configuration.
const ABOUT_COMMAND_ID = 1;

/**
 * Responds to an APP_COMMAND event in Google Chat.
 *
 * @param {Object} event the event object from Google Chat
 */
function onAppCommand(event) {
  // Executes the app command logic based on ID.
  switch (event.chat.appCommandPayload.appCommandMetadata.appCommandId) {
    case ABOUT_COMMAND_ID:
      return { hostAppDataAction: { chatDataAction: { createMessageAction: { message: {
        text: 'The Avatar app replies to Google Chat messages.'
      }}}}};
  }
}

এই কোড নমুনাটি ব্যবহার করতে, ABOUT_COMMAND_ID জায়গায় সেই কমান্ড আইডিটি বসান যা আপনি চ্যাট এপিআই-তে কমান্ডটি কনফিগার করার সময় নির্দিষ্ট করেছিলেন।

একটি বার্তার ক্রিয়ার প্রতিক্রিয়া জানান

নিম্নলিখিত কোডটি একটি চ্যাট অ্যাপের উদাহরণ দেখায় যা ' আমাকে মনে করিয়ে দিন ' মেসেজ অ্যাকশনের উত্তরে একটি টেক্সট মেসেজ পাঠায়। মেসেজ অ্যাকশনগুলিতে সাড়া দেওয়ার জন্য, চ্যাট অ্যাপটি একটি 'অ্যাপ কমান্ড ট্রিগার' থেকে ইভেন্ট অবজেক্টগুলি পরিচালনা করে। যখন একটি ইভেন্ট অবজেক্টের পেলোডে একটি মেসেজ অ্যাকশন কমান্ড আইডি থাকে, তখন চ্যাট অ্যাপটি একটি createMessageAction ' অবজেক্ট সহ DataActions ' অ্যাকশনটি রিটার্ন করে:

নোড.জেএস

/**
 * Responds to an APP_COMMAND interaction event from Google Chat.
 *
 * @param {Object} event The interaction event from Google Chat.
 * @param {Object} res The HTTP response object.
 * @return {Object} The JSON response message with a confirmation.
 */
function onAppCommand(event, res) {
  // Collect the command ID and type from the event metadata.
  const {appCommandId, appCommandType} =
    event.chat.appCommandPayload.appCommandMetadata;

  if (appCommandType === 'MESSAGE_ACTION' &&
      appCommandId === REMIND_ME_COMMAND_ID) {

    // Message actions can access the context of the message they were
    // invoked on, such as the text or sender of that message.
    const messageText = event.chat.appCommandPayload.message.text;

    // Return a response that includes details from the original message.
    return res.json({
      "hostAppDataAction": {
        "chatDataAction": {
          "createMessageAction": {
            "message": {
              "text": `Setting a reminder for message: "${messageText}"`
            }
          }
        }
      }
    });
  }
}

পাইথন

def on_app_command(event):
    """Responds to an APP_COMMAND interaction event from Google Chat.

    Args:
        event (dict): The interaction event from Google Chat.

    Returns:
        dict: The JSON response message with a confirmation.
    """
    # Collect the command ID and type from the event metadata.
    payload = event.get('chat', {}).get('appCommandPayload', {})
    metadata = payload.get('appCommandMetadata', {})
    if metadata.get('appCommandType') == 'MESSAGE_ACTION' and \
       metadata.get('appCommandId') == REMIND_ME_COMMAND_ID:

        # Message actions can access the context of the message they were
        # invoked on, such as the text or sender of that message.
        message_text = payload.get('message', {}).get('text')

        # Return a response that includes details from the original message.
        return {
            "hostAppDataAction": {
                "chatDataAction": {
                    "createMessageAction": {
                        "message": {
                            "text": f'Setting a reminder for message: "{message_text}"'
                        }
                    }
                }
            }
        }

জাভা

/**
 * Responds to an APP_COMMAND interaction event from Google Chat.
 *
 * @param event The interaction event from Google Chat.
 * @param response The HTTP response object.
 */
void onAppCommand(JsonObject event, HttpResponse response) throws Exception {
  // Collect the command ID and type from the event metadata.
  JsonObject payload = event.getAsJsonObject("chat").getAsJsonObject("appCommandPayload");
  JsonObject metadata = payload.getAsJsonObject("appCommandMetadata");
  String appCommandType = metadata.get("appCommandType").getAsString();

  if (appCommandType.equals("MESSAGE_ACTION")) {
    int commandId = metadata.get("appCommandId").getAsInt();
    if (commandId == REMIND_ME_COMMAND_ID) {
      // Message actions can access the context of the message they were
      // invoked on, such as the text or sender of that message.
      String messageText = payload.getAsJsonObject("message").get("text").getAsString();

      // Return a response that includes details from the original message.
      JsonObject responseMessage = new JsonObject();
      responseMessage.addProperty("text", "Setting a reminder for message: " + messageText);

      JsonObject createMessageAction = new JsonObject();
      createMessageAction.add("message", responseMessage);

      JsonObject chatDataAction = new JsonObject();
      chatDataAction.add("createMessageAction", createMessageAction);

      JsonObject hostAppDataAction = new JsonObject();
      hostAppDataAction.add("chatDataAction", chatDataAction);

      JsonObject finalResponse = new JsonObject();
      finalResponse.add("hostAppDataAction", hostAppDataAction);

      response.getWriter().write(finalResponse.toString());
    }
  }
}

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

/**
 * Responds to an APP_COMMAND interaction event in Google Chat.
 *
 * @param {Object} event The interaction event from Google Chat.
 * @return {Object} The JSON response message with a confirmation.
 */
function onAppCommand(event) {
  // Collect the command ID and type from the event metadata.
  const {appCommandId, appCommandType} =
    event.chat.appCommandPayload.appCommandMetadata;

  if (appCommandType === 'MESSAGE_ACTION' &&
      appCommandId === REMIND_ME_COMMAND_ID) {

    // Message actions can access the context of the message they were
    // invoked on, such as the text or sender of that message.
    const messageText = event.chat.appCommandPayload.message.text;

    // Return a response that includes details from the original message.
    return CardService.newChatResponseBuilder()
        .setText("Setting a reminder for message: " + messageText)
        .build();
  }
}

এই কোড স্যাম্পলটি ব্যবহার করতে, REMIND_ME_COMMAND_ID জায়গায় সেই কমান্ড আইডিটি বসান যা আপনি চ্যাট এপিআই-তে কমান্ডটি কনফিগার করার সময় নির্দিষ্ট করেছিলেন।

কমান্ডটি পরীক্ষা করুন

কমান্ড এবং কোড পরীক্ষা করতে, Google Chat অ্যাপের ইন্টারেক্টিভ বৈশিষ্ট্যগুলি পরীক্ষা করুন দেখুন।

চ্যাট UI-তে কমান্ডটি কীভাবে পরীক্ষা ও ব্যবহার করতে হয় তা জানতে, Google Chat Help ডকুমেন্টেশনের "Use apps in Google Chat" অংশটি দেখুন।