Google Chat ऐप्लिकेशन में होने वाले इंटरैक्शन पाएं और उनका जवाब दें

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

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

उदाहरण के लिए, चैट ऐप्लिकेशन इनमें से किसी भी काम के लिए इंटरैक्शन इवेंट का इस्तेमाल करते हैं:

इंटरैक्शन इवेंट का उदाहरण Chat ऐप्लिकेशन से मिलने वाला सामान्य जवाब
कोई उपयोगकर्ता किसी Chat ऐप्लिकेशन का नाम टैग करके या स्लैश कमांड का इस्तेमाल करके शुरू करता है. मैसेज बनाने के लिए, Chat ऐप्लिकेशन मैसेज में बताई गई बातों को प्रोसेस करता है. उदाहरण के लिए, कोई Chat ऐप्लिकेशन /about निर्देश के जवाब में एक मैसेज देता है. इसमें उन टास्क के बारे में बताया जाता है जो Chat ऐप्लिकेशन कर सकता है.
कोई उपयोगकर्ता, स्पेस में चैट ऐप्लिकेशन जोड़ता है. Chat ऐप्लिकेशन, शामिल होने के लिए एक मैसेज भेजता है. इसमें बताया जाता है कि यह क्या काम करता है और स्पेस के उपयोगकर्ता, इससे कैसे इंटरैक्ट कर सकते हैं.
कोई उपयोगकर्ता, स्पेस से Chat ऐप्लिकेशन को हटाता है. Chat ऐप्लिकेशन, स्पेस के लिए कॉन्फ़िगर की गई आने वाली सभी सूचनाओं को हटा देता है. जैसे, वेबहुक मिटाना और डिवाइस का स्टोरेज खाली कर दिया जाता है.
कोई उपयोगकर्ता, Chat ऐप्लिकेशन से मिले कार्ड या डायलॉग बॉक्स पर मौजूद बटन पर क्लिक करता है. Chat ऐप्लिकेशन, उपयोगकर्ता के सबमिट किए गए डेटा को प्रोसेस और सेव करता है या कोई दूसरा कार्ड या डायलॉग दिखाता है.

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

इस पेज पर, नीचे बताए गए काम करने का तरीका बताया गया है:

  • इवेंट पाने के लिए, Chat ऐप्लिकेशन को कॉन्फ़िगर करें.
  • अपने इन्फ़्रास्ट्रक्चर पर इंटरैक्शन इवेंट को प्रोसेस करें.
  • अगर सही हो, तो इंटरैक्शन इवेंट का जवाब दें.

Chat ऐप्लिकेशन के इंटरैक्शन इवेंट की सूचनाएं पाएं

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

इंटरैक्शन इवेंट पाने के लिए, Chat ऐप्लिकेशन को कॉन्फ़िगर करें

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

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

  1. Google Cloud Console में, Google Chat API पेज खोलें:

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

  2. कॉन्फ़िगरेशन टैब पर क्लिक करें.
  3. इंटरैक्टिव सुविधाएं सेक्शन में, इंटरैक्टिव सुविधाएं चालू करें पर क्लिक करके 'चालू करें' पर क्लिक करें.
  4. सुविधा में, इनमें से एक या दोनों चेकबॉक्स चुनें:
    1. 1:1 मैसेज पाएं: इससे उपयोगकर्ता, डायरेक्ट मैसेज (DM) स्पेस में आपके Chat ऐप्लिकेशन से इंटरैक्ट कर सकते हैं. जब भी कोई उपयोगकर्ता DM स्पेस में मैसेज भेजता है, तब आपके Chat ऐप्लिकेशन को इंटरैक्शन इवेंट मिलते हैं.
    2. स्पेस और ग्रुप बातचीत में शामिल होना: इससे उपयोगकर्ताओं को आपके Chat ऐप्लिकेशन को एक से ज़्यादा लोगों वाले स्पेस में जोड़ने और हटाने की सुविधा मिलती है. जब भी उपयोगकर्ताओं को स्पेस में जोड़ा या हटाया जाता है, तब आपके Chat ऐप्लिकेशन को इंटरैक्शन इवेंट मिलते हैं. इसके अलावा, जब भी उपयोगकर्ता स्पेस में किसी स्लैश कमांड का नाम टैग करते हैं या उसका इस्तेमाल करते हैं.
  5. कनेक्शन सेटिंग में जाकर बताएं कि Google Chat, Chat ऐप्लिकेशन इंटरैक्शन इवेंट कहां भेजता है.
  6. ज़रूरी नहीं: स्लैश कमांड में, एक या उससे ज़्यादा स्लैश कमांड जोड़ें और कॉन्फ़िगर करें. ज़्यादा जानकारी के लिए, स्लैश कमांड सेट अप करना लेख पढ़ें.
  7. ज़रूरी नहीं: लिंक की झलक में, अपने Chat ऐप्लिकेशन की झलक में एक या उससे ज़्यादा यूआरएल पैटर्न जोड़ें और कॉन्फ़िगर करें. ज़्यादा जानकारी के लिए, लिंक की झलक देखें.
  8. सेव करें पर क्लिक करें.

आपके Chat ऐप्लिकेशन को अब Google Chat से इंटरैक्शन इवेंट पाने के लिए कॉन्फ़िगर कर दिया गया है.

Google Chat से मिले अनुरोधों की पुष्टि करें

एचटीटीपी एंडपॉइंट पर बनाए गए ऐप्लिकेशन के लिए, इस सेक्शन में इस बात की पुष्टि करने का तरीका बताया गया है कि आपके एंडपॉइंट पर अनुरोध Google Chat से आ रहे हैं या नहीं.

इंटरैक्शन इवेंट को आपके Chat ऐप्लिकेशन के एंडपॉइंट पर भेजने के लिए, Google आपकी सेवा को अनुरोध भेजता है. यह पुष्टि करने के लिए कि अनुरोध Google से मिला है, Google Chat आपके एंडपॉइंट पर हर एचटीटीपीएस अनुरोध के Authorization हेडर में, एक बियरर टोकन शामिल करता है. उदाहरण के लिए:

POST
Host: yourappurl.com
Authorization: Bearer AbCdEf123456
Content-Type: application/json
User-Agent: Google-Dynamite

ऊपर दिए गए उदाहरण में मौजूद स्ट्रिंग AbCdEf123456, बेयरर ऑथराइज़ेशन टोकन है. यह एक क्रिप्टोग्राफ़िक टोकन है, जिसे Google ने बनाया है. ओपन सोर्स Google API क्लाइंट लाइब्रेरी का इस्तेमाल करके, अपने बियरर टोकन की पुष्टि की जा सकती है:

Google Chat के अनुरोधों में भेजे गए बेयरर टोकन के लिए, chat@system.gserviceaccount.com को जारी किया जाता है और audience फ़ील्ड को Chat ऐप्लिकेशन बनाने के लिए इस्तेमाल किए गए Google Cloud प्रोजेक्ट की संख्या पर सेट किया जाता है. उदाहरण के लिए, अगर आपके Chat ऐप्लिकेशन का क्लाउड प्रोजेक्ट नंबर 1234567890 है, तो बेयरर टोकन में audience फ़ील्ड 1234567890 होगा.

अगर Chat ऐप्लिकेशन के लिए टोकन की पुष्टि नहीं होती है, तो आपकी सेवा को अनुरोध का जवाब, एचटीटीपीएस रिस्पॉन्स कोड 401 (Unauthorized) के साथ देना होगा.

Java

import java.io.IOException;
import java.security.GeneralSecurityException;
import java.util.Collections;

import com.google.api.client.googleapis.auth.oauth2.GoogleIdToken;
import com.google.api.client.googleapis.auth.oauth2.GoogleIdTokenVerifier;
import com.google.api.client.googleapis.auth.oauth2.GooglePublicKeysManager;
import com.google.api.client.http.apache.ApacheHttpTransport;
import com.google.api.client.json.JsonFactory;
import com.google.api.client.json.jackson.JacksonFactory;

/** Tool for verifying JWT Tokens for Apps in Google Chat. */
public class JWTVerify {
  // Bearer Tokens received by apps will always specify this issuer.
  static String CHAT_ISSUER = "chat@system.gserviceaccount.com";

  // Url to obtain the public certificate for the issuer.
  static String PUBLIC_CERT_URL_PREFIX =
      "https://www.googleapis.com/service_accounts/v1/metadata/x509/";

  // Intended audience of the token, which is the project number of the app.
  static String AUDIENCE = "1234567890";

  // Get this value from the request's Authorization HTTPS header.
  // For example, for "Authorization: Bearer AbCdEf123456" use "AbCdEf123456"
  static String BEARER_TOKEN = "AbCdEf123456";

  public static void main(String[] args) throws GeneralSecurityException, IOException {
    JsonFactory factory = new JacksonFactory();

    GooglePublicKeysManager.Builder keyManagerBuilder =
        new GooglePublicKeysManager.Builder(new ApacheHttpTransport(), factory);

    String certUrl = PUBLIC_CERT_URL_PREFIX + CHAT_ISSUER;
    keyManagerBuilder.setPublicCertsEncodedUrl(certUrl);

    GoogleIdTokenVerifier.Builder verifierBuilder =
        new GoogleIdTokenVerifier.Builder(keyManagerBuilder.build());
    verifierBuilder.setIssuer(CHAT_ISSUER);
    GoogleIdTokenVerifier verifier = verifierBuilder.build();

    GoogleIdToken idToken = GoogleIdToken.parse(factory, BEARER_TOKEN);
    if (idToken == null) {
      System.out.println("Token cannot be parsed");
      System.exit(-1);
    }

    // Verify valid token, signed by CHAT_ISSUER.
    if (!verifier.verify(idToken)
        || !idToken.verifyAudience(Collections.singletonList(AUDIENCE))
        || !idToken.verifyIssuer(CHAT_ISSUER)) {
      System.out.println("Invalid token");
      System.exit(-1);
    }

    // Token originates from Google and is targeted to a specific client.
    System.out.println("The token is valid");
  }
}

Python

import sys

from oauth2client import client

# Bearer Tokens received by apps will always specify this issuer.
CHAT_ISSUER = 'chat@system.gserviceaccount.com'

# Url to obtain the public certificate for the issuer.
PUBLIC_CERT_URL_PREFIX = 'https://www.googleapis.com/service_accounts/v1/metadata/x509/'

# Intended audience of the token, which will be the project number of the app.
AUDIENCE = '1234567890'

# Get this value from the request's Authorization HTTPS header.
# For example, for 'Authorization: Bearer AbCdEf123456' use 'AbCdEf123456'.
BEARER_TOKEN = 'AbCdEf123456'

try:
  # Verify valid token, signed by CHAT_ISSUER, intended for a third party.
  token = client.verify_id_token(
      BEARER_TOKEN, AUDIENCE, cert_uri=PUBLIC_CERT_URL_PREFIX + CHAT_ISSUER)

  if token['iss'] != CHAT_ISSUER:
    sys.exit('Invalid issuee')
except:
  sys.exit('Invalid token')

# Token originates from Google and is targeted to a specific client.
print 'The token is valid'

अपनी सेवा के लिए एचटीटीपी कॉल की फिर से की जाने वाली कोशिशों को मैनेज करना

अगर आपकी सेवा के लिए एचटीटीपीएस अनुरोध पूरा नहीं हो पाता (जैसे कि टाइम आउट, कुछ समय के लिए नेटवर्क की गड़बड़ी या नॉन-2xx एचटीटीपीएस स्टेटस कोड), तो Google Chat कुछ मिनटों में कुछ बार डिलीवरी की फिर से कोशिश कर सकता है. हालांकि, इसकी कोई गारंटी नहीं है. इस वजह से, कुछ स्थितियों में Chat ऐप्लिकेशन को एक ही मैसेज कई बार मिल सकता है. अगर अनुरोध पूरा हो जाने के बावजूद, अमान्य मैसेज पेलोड दिखता है, तो Google Chat उस अनुरोध को दोबारा प्रोसेस नहीं करता.

इंटरैक्शन इवेंट को प्रोसेस करना या उनके जवाब देना

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

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

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

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

इस बारे में आर्किटेक्चर कि Google Chat के ऐप्लिकेशन, इंटरैक्शन इवेंट को कैसे प्रोसेस करते हैं.

रीयल टाइम में जवाब दिखाएँ

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

इंटरैक्शन इवेंट के सिंक्रोनस रिस्पॉन्स बनाने के लिए, ये गाइड देखें:

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

एसिंक्रोनस रूप से जवाब देना

कभी-कभी चैट ऐप्लिकेशन को 30 सेकंड के बाद, इंटरैक्शन इवेंट का जवाब देना पड़ता है या उस स्पेस के बाहर टास्क पूरा करना पड़ता है जहां इंटरैक्शन इवेंट जनरेट हुआ था. उदाहरण के लिए, हो सकता है कि लंबे समय तक चलने वाले टास्क को पूरा करने के बाद, Chat ऐप्लिकेशन को उपयोगकर्ता से बात करनी पड़े. इस मामले में, Chat ऐप्लिकेशन Google Chat API को कॉल करके एसिंक्रोनस तरीके से जवाब दे सकते हैं.

Chat API का इस्तेमाल करके मैसेज बनाने के लिए, मैसेज बनाना लेख पढ़ें. Chat API के अन्य तरीकों का इस्तेमाल करने से जुड़ी गाइड के लिए, Chat API की खास जानकारी देखें.