इस पेज पर बताया गया है कि आपका Google Chat ऐप्लिकेशन, Google Chat में उपयोगकर्ता के इंटरैक्शन को कैसे पा सकता है और उनका जवाब कैसे दे सकता है.
Chat ऐप्लिकेशन के लिए इंटरैक्टिव इंटरफ़ेस बनाने के लिए, इन कॉम्पोनेंट का इस्तेमाल किया जाता है:
- ट्रिगर: Google Chat इस्तेमाल करने वाले लोग, Chat ऐप्लिकेशन को इन तरीकों से शुरू कर सकते हैं. जैसे, उसे किसी स्पेस में जोड़कर या उसे मैसेज भेजकर.
- इवेंट ऑब्जेक्ट: यह वह डेटा होता है जो Chat ऐप्लिकेशन को ट्रिगर या यूज़र इंटरफ़ेस (यूआई) इंटरैक्शन से मिलता है.
- कार्रवाइयां: Chat ऐप्लिकेशन, इंटरैक्शन का जवाब देने के लिए इन तरीकों का इस्तेमाल कर सकते हैं. जैसे, मैसेज भेजना या कार्ड पर आधारित यूज़र इंटरफ़ेस दिखाना.
चैट ऐप्लिकेशन, इन तरीकों से इंटरफ़ेस बना सकते हैं और उन्हें दिखा सकते हैं:
- मैसेज में टेक्स्ट, स्टैटिक या इंटरैक्टिव कार्ड, और ऐक्सेसरी बटन शामिल हो सकते हैं.
- होम पेज (ऐप्लिकेशन का होम पेज), जो Chat ऐप्लिकेशन के साथ 1:1 सीधी बातचीत के होम टैब में दिखते हैं.
- डायलॉग, जो कार्ड होते हैं और नई विंडो में खुलते हैं. आम तौर पर, ये उपयोगकर्ताओं से जानकारी सबमिट करने के लिए कहते हैं.
- लिंक की झलक दिखाने वाले कार्ड. ये कार्ड, किसी बाहरी सेवा के बारे में जानकारी की झलक दिखाते हैं.
ज़रूरी शर्तें
- Business या Enterprise Google Workspace खाता, जिसमें Google Chat का ऐक्सेस हो.
- Google Cloud प्रोजेक्ट बनाएं.
- OAuth के लिए सहमति की स्क्रीन को कॉन्फ़िगर करें.
- Google Chat API को चालू करें और कॉन्फ़िगर करें.
उपयोगकर्ता के इंटरैक्शन कैसे काम करते हैं
जब कोई उपयोगकर्ता Chat ऐप्लिकेशन से इंटरैक्ट करता है, तो Google Chat कॉन्फ़िगर किए गए ट्रिगर को शुरू करता है. साथ ही, आपके Chat ऐप्लिकेशन के एंडपॉइंट या फ़ंक्शन को इवेंट ऑब्जेक्ट भेजता है. आपका Chat ऐप्लिकेशन, इवेंट ऑब्जेक्ट को प्रोसेस करता है. इसके बाद, वह 30 सेकंड के अंदर कार्रवाई का जवाब तुरंत दे सकता है या Chat API का इस्तेमाल करके, बाद में जवाब दे सकता है.
इस डायग्राम में दिखाया गया है कि Google Chat ऐप्लिकेशन, उपयोगकर्ता के इंटरैक्शन को कैसे प्रोसेस करते हैं और उनका जवाब कैसे देते हैं:
ट्रिगर
ट्रिगर, Chat ऐप्लिकेशन को शुरू करने के खास तरीके होते हैं. उपयोगकर्ता, Chat के यूज़र इंटरफ़ेस (यूआई) का इस्तेमाल करके, इन तरीकों से ऐप्लिकेशन को शुरू करते हैं. जैसे, @mention या ऐप्लिकेशन के कमांड का इस्तेमाल करना.
यहां दी गई टेबल में, चैट ट्रिगर, उनकी जानकारी, और चैट ऐप्लिकेशन के जवाब देने के तरीके के बारे में बताया गया है:
| ट्रिगर | ब्यौरा | सामान्य जवाब |
|---|---|---|
| स्पेस में जोड़ा गया |
कोई उपयोगकर्ता किसी स्पेस में Chat ऐप्लिकेशन जोड़ता है या कोई Google Workspace एडमिन, अपने संगठन के उपयोगकर्ताओं के लिए डायरेक्ट मैसेज वाले स्पेस में Chat ऐप्लिकेशन इंस्टॉल करता है. एडमिन की ओर से इंस्टॉल किए गए Chat ऐप्लिकेशन के बारे में जानने के लिए, Google Workspace एडमिन सहायता दस्तावेज़ में अपने डोमेन में Marketplace ऐप्लिकेशन इंस्टॉल करना लेख पढ़ें. |
Chat ऐप्लिकेशन, ऑनबोर्डिंग मैसेज भेजता है. इसमें बताया जाता है कि यह क्या करता है और स्पेस में मौजूद लोग इससे कैसे इंटरैक्ट कर सकते हैं. |
| मैसेज |
कोई उपयोगकर्ता, Chat ऐप्लिकेशन में मैसेज के ज़रिए इन तरीकों से इंटरैक्ट करता है:
|
Chat ऐप्लिकेशन, मैसेज के कॉन्टेंट के आधार पर जवाब देता है. उदाहरण के लिए, Chat ऐप्लिकेशन किसी मैसेज का जवाब देता है, लिंक की झलक दिखाने वाला कार्ड अटैच करता है या मल्टीसिलेक्ट मेन्यू में आइटम के सुझाव देता है. |
| स्पेस से हटा दिया गया |
कोई उपयोगकर्ता किसी स्पेस से Chat ऐप्लिकेशन हटा देता है या Google Workspace एडमिन, अपने संगठन के किसी उपयोगकर्ता के लिए Chat ऐप्लिकेशन अनइंस्टॉल कर देता है. उपयोगकर्ता, उन Chat ऐप्लिकेशन को नहीं हटा सकते जिन्हें उनके एडमिन ने इंस्टॉल किया था. अगर किसी उपयोगकर्ता ने Chat ऐप्लिकेशन पहले से इंस्टॉल किया हुआ है, तो Google Workspace एडमिन के इसे अनइंस्टॉल करने की कोशिश करने के बावजूद, Chat ऐप्लिकेशन इंस्टॉल रहेगा. |
Chat ऐप्लिकेशन, स्पेस के लिए कॉन्फ़िगर की गई सभी सूचनाओं को हटा देता है. जैसे, वेबहुक को मिटाना. साथ ही, यह इंटरनल स्टोरेज को भी खाली कर देता है. चैट ऐप्लिकेशन, इस ट्रिगर के जवाब में मैसेज नहीं भेज सकते, क्योंकि अब वे स्पेस के सदस्य नहीं हैं. |
| ऐप्लिकेशन कमांड |
कोई उपयोगकर्ता, Chat ऐप्लिकेशन की कमांड (जैसे, स्लैश कमांड, क्विक कमांड या मैसेज ऐक्शन) शुरू करता है. |
Chat ऐप्लिकेशन, कमांड का जवाब देता है. उदाहरण के लिए, यह किसी मैसेज का जवाब देता है या डायलॉग खोलता है. |
| ऐप्लिकेशन का होम पेज |
कोई उपयोगकर्ता, Chat ऐप्लिकेशन में जाकर, किसी व्यक्ति के साथ हुई 1:1 बातचीत वाले डायरेक्ट मैसेज (डीएम) स्पेस में होम टैब खोलता है या होम पेज कार्ड पर मौजूद किसी विजेट से इंटरैक्ट करता है. |
Chat ऐप्लिकेशन, RenderActions ऑब्जेक्ट दिखाता है. यह ऑब्जेक्ट, होम पेज कार्ड (pushCard) को पुश करता है या दिखाए गए होम पेज कार्ड (updateCard) को अपडेट करता है.
|
इन ट्रिगर के लिए एंडपॉइंट या कॉलबैक फ़ंक्शन, Google Cloud Console में Chat API के कॉन्फ़िगरेशन पेज पर कॉन्फ़िगर किए जाते हैं. चरण-दर-चरण निर्देशों के लिए, Google Chat API कॉन्फ़िगर करना लेख पढ़ें.
स्टार्टर प्रॉम्प्ट कॉन्फ़िगर करना
स्टार्टर प्रॉम्प्ट की मदद से, उपयोगकर्ता आपके Chat ऐप्लिकेशन की सुविधाओं के बारे में जान पाते हैं. ऐसा तब होता है, जब वे आपके ऐप्लिकेशन के साथ सीधी बातचीत की सुविधा खोलते हैं. आपके पास ज़्यादा से ज़्यादा तीन स्टार्टर प्रॉम्प्ट कॉन्फ़िगर करने का विकल्प होता है.
स्टार्टर प्रॉम्प्ट जोड़ने और उन्हें कॉन्फ़िगर करने के लिए:
Google Cloud Console में, Chat API के कॉन्फ़िगरेशन पेज पर जाएं:
इंटरैक्टिव सुविधाएं में जाकर, बातचीत शुरू करने के लिए प्रॉम्प्ट ढूंढें. इसके बाद, प्रॉम्प्ट जोड़ें पर क्लिक करें.
रैंक (1 से 3) फ़ील्ड में,
1से3तक की कोई संख्या डालें. इससे, डिसप्ले का क्रम तय किया जा सकेगा.टाइप चुनने में जाकर, चुनें कि प्रॉम्प्ट कैसे काम करेगा:
- टेक्स्ट प्रॉम्प्ट: जब उपयोगकर्ता प्रॉम्प्ट चिप पर क्लिक करता है, तब यह सुविधा लिखने के लिए बार में पहले से तय टेक्स्ट भर देती है.
- कमांड प्रॉम्प्ट: इस पर क्लिक करने से, रजिस्टर की गई स्लैश कमांड या क्विक कमांड चलती है. ऐसी कमांड नहीं चुनी जा सकती हैं जिनके लिए अतिरिक्त आर्ग्युमेंट की ज़रूरत होती है.
चुने गए टाइप के आधार पर प्रॉम्प्ट को कॉन्फ़िगर करें:
अगर आपने टेक्स्ट प्रॉम्प्ट चुना है:
- टाइटल में, चिप पर दिखने वाला प्रॉम्प्ट टाइटल डालें. इसमें ज़्यादा से ज़्यादा 30 वर्ण हो सकते हैं.
- प्रॉम्प्ट टेक्स्ट में, लिखने के लिए बार में दिखने वाला टेक्स्ट डालें. इसमें ज़्यादा से ज़्यादा 60 वर्ण होने चाहिए.
- ज़रूरी नहीं: अन्य भाषाओं के उपयोगकर्ताओं के लिए, स्थानीय भाषा में टाइटल और टेक्स्ट जोड़ें:
- स्थानीय भाषा में उपलब्ध प्रॉम्प्ट में जाकर, भाषा जोड़ें पर क्लिक करें.
- भाषा में जाकर, ड्रॉप-डाउन से कोई ऐसी भाषा चुनें जिसमें यह सुविधा काम करती है.
- देश/इलाके के हिसाब से टाइटल में, देश/इलाके के हिसाब से टाइटल डालें. इसमें ज़्यादा से ज़्यादा 30 वर्ण हो सकते हैं.
- स्थानीय भाषा में प्रॉम्प्ट टेक्स्ट में, स्थानीय भाषा में प्रॉम्प्ट टेक्स्ट डालें. इसमें ज़्यादा से ज़्यादा 60 वर्ण होने चाहिए.
- ज़रूरत के मुताबिक अन्य भाषाएं जोड़ने के लिए, ऊपर बताई गई प्रक्रिया को दोहराएं.
अगर आपने कमांड प्रॉम्प्ट चुना है:
- स्लैश कमांड / क्विक कमांड में जाकर, ड्रॉप-डाउन से कमांड चुनें.
हो गया पर क्लिक करें. इसके बाद, पेज पर सबसे नीचे मौजूद सेव करें पर क्लिक करें.
अपनी सेवा के लिए, एचटीटीपी कॉल फिर से करने की कोशिशों को मैनेज करना
अगर आपकी सेवा के लिए किया गया एचटीटीपीएस अनुरोध पूरा नहीं होता है (जैसे कि टाइम आउट, कुछ समय के लिए नेटवर्क काम न करना या 2xx के अलावा कोई और एचटीटीपीएस स्टेटस कोड), तो Google Chat कुछ मिनटों के अंदर, मैसेज को कुछ बार फिर से भेजने की कोशिश कर सकता है. हालांकि, इसकी कोई गारंटी नहीं है. इस वजह से, कुछ मामलों में Chat ऐप्लिकेशन को एक ही इवेंट की सूचना कई बार मिल सकती है. अगर अनुरोध पूरा हो जाता है, लेकिन अमान्य रिस्पॉन्स पेलोड मिलता है, तो Google Chat अनुरोध को फिर से नहीं भेजता.
इवेंट ऑब्जेक्ट
जब कोई चैट ट्रिगर चलता है या जब चैट उपयोगकर्ता, चैट ऐप्लिकेशन के यूज़र इंटरफ़ेस (यूआई) से इंटरैक्ट करते हैं, तब चैट ऐप्लिकेशन को इवेंट ऑब्जेक्ट मिलते हैं. जैसे, किसी बटन पर क्लिक करना या कोई डायलॉग सबमिट करना. इवेंट ऑब्जेक्ट की मदद से, इंटरैक्शन डेटा का इस्तेमाल करके किसी यूज़र इंटरफ़ेस (यूआई) को अपडेट किया जा सकता है या उस पर प्रतिक्रिया दी जा सकती है.
इवेंट ऑब्जेक्ट के पेलोड
हर Chat इवेंट ऑब्जेक्ट में, होस्ट और प्लैटफ़ॉर्म की जानकारी (hostApp: "CHAT", clientPlatform, userLocale, userTimezone, parameters, और formInputs) के साथ-साथ commonEventObject शामिल होता है. साथ ही, इसमें chat ऑब्जेक्ट भी शामिल होता है, जिसमें Chat से जुड़ा कॉन्टेक्स्ट होता है:
- ऐप्लिकेशन होम ट्रिगर के लिए (जब कोई उपयोगकर्ता, Chat ऐप्लिकेशन में किसी व्यक्ति के साथ की गई सीधी बातचीत में होम टैब खोलता है),
chatऑब्जेक्ट में यूनियनpayloadफ़ील्ड के बिनाchat.userऔरchat.eventTimeशामिल होते हैं. जब कोई उपयोगकर्ता होम पेज कार्ड में मौजूद किसी बटन पर क्लिक करता है, तो इवेंट ऑब्जेक्ट मेंcommonEventObject.parametersके साथ-साथchat.buttonClickedPayloadशामिल होता है. अगर कार्ड में फ़ॉर्म इनपुट शामिल हैं, तोcommonEventObject.formInputsभी शामिल होता है. - स्पेस और मैसेज से जुड़ी इंटरैक्शन इवेंट (स्पेस में जोड़ा गया, मैसेज, स्पेस से हटाया गया, ऐप्लिकेशन कमांड या बटन और विजेट से जुड़ी इंटरैक्शन) के लिए,
chatऑब्जेक्ट मेंchat.user,chat.space,chat.eventTime, और इससे जुड़ा इंटरैक्शन पेलोड शामिल होता है:messagePayload: इसमेंspace,message, औरconfigCompleteRedirectUriशामिल होते हैं, जब कोई उपयोगकर्ता मैसेज भेजता है.addedToSpacePayload: इसमेंspace,interactionAdd, औरconfigCompleteRedirectUriशामिल होते हैं. ये तब दिखते हैं, जब Chat ऐप्लिकेशन को किसी स्पेस में जोड़ा जाता है.removedFromSpacePayload: इसमेंspaceहोता है. ऐसा तब होता है, जब किसी स्पेस से Chat ऐप्लिकेशन को हटा दिया जाता है.buttonClickedPayload: इसमेंspace,message,isDialogEvent, औरdialogEventTypeशामिल होते हैं. ये तब दिखते हैं, जब कोई उपयोगकर्ता कार्ड या डायलॉग बॉक्स में मौजूद किसी बटन पर क्लिक करता है.widgetUpdatedPayload: इसमेंspaceशामिल होता है. यह तब दिखता है, जब कोई उपयोगकर्ता किसी विजेट के साथ इंटरैक्ट करता है. जैसे, बाहरी डेटा सोर्स वाले मल्टीसिलेक्ट मेन्यू में टाइप करना.appCommandPayload: इसमेंspace,message,appCommandMetadata,isDialogEvent,dialogEventType, औरconfigCompleteRedirectUriशामिल होते हैं. ऐसा तब होता है, जब कोई उपयोगकर्ता ऐप्लिकेशन कमांड शुरू करता है.
Chat और Google Workspace के अन्य ऐप्लिकेशन में ऐड-ऑन इवेंट ऑब्जेक्ट के बारे में जानने के लिए, इवेंट ऑब्जेक्ट देखें.
जवाब देना
इस सेक्शन में बताया गया है कि Chat ऐप्लिकेशन, उपयोगकर्ता के इंटरैक्शन का तुरंत जवाब देने के लिए कार्रवाइयों का इस्तेमाल कैसे करते हैं.
किसी कार्रवाई के साथ जवाब देने के लिए, Chat ऐप्लिकेशन को 30 सेकंड के अंदर जवाब देना होगा. साथ ही, जवाब उस स्पेस पर लागू होना चाहिए जहां इंटरैक्शन हुआ था. इन सिंक्रोनस रिस्पॉन्स के लिए, पुष्टि की ज़रूरत नहीं होती. अगर आपके Chat ऐप्लिकेशन को 30 सेकंड से ज़्यादा समय लगता है या उसे स्पेस के बाहर काम करना है, तो पुष्टि करने की सुविधा सेट अप करें. इसके बाद, Google Chat API का इस्तेमाल करके, एसिंक्रोनस तरीके से जवाब दें.
उपयोगकर्ता के इंटरैक्शन का जवाब तुरंत देने के लिए, आपका Chat ऐप्लिकेशन, आने वाले इवेंट ऑब्जेक्ट को मैनेज करता है. साथ ही, इनमें से कोई एक JSON ऑब्जेक्ट दिखाता है:
DataActions:chatDataActionMarkupका इस्तेमाल करके, चैट मैसेज (CreateMessageAction,UpdateMessageAction) बनाता है या उन्हें अपडेट करता है. इसके अलावा, लिंक की झलक (UpdateInlinePreviewAction) अटैच करता है.RenderActions: यह होम पेज या डायलॉग (pushCard,updateCard,endNavigation: "CLOSE_DIALOG") बनाता है, अपडेट करता है या बंद करता है. इसके अलावा, यह एक से ज़्यादा आइटम चुनने वाले मेन्यू (modifyCard) के लिए डाइनैमिक इनपुट सुझाव देता है.AuthorizationError: यह उपयोगकर्ताओं को बुनियादी अनुमति कार्ड (basic_authorization_prompt) दिखाता है, ताकि वे किसी बाहरी सेवा में साइन इन कर सकें या पुष्टि कर सकें.
यहां दी गई टेबल में बताया गया है कि Chat ऐप्लिकेशन, कार्रवाइयों के साथ कैसे जवाब दे सकते हैं. चैट ऐप्लिकेशन, JSON ऑब्जेक्ट सीधे तौर पर दिखा सकते हैं. इसके अलावा, Apps Script के AddOnResponseService और CardService का इस्तेमाल करके जवाब तैयार कर सकते हैं.
| चैट ऐप्लिकेशन से मिला जवाब | 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 ऐप्लिकेशन के लिए कार्ड बनाना लेख पढ़ें.
- एक या उससे ज़्यादा ऐक्सेसरी विजेट. ये ऐसे बटन होते हैं जो मैसेज में किसी टेक्स्ट या कार्ड के बाद दिखते हैं.
मैसेज से जवाब देने के लिए, CreateMessageAction ऑब्जेक्ट के साथ DataActions दिखाएं:
{
"hostAppDataAction": {
"chatDataAction": {
"createMessageAction": {
"message": <var>MESSAGE</var>
}
}
}
}
MESSAGE को Chat API के 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>
}
}
}
}
MESSAGE को Chat API के Message संसाधन से बदलें.
Chat ऐप्लिकेशन, उपयोगकर्ता के भेजे गए मैसेज को भी अपडेट कर सकते हैं. इसके लिए, उन्हें updateInlinePreviewAction का इस्तेमाल करके लिंक की झलक दिखाने वाला कार्ड अटैच करना होगा. ज़्यादा जानकारी के लिए, लिंक की झलक देखना लेख पढ़ें.
Google Chat API का इस्तेमाल करके, एसिंक्रोनस तरीके से जवाब देना
कार्रवाई को सिंक्रोनस तरीके से पूरा करने के बजाय, Chat ऐप्लिकेशन को इंटरैक्शन का जवाब देने या पहले से भेजे गए मैसेज भेजने के लिए, Google Chat API को कॉल करने की ज़रूरत पड़ सकती है. उदाहरण के लिए, Chat ऐप्लिकेशन को Google Chat API को कॉल करना होगा, ताकि इनमें से कोई भी काम किया जा सके:
- किसी इंटरैक्शन का जवाब 30 सेकंड के बाद देना (जैसे, लंबे समय तक चलने वाले टास्क को पूरा करने के बाद).
- शेड्यूल के मुताबिक मैसेज भेजें या बाहरी संसाधनों में हुए बदलावों के बारे में सूचनाएं भेजें.
- उस स्पेस के बाहर टास्क पूरे करना जहां इंटरैक्शन हुआ था.
- Chat में ऐसे टास्क पूरे करना जो सिंक्रोनस कार्रवाइयों के तौर पर उपलब्ध नहीं हैं. जैसे, स्पेस की सूची बनाना या किसी स्पेस में सदस्यों को जोड़ना.
- Chat उपयोगकर्ता की ओर से टास्क पूरे करना. इसके लिए, उपयोगकर्ता की पुष्टि करना ज़रूरी है.
अगर आपको किसी इंटरैक्शन का जवाब 30 सेकंड के बाद देना है, तो आपको 30 सेकंड के अंदर इवेंट ऑब्जेक्ट मिलने की पुष्टि करनी होगी. ऐसा इसलिए, ताकि उपयोगकर्ता को यह गड़बड़ी का मैसेज न दिखे कि आपका 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 Chat API को कॉन्फ़िगर करना
- मैसेज भेजें
- निर्देशों का जवाब देना
- इंटरैक्टिव डायलॉग बॉक्स खोलना
- कार्ड पर उपयोगकर्ताओं के डाले गए फ़ॉर्म डेटा को पढ़ना
- लिंक की झलक देखना
- Chat ऐप्लिकेशन के लिए होम पेज बनाना
- Chat से मिले अनुरोधों की पुष्टि करना
- Google Chat ऐप्लिकेशन के लिए इंटरैक्टिव सुविधाओं को टेस्ट करना
ऐड-ऑन के तौर पर काम न करने वाले Chat ऐप्लिकेशन: उपयोगकर्ता के इंटरैक्शन को पाना और उनका जवाब देना
Google Workspace के ऐड-ऑन के तौर पर उपलब्ध नहीं कराए गए चैट ऐप्लिकेशन को Google Workspace ऐड-ऑन के इवेंट ऑब्जेक्ट (EventObject) के बजाय, Chat API के इंटरैक्शन इवेंट (Event) मिलते हैं. साथ ही, वे किसी कार्रवाई के बजाय Message संसाधन को वापस भेजकर जवाब देते हैं.
अगर आपको किसी ऐसे Chat ऐप्लिकेशन को Google Workspace ऐड-ऑन फ़्रेमवर्क में अपग्रेड करना है जो ऐड-ऑन नहीं है, तो Google Chat ऐप्लिकेशन को Google Workspace ऐड-ऑन में बदलना लेख पढ़ें.
इंटरैक्शन इवेंट के टाइप
उपयोगकर्ता की हर गतिविधि के लिए, Google Chat, ऐड-ऑन नहीं है, बल्कि एक Chat ऐप्लिकेशन है. यह Event ऑब्जेक्ट भेजता है. इस ऑब्जेक्ट का टाइप, eventType फ़ील्ड से पता चलता है:
| उपयोगकर्ता इंटरैक्शन | eventType |
किसी ऐसे Chat ऐप्लिकेशन से मिला जवाब जो ऐड-ऑन नहीं है |
|---|---|---|
| कोई उपयोगकर्ता, Chat ऐप्लिकेशन को मैसेज भेजता है. उदाहरण के लिए, Chat ऐप्लिकेशन को @mention करता है या स्लैश कमांड का इस्तेमाल करता है. | MESSAGE |
Chat ऐप्लिकेशन, मैसेज के कॉन्टेंट के आधार पर जवाब देता है. उदाहरण के लिए, Chat ऐप्लिकेशन, स्लैश कमांड /about का जवाब इस मैसेज के साथ देता है कि वह कौन-कौनसे टास्क कर सकता है. |
| जब कोई उपयोगकर्ता किसी स्पेस में Chat ऐप्लिकेशन जोड़ता है. | ADDED_TO_SPACE |
Chat ऐप्लिकेशन, स्पेस में शामिल होने का मैसेज भेजता है. इसमें बताया जाता है कि ऐप्लिकेशन क्या करता है और स्पेस में मौजूद लोग इससे कैसे इंटरैक्ट कर सकते हैं. |
| जब कोई उपयोगकर्ता किसी स्पेस से Chat ऐप्लिकेशन को हटाता है. | REMOVED_FROM_SPACE |
Chat ऐप्लिकेशन, स्पेस के लिए कॉन्फ़िगर की गई सभी सूचनाओं को हटा देता है. जैसे, वेबहुक को मिटाना. साथ ही, यह इंटरनल स्टोरेज को भी खाली कर देता है. |
| जब कोई उपयोगकर्ता, Chat ऐप्लिकेशन के मैसेज, डायलॉग बॉक्स या होम पेज पर मौजूद किसी कार्ड पर दिए गए बटन पर क्लिक करता है. | CARD_CLICKED |
Chat ऐप्लिकेशन, उपयोगकर्ता के सबमिट किए गए डेटा को प्रोसेस और स्टोर करता है या कोई दूसरा कार्ड दिखाता है. |
| कोई व्यक्ति, 1:1 मैसेज में होम टैब पर क्लिक करके, 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 ऐप्लिकेशन को कॉन्फ़िगर करना
Google Cloud Console में, Chat API के कॉन्फ़िगरेशन पेज पर जाएं:
इंटरैक्टिव सुविधाएं में जाकर, इस चैट ऐप्लिकेशन को Google Workspace ऐड-ऑन के तौर पर बनाएं को अनचेक करें. इसके बाद, फ़ंक्शन, कनेक्शन सेटिंग एंडपॉइंट (एचटीटीपी एंडपॉइंट यूआरएल, Apps Script, Cloud Pub/Sub विषय का नाम या Dialogflow), कमांड, स्टार्टर प्रॉम्प्ट, लिंक की झलक, और दिखने की सेटिंग को कॉन्फ़िगर करें.
सेव करें पर क्लिक करें.
किसी ऐसे 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`.'
};
}