Google Chat ऐप्लिकेशन के निर्देशों का जवाब देना

इस पेज पर, Google Chat ऐप्लिकेशन के तौर पर कमांड सेट अप करने और उनका जवाब देने का तरीका बताया गया है.

कमांड की मदद से, लोग Chat ऐप्लिकेशन की मुख्य सुविधाएं ढूंढ सकते हैं और उनका इस्तेमाल कर सकते हैं. सिर्फ़ Chat ऐप्लिकेशन ही किसी कमांड का कॉन्टेंट देख सकते हैं. उदाहरण के लिए, अगर कोई व्यक्ति स्लैश कमांड के साथ मैसेज भेजता है, तो वह मैसेज सिर्फ़ उस व्यक्ति और Chat ऐप्लिकेशन को दिखता है.

कमांड बनाने हैं या नहीं, यह तय करने और लोगों के इंटरैक्शन डिज़ाइन करने का तरीका समझने के लिए, लोगों के सभी इंटरैक्शन तय करना लेख पढ़ें.

Chat ऐप्लिकेशन के कमांड के टाइप

Chat ऐप्लिकेशन के कमांड को स्लैश कमांड, क्विक कमांड या मैसेज ऐक्शन के तौर पर बनाया जा सकता है. हर तरह के कमांड का इस्तेमाल करने के लिए, लोग यह काम कर सकते हैं:
  1. स्लैश कमांड: लोग मेन्यू से कोई स्लैश कमांड चुन सकते हैं या स्लैश (/) टाइप कर सकते हैं. इसके बाद, पहले से तय किया गया कोई टेक्स्ट टाइप कर सकते हैं. जैसे, /about. आम तौर पर, Chat ऐप्लिकेशन को स्लैश कमांड के लिए आर्ग्युमेंट टेक्स्ट की ज़रूरत होती है.

    अगर आपके Chat ऐप्लिकेशन को लोगों से अतिरिक्त इनपुट की ज़रूरत है, तो स्लैश कमांड बनाएं. उदाहरण के लिए, आप एक स्लैश कमांड बना सकते हैं जिसे /search कहा जाता है जो उपयोगकर्ता द्वारा खोज के लिए एक वाक्यांश दर्ज करने के बाद चलता है, जैसे /search receipts.

  2. क्विक कमांड: लोग Chat मैसेज के जवाब वाले सेक्शन में जाकर, मेन्यू खोलकर कमांड का इस्तेमाल करते हैं. कमांड का इस्तेमाल करने के लिए, वे जोड़ें पर क्लिक करते हैं और मेन्यू से कोई कमांड चुनते हैं.

    अगर आपका Chat ऐप्लिकेशन, अतिरिक्त इनपुट का इंतज़ार किए बिना, तुरंत लोगों को जवाब दे सकता है, तो क्विक कमांड बनाएं. उदाहरण के लिए, रैंडम इमेज नाम की क्विक कमांड बनाई जा सकती है. यह कमांड, तुरंत किसी इमेज के साथ जवाब देती है.

  3. मैसेज ऐक्शन: लोग किसी मैसेज पर कर्सर घुमाकर और तीन बिंदु वाले मेन्यू पर क्लिक करके, मैसेज ऐक्शन का इस्तेमाल करते हैं. कमांड का इस्तेमाल करने के लिए, वे तीन बिंदु वाला मेन्यू खोलते हैं और मेन्यू से कोई कमांड चुनते हैं.

    अगर आपका Chat ऐप्लिकेशन, मैसेज के कॉन्टेक्स्ट के आधार पर कार्रवाइयां कर सकता है, तो मैसेज पर कार्रवाई बनाएं.

यहां दी गई इमेज में, यह दिखाया गया है कि लोग स्लैश और क्विक कमांड के लिए मेन्यू और मैसेज ऐक्शन कैसे ढूंढते हैं:

ज़रूरी शर्तें

Node.js

Google Chat ऐप्लिकेशन, जो इंटरैक्शन इवेंट को स्वीकार करता है और उनका जवाब देता है. एचटीटीपी सेवा का इस्तेमाल करके, इंटरैक्टिव Chat ऐप्लिकेशन बनाने के लिए, यह क्विकस्टार्ट पूरा करें.

Apps Script

Google Chat ऐप्लिकेशन, जो इंटरैक्शन इवेंट को स्वीकार करता है और उनका जवाब देता है. Apps Script में इंटरैक्टिव Chat ऐप्लिकेशन बनाने के लिए, यह क्विकस्टार्ट पूरा करें.

Python

Google Chat ऐप्लिकेशन, जो इंटरैक्शन इवेंट को स्वीकार करता है और उनका जवाब देता है. एचटीटीपी सेवा का इस्तेमाल करके, इंटरैक्टिव Chat ऐप्लिकेशन बनाने के लिए, यह क्विकस्टार्ट पूरा करें.

Java

Google Chat ऐप्लिकेशन, जो इंटरैक्शन इवेंट को स्वीकार करता है और उनका जवाब देता है. एचटीटीपी सेवा का इस्तेमाल करके, इंटरैक्टिव Chat ऐप्लिकेशन बनाने के लिए, यह क्विकस्टार्ट पूरा करें.

कमांड सेट अप करना

इस सेक्शन में, कमांड सेट अप करने के लिए, ये चरण पूरे करने का तरीका बताया गया है:

  1. कमांड के लिए कोई नाम और जानकारी बनाना.
  2. Google Cloud Console में कमांड कॉन्फ़िगर करना.

कमांड के लिए कोई नाम और जानकारी बनाना

कमांड का नाम वह टेक्स्ट होता है जिसे लोग Chat ऐप्लिकेशन को शुरू करने के लिए टाइप करते हैं या चुनते हैं. नाम के नीचे, कम शब्दों में जानकारी भी दिखती है. इससे लोगों को कमांड का इस्तेमाल करने के बारे में ज़्यादा जानकारी मिलती है:

स्लैश कमांड का नाम और जानकारी
स्लैश कमांड का नाम और जानकारी.

कमांड के लिए कोई नाम और जानकारी चुनते समय, इन सुझावों को ध्यान में रखें:

कमांड का नाम रखने के लिए:

  • कमांड को लोगों के लिए साफ़ तौर पर दिखाने के लिए, कम शब्दों में जानकारी देने वाले और कार्रवाई करने के लिए इस्तेमाल किए जा सकने वाले शब्दों या वाक्यांशों का इस्तेमाल करें. उदाहरण के लिए, Create a reminder नाम के बजाय, Remind me का इस्तेमाल करें.
  • अपनी कमांड के लिए कोई यूनीक या सामान्य नाम इस्तेमाल करने पर विचार करें. अगर आपकी कमांड, किसी सामान्य इंटरैक्शन या सुविधा के बारे में बताती है, तो ऐसा सामान्य नाम इस्तेमाल किया जा सकता है जिसे लोग पहचानते हों और जिसकी उन्हें उम्मीद हो. जैसे, Settings या Feedback. इसके अलावा, कमांड के लिए यूनीक नाम इस्तेमाल करने की कोशिश करें. ऐसा इसलिए, क्योंकि अगर आपकी कमांड का नाम, Chat के अन्य ऐप्लिकेशन के लिए भी वही है, तो लोगों को आपकी कमांड ढूंढने और उसका इस्तेमाल करने के लिए, एक जैसी कमांड को फ़िल्टर करना होगा.

कमांड की जानकारी देने के लिए:

  • जानकारी कम शब्दों में और साफ़ तौर पर दें, ताकि लोगों को पता हो कि कमांड का इस्तेमाल करने पर उन्हें क्या मिलेगा.
  • लोगों को बताएं कि कमांड के लिए फ़ॉर्मैट से जुड़ी कोई ज़रूरी शर्तें हैं या नहीं. उदाहरण के लिए, अगर आपने कोई स्लैश कमांड बनाई है जिसके लिए आर्ग्युमेंट टेक्स्ट की ज़रूरत है, तो जानकारी को Remind me to do [something] at [time] के तौर पर सेट करें.
  • लोगों को बताएं कि Chat ऐप्लिकेशन, स्पेस में मौजूद सभी लोगों को जवाब देता है या सिर्फ़ उस व्यक्ति को निजी तौर पर जवाब देता है जिसने कमांड शुरू की है. उदाहरण के लिए, क्विक कमांड About के लिए, आप इसे Learn about this app (Only visible to you) के तौर पर बता सकते हैं.

Google Cloud Console में कमांड कॉन्फ़िगर करना

स्लैश कमांड, क्विक कमांड या मैसेज ऐक्शन बनाने के लिए, Google Chat API के लिए अपने Chat ऐप्लिकेशन के कॉन्फ़िगरेशन में, कमांड या ऐक्शन के बारे में जानकारी दें.

Google Chat API में कोई कमांड कॉन्फ़िगर करने के लिए, यह तरीका अपनाएं:

  1. Google Cloud Console में, मेन्यू > एपीआई और सेवाएं > चालू किए गए एपीआई और सेवाएं > Google Chat API पर क्लिक करें

    Google Chat API पेज पर जाएं

  2. कॉन्फ़िगरेशन पर क्लिक करें.

  3. **कमांड** में जाकर, **कोई कमांड जोड़ें** पर क्लिक करें.

  4. कमांड के लिए कोई कमांड आईडी, जानकारी, कमांड टाइप, और नाम डालें:

    • कमांड आईडी: 1 से 1000 तक कोई संख्या. इसका इस्तेमाल, आपका Chat ऐप्लिकेशन कमांड की पहचान करने और जवाब देने के लिए करता है.
    • जानकारी: वह टेक्स्ट जो बताता है कि कमांड क्या करती है. जानकारी 50 वर्णों तक हो सकती है और इसमें खास वर्ण शामिल किए जा सकते हैं.
    • कमांड टाइप: क्विक कमांड, स्लैश कमांड या मैसेज पर कार्रवाई में से कोई एक विकल्प चुनें.
    • कमांड के लिए कोई नाम तय करें:
      • क्विक कमांड का नाम: वह डिसप्ले नेम जिसे लोग कमांड शुरू करने के लिए, मेन्यू से चुनते हैं. यह 50 वर्णों तक हो सकता है और इसमें खास वर्ण शामिल किए जा सकते हैं. उदाहरण के लिए, Remind me.
      • स्लैश कमांड का नाम: वह टेक्स्ट जिसे लोग किसी मैसेज में कमांड शुरू करने के लिए टाइप करते हैं. यह स्लैश से शुरू होना चाहिए. इसमें सिर्फ़ टेक्स्ट होना चाहिए और यह 50 वर्णों तक हो सकता है. उदाहरण के लिए, /remindMe.
      • मैसेज ऐक्शन का नाम: वह डिसप्ले नेम जिसे लोग मैसेज ऐक्शन शुरू करने के लिए, मेन्यू से चुनते हैं. यह 50 वर्णों तक हो सकता है और इसमें खास वर्ण शामिल किए जा सकते हैं. उदाहरण के लिए, Remind me.
  5. ज़रूरी नहीं: लोडिंग की सूचना देने वाला मैसेज: मैसेज ऐक्शन के चलने के दौरान, लोगों को दिखाने के लिए टोस्ट सूचना वाला मैसेज. यह सुविधा, सिर्फ़ उन मैसेज ऐक्शन के लिए उपलब्ध है जो डायलॉग बॉक्स नहीं खोलते.

  6. ज़रूरी नहीं: अगर आपको Chat ऐप्लिकेशन से कमांड का जवाब डायलॉग बॉक्स के ज़रिए चाहिए, तो डायलॉग बॉक्स खोलें चेकबॉक्स को चुनें.

  7. सेव करें पर क्लिक करें.

अब Chat ऐप्लिकेशन के लिए कमांड कॉन्फ़िगर हो गई है.

किसी कमांड का जवाब देना

जब लोग किसी कमांड का इस्तेमाल करते हैं, तो आपके Chat ऐप्लिकेशन को इंटरैक्शन इवेंट मिलता है. इवेंट पेलोड में, मेटाडेटा होता है. इसमें शुरू की गई कमांड के बारे में जानकारी होती है. जैसे, कमांड आईडी और कमांड टाइप. इससे, सही जवाब दिया जा सकता है.

Cymbal Labs Chat ऐप्लिकेशन के लिए निजी मैसेज. मैसेज में बताया गया है कि Chat ऐप्लिकेशन को Cymbal Labs ने बनाया है. इसमें दस्तावेज़ का लिंक और सहायता टीम से संपर्क करने का लिंक भी दिया गया है.
Chat ऐप्लिकेशन, स्लैश कमांड /help का जवाब निजी तौर पर देता है, ताकि सहायता पाने का तरीका बताया जा सके.

हर तरह की कमांड का जवाब देने के लिए, आपको इवेंट पेलोड में अलग-अलग इवेंट टाइप और मेटाडेटा ऑब्जेक्ट मैनेज करने होंगे:

कमांड टाइप इवेंट टाइप कमांड का मेटाडेटा
स्लैश कमांड MESSAGE message.slashCommand या message.annotation.slashCommand
क्विक कमांड APP_COMMAND appCommandMetadata
मैसेज ऐक्शन APP_COMMAND appCommandMetadata

मैसेज के ज़रिए किसी कमांड का जवाब देने का तरीका जानने के लिए, ये सेक्शन देखें.

स्लैश कमांड का जवाब देना

यहां दिए गए कोड में, Chat ऐप्लिकेशन का एक उदाहरण दिखाया गया है. यह स्लैश कमांड /about का जवाब देता है. Chat ऐप्लिकेशन, MESSAGE इंटरैक्शन इवेंट को मैनेज करता है. साथ ही, यह पता लगाता है कि इंटरैक्शन इवेंट में मैचिंग कमांड आईडी है या नहीं. इसके बाद, निजी मैसेज भेजता है:

Node.js

node/avatar-app/index.js
/**
 * Handles slash and quick commands.
 *
 * @param {Object} event - The Google Chat event.
 * @param {Object} res - The HTTP response object.
 */
function handleAppCommands(event, res) {
  const {appCommandId, appCommandType} = event.appCommandMetadata;

  switch (appCommandId) {
    case ABOUT_COMMAND_ID:
      return res.send({
        privateMessageViewer: event.user,
        text: 'The Avatar app replies to Google Chat messages.'
      });
    case HELP_COMMAND_ID:
      return res.send({
        privateMessageViewer: event.user,
        text: 'The Avatar app replies to Google Chat messages.'
      });
  }
}

Apps Script

apps-script/avatar-app/avatar-app.gs
// Checks for the presence of a slash command in the message.
if (event.message.slashCommand) {
  // Executes the slash command logic based on its ID.
  // Slash command IDs are set in the Google Chat API configuration.
  switch (event.message.slashCommand.commandId) {
    case ABOUT_COMMAND_ID:
      return {
        privateMessageViewer: event.user,
        text: 'The Avatar app replies to Google Chat messages.'
      };
  }
}

Python

python/avatar-app/main.py
def handle_app_commands(event: Mapping[str, Any]) -> Mapping[str, Any]:
    """Handles slash and quick commands.

    Args:
        Mapping[str, Any] event: The Google Chat event.

    Returns:
        Mapping[str, Any]: the response
    """
    app_command_id = event["appCommandMetadata"]["appCommandId"]

    if app_command_id == ABOUT_COMMAND_ID:
        return {
            "privateMessageViewer": event["user"],
            "text": "The Avatar app replies to Google Chat messages.",
        }
    elif app_command_id == HELP_COMMAND_ID:
        return {
            "privateMessageViewer": event["user"],
            "text": "The Avatar app replies to Google Chat messages.",
        }
    return {}

Java

java/avatar-app/src/main/java/AvatarApp.java
/**
 * Handles slash and quick commands.
 *
 * @param event    The Google Chat event.
 * @param response The HTTP response object.
 */
private void handleAppCommands(JsonObject event, HttpResponse response) throws Exception {
  int appCommandId = event.getAsJsonObject("appCommandMetadata").get("appCommandId").getAsInt();

  switch (appCommandId) {
    case ABOUT_COMMAND_ID:
      Message aboutMessage = new Message();
      aboutMessage.setText("The Avatar app replies to Google Chat messages.");
      aboutMessage.setPrivateMessageViewer(new User()
          .setName(event.getAsJsonObject("user").get("name").getAsString()));
      response.getWriter().write(gson.toJson(aboutMessage));
      return;
    case HELP_COMMAND_ID:
      Message helpMessage = new Message();
      helpMessage.setText("The Avatar app replies to Google Chat messages.");
      helpMessage.setPrivateMessageViewer(new User()
          .setName(event.getAsJsonObject("user").get("name").getAsString()));
      response.getWriter().write(gson.toJson(helpMessage));
      return;
  }
}

ABOUT_COMMAND_ID की जगह, वह कमांड आईडी डालें जिसे आपने Google Cloud Console में कमांड कॉन्फ़िगर करते समय तय किया था.

क्विक कमांड का जवाब देना

यहां दिए गए कोड में, Chat ऐप्लिकेशन का एक उदाहरण दिखाया गया है. यह Help नाम की क्विक कमांड का जवाब देता है. Chat ऐप्लिकेशन, APP_COMMAND इंटरैक्शन इवेंट को मैनेज करता है. साथ ही, यह पता लगाता है कि इंटरैक्शन इवेंट में मैचिंग कमांड आईडी है या नहीं. इसके बाद, निजी मैसेज भेजता है:

Node.js

node/avatar-app/index.js
/**
 * Handles slash and quick commands.
 *
 * @param {Object} event - The Google Chat event.
 * @param {Object} res - The HTTP response object.
 */
function handleAppCommands(event, res) {
  const {appCommandId, appCommandType} = event.appCommandMetadata;

  switch (appCommandId) {
    case ABOUT_COMMAND_ID:
      return res.send({
        privateMessageViewer: event.user,
        text: 'The Avatar app replies to Google Chat messages.'
      });
    case HELP_COMMAND_ID:
      return res.send({
        privateMessageViewer: event.user,
        text: 'The Avatar app replies to Google Chat messages.'
      });
  }
}

Apps Script

apps-script/avatar-app/avatar-app.gs
/**
 * Handles the APP_COMMAND event type. This function is triggered when a user
 * interacts with a quick command within the Google Chat app.  It responds
 * based on the command ID.
 *
 * @param {Object} event The event object from Google Chat, containing details
 *     about the app command interaction.  It includes information like the
 *     command ID and the user who triggered it.
 */
function onAppCommand(event) {
  // Executes the quick command logic based on its ID.
  // Command IDs are set in the Google Chat API configuration.
  switch (event.appCommandMetadata.appCommandId) {
    case HELP_COMMAND_ID:
      return {
        privateMessageViewer: event.user,
        text: 'The Avatar app replies to Google Chat messages.'
      };
  }
}

Python

python/avatar-app/main.py
def handle_app_commands(event: Mapping[str, Any]) -> Mapping[str, Any]:
    """Handles slash and quick commands.

    Args:
        Mapping[str, Any] event: The Google Chat event.

    Returns:
        Mapping[str, Any]: the response
    """
    app_command_id = event["appCommandMetadata"]["appCommandId"]

    if app_command_id == ABOUT_COMMAND_ID:
        return {
            "privateMessageViewer": event["user"],
            "text": "The Avatar app replies to Google Chat messages.",
        }
    elif app_command_id == HELP_COMMAND_ID:
        return {
            "privateMessageViewer": event["user"],
            "text": "The Avatar app replies to Google Chat messages.",
        }
    return {}

Java

java/avatar-app/src/main/java/AvatarApp.java
/**
 * Handles slash and quick commands.
 *
 * @param event    The Google Chat event.
 * @param response The HTTP response object.
 */
private void handleAppCommands(JsonObject event, HttpResponse response) throws Exception {
  int appCommandId = event.getAsJsonObject("appCommandMetadata").get("appCommandId").getAsInt();

  switch (appCommandId) {
    case ABOUT_COMMAND_ID:
      Message aboutMessage = new Message();
      aboutMessage.setText("The Avatar app replies to Google Chat messages.");
      aboutMessage.setPrivateMessageViewer(new User()
          .setName(event.getAsJsonObject("user").get("name").getAsString()));
      response.getWriter().write(gson.toJson(aboutMessage));
      return;
    case HELP_COMMAND_ID:
      Message helpMessage = new Message();
      helpMessage.setText("The Avatar app replies to Google Chat messages.");
      helpMessage.setPrivateMessageViewer(new User()
          .setName(event.getAsJsonObject("user").get("name").getAsString()));
      response.getWriter().write(gson.toJson(helpMessage));
      return;
  }
}

HELP_COMMAND_ID की जगह, वह कमांड आईडी डालें जिसे आपने Google Cloud Console में कमांड कॉन्फ़िगर करते समय तय किया था.

मैसेज पर कार्रवाई का जवाब देना

यहां दिए गए कोड में, Chat ऐप्लिकेशन का एक उदाहरण दिखाया गया है. यह Remind me नाम के मैसेज पर कार्रवाई का जवाब देता है. Chat ऐप्लिकेशन, APP_COMMAND इंटरैक्शन इवेंट को मैनेज करता है. साथ ही, यह पता लगाता है कि इंटरैक्शन इवेंट में मैचिंग कमांड आईडी है या नहीं. इसके बाद, निजी मैसेज भेजता है:

Node.js

/**
 * 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 handleAppCommand(event, res) {
  // Collect the command ID and type from the event metadata.
  const {appCommandId, appCommandType} = event.appCommandMetadata;

  // Use appCommandType to detect message actions.
  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.message.text;

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

Apps Script

/**
 * 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.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.message.text;

    // Return a response that includes details from the original message.
    return { "text": "Setting a reminder for message: " + messageText };
  }
}

Python

def handle_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.
    metadata = event.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 = event.get('message', {}).get('text')

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

Java

/**
 * 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 handleAppCommand(JsonObject event, HttpResponse response) throws Exception {
  // Collect the command ID and type from the event metadata.
  JsonObject metadata = event.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 = event.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);
      response.getWriter().write(responseMessage.toString());
    }
  }
}

REMIND_ME_COMMAND_ID की जगह, वह कमांड आईडी डालें जिसे आपने Google Cloud Console में कमांड कॉन्फ़िगर करते समय तय किया था.

कमांड की जांच करना

कमांड और कोड की जांच करने के लिए, Google Chat ऐप्लिकेशन की इंटरैक्टिव सुविधाओं की जांच करना लेख पढ़ें.

Chat यूज़र इंटरफ़ेस (यूआई) में कमांड की जांच करने और उसका इस्तेमाल करने का तरीका जानने के लिए, Google Chat की सहायता से जुड़े दस्तावेज़ में, Google Chat में ऐप्लिकेशन इस्तेमाल करना लेख पढ़ें.