कोई एचटीटीपी Google Chat ऐप्लिकेशन बनाएं

इस पेज पर, Google Workspace का ऐसा ऐड-ऑन बनाने का तरीका बताया गया है जो एचटीटीपी सेवा का इस्तेमाल करके, Google Chat में काम करता है. Google Chat में, ऐड-ऑन उपयोगकर्ताओं को Google Chat ऐप्लिकेशन के तौर पर दिखते हैं. ज़्यादा जानने के लिए, Google Chat के एक्सटेंशन के बारे में खास जानकारी देखें.

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

एचटीटीपी आर्किटेक्चर की मदद से, Chat को एचटीटीपी का इस्तेमाल करके Google Cloud या ऑन-प्राइमिस सर्वर के साथ इंटिग्रेट करने के लिए कॉन्फ़िगर किया जाता है. इस बारे में यहां दिए गए डायग्राम में बताया गया है:

ऑन-प्राइमिस सर्वर में वेब सेवा का इस्तेमाल करने वाले Chat ऐप्लिकेशन का आर्किटेक्चर.

पिछले डायग्राम में, HTTP Chat ऐप्लिकेशन के साथ इंटरैक्ट करने वाले उपयोगकर्ता के लिए, जानकारी का यह फ़्लो है:

  1. कोई उपयोगकर्ता, Chat ऐप्लिकेशन में किसी व्यक्ति को डायरेक्ट मैसेज या Chat स्पेस में मैसेज भेजता है.
  2. एचटीटीपी अनुरोध, किसी ऐसे वेब सर्वर पर भेजा जाता है जो क्लाउड या ऑन-प्राइमिस सिस्टम हो. इसमें Chat ऐप्लिकेशन का लॉजिक होता है.
  3. इसके अलावा, Chat ऐप्लिकेशन के लॉजिक को Google Workspace की सेवाओं (जैसे, Calendar और Sheets), Google की अन्य सेवाओं (जैसे, Maps, YouTube, और Vertex AI) या अन्य वेब सेवाओं (जैसे, प्रोजेक्ट मैनेजमेंट सिस्टम या टिकट करने वाला टूल) के साथ इंटिग्रेट किया जा सकता है.
  4. वेब सर्वर, Chat में Chat ऐप्लिकेशन सेवा को एचटीटीपी रिस्पॉन्स भेजता है.
  5. जवाब, उपयोगकर्ता को डिलीवर किया जाता है.
  6. इसके अलावा, Chat ऐप्लिकेशन, मैसेज पोस्ट करने या अन्य काम करने के लिए, Chat API को कॉल कर सकता है.

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

मकसद

  • अपना एनवायरमेंट सेट अप करें.
  • Cloud फ़ंक्शन बनाना और उसे डिप्लॉय करना.
  • Chat ऐप्लिकेशन के लिए, Google Workspace ऐड-ऑन कॉन्फ़िगर करें.
  • ऐप्लिकेशन की जांच करें.

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

एनवायरमेंट सेट अप करना

Google API का इस्तेमाल करने से पहले, आपको उन्हें Google Cloud प्रोजेक्ट में चालू करना होगा. किसी एक Google Cloud प्रोजेक्ट में, एक या उससे ज़्यादा एपीआई चालू किए जा सकते हैं.
  • Google Cloud कंसोल में, Google Chat API, Cloud Build API, Cloud Functions API, Cloud Pub/Sub API, Cloud Logging API, Artifact Registry API, और Cloud Run API को चालू करें.

    एपीआई चालू करना

Cloud फ़ंक्शन बनाना और डिप्लॉय करना

ऐसा Cloud फ़ंक्शन बनाएं और डिप्लॉय करें जो मैसेज भेजने वाले व्यक्ति के डिसप्ले नेम और अवतार की इमेज के साथ Chat कार्ड जनरेट करता हो. जब Chat ऐप्लिकेशन को कोई मैसेज मिलता है, तो वह फ़ंक्शन चलाता है और कार्ड के साथ जवाब देता है.

अपने Chat ऐप्लिकेशन के लिए फ़ंक्शन बनाने और उसे डिप्लॉय करने के लिए, ये काम करें:

Node.js

  1. Google Cloud Console में, Cloud Functions पेज पर जाएं:

    Cloud Functions पर जाएं

    पक्का करें कि आपके Chat ऐप्लिकेशन का प्रोजेक्ट चुना गया हो.

  2. फ़ंक्शन बनाएं पर क्लिक करें.

  3. 'फ़ंक्शन बनाएं' पेज पर, अपना फ़ंक्शन सेट अप करें:

    1. एनवायरमेंट में, Cloud Run फ़ंक्शन चुनें.
    2. फ़ंक्शन का नाम में, AddOnChatApp डालें.
    3. इलाका में, कोई इलाका चुनें.
    4. पुष्टि करने की सुविधा में जाकर, पुष्टि करना ज़रूरी है चुनें.
    5. आगे बढ़ें पर क्लिक करें.
  4. रनटाइम में, Node.js का सबसे नया वर्शन चुनें.

  5. सोर्स कोड में, इनलाइन एडिटर चुनें.

  6. एंट्री पॉइंट में, डिफ़ॉल्ट टेक्स्ट मिटाएं और avatarApp डालें.

  7. index.js के कॉन्टेंट की जगह यह कोड डालें:

    /**
     * Google Cloud Function that responds to messages sent from a
     * Google Chat space.
     *
     * @param {Object} req Request sent from Google Chat space
     * @param {Object} res Response to send back
     */
    exports.avatarApp = function avatarApp(req, res) {
        if (req.method === 'GET' || !req.body.chat) {
            return res.send('Hello! This function is meant to be used ' +
                'in a Google Chat Space.');
        }
    
        // Stores the Google Chat event as a variable.
        const chatMessage = req.body.chat.messagePayload.message;
    
        // Replies with the sender's avatar in a card.
        const displayName = chatMessage.sender.displayName;
        const avatarUrl = chatMessage.sender.avatarUrl;
        res.send({ hostAppDataAction: { chatDataAction: { createMessageAction: { message: {
            text: 'Here\'s your avatar',
            cardsV2: [{
                cardId: 'avatarCard',
                card: {
                    name: 'Avatar Card',
                    header: {
                        title: `Hello ${displayName}!`,
                    },
                    sections: [{
                        widgets: [{
                            textParagraph: { text: 'Your avatar picture: ' }
                        }, {
                            image: { imageUrl: avatarUrl }
                        }]
                    }]
                }
            }]
        }}}}});
    };
    
  8. डिप्लॉय करें पर क्लिक करें.

Python

  1. Google Cloud Console में, Cloud Functions पेज पर जाएं:

    Cloud Functions पर जाएं

    पक्का करें कि आपके Chat ऐप्लिकेशन का प्रोजेक्ट चुना गया हो.

  2. फ़ंक्शन बनाएं पर क्लिक करें.

  3. 'फ़ंक्शन बनाएं' पेज पर, अपना फ़ंक्शन सेट अप करें:

    1. एनवायरमेंट में, Cloud Run फ़ंक्शन चुनें.
    2. फ़ंक्शन का नाम में, AddOnChatApp डालें.
    3. इलाका में, कोई इलाका चुनें.
    4. पुष्टि करने की सुविधा में जाकर, पुष्टि करना ज़रूरी है चुनें.
    5. आगे बढ़ें पर क्लिक करें.
  4. रनटाइम में, Python का सबसे नया वर्शन चुनें.

  5. सोर्स कोड में, इनलाइन एडिटर चुनें.

  6. एंट्री पॉइंट में, डिफ़ॉल्ट टेक्स्ट मिटाएं और avatar_app डालें.

  7. main.py के कॉन्टेंट की जगह यह कोड डालें:

    from typing import Any, Mapping
    
    import flask
    import functions_framework
    
    @functions_framework.http
    def avatar_app(req: flask.Request) -> Mapping[str, Any]:
        """Google Cloud Function that handles requests from Google Chat
    
        Args:
            flask.Request: the request
    
        Returns:
            Mapping[str, Any]: the response
        """
        if req.method == "GET":
            return "Hello! This function must be called from Google Chat."
    
        request_json = req.get_json(silent=True)
    
        # Stores the Google Chat event as a variable.
        chat_message = request_json["chat"]["messagePayload"]["message"]
    
        # Replies with the sender's avatar in a card.
        display_name = chat_message["sender"]["displayName"]
        avatar_url = chat_message["sender"]["avatarUrl"]
        return { "hostAppDataAction": { "chatDataAction": { "createMessageAction": { "message": {
            "text": "Here's your avatar",
            "cardsV2": [{
                "cardId": "avatarCard",
                "card": {
                    "name": "Avatar Card",
                    "header": { "title": f"Hello {display_name}!" },
                    "sections": [{
                        "widgets": [{
                            "textParagraph": { "text": "Your avatar picture:" }
                        }, {
                            "image": { "imageUrl": avatar_url }
                        }]
                    }]
                }
            }]
        }}}}}
    
  8. डिप्लॉय करें पर क्लिक करें.

Java

  1. Google Cloud Console में, Cloud Functions पेज पर जाएं:

    Cloud Functions पर जाएं

    पक्का करें कि आपके Chat ऐप्लिकेशन का प्रोजेक्ट चुना गया हो.

  2. फ़ंक्शन बनाएं पर क्लिक करें.

  3. 'फ़ंक्शन बनाएं' पेज पर, अपना फ़ंक्शन सेट अप करें:

    1. एनवायरमेंट में, Cloud Run फ़ंक्शन चुनें.
    2. फ़ंक्शन का नाम में, AddOnChatApp डालें.
    3. इलाका में, कोई इलाका चुनें.
    4. पुष्टि करने की सुविधा में जाकर, पुष्टि करना ज़रूरी है चुनें.
    5. आगे बढ़ें पर क्लिक करें.
  4. रनटाइम में, Java का सबसे नया वर्शन चुनें.

  5. सोर्स कोड में, इनलाइन एडिटर चुनें.

  6. एंट्री पॉइंट में, डिफ़ॉल्ट टेक्स्ट मिटाएं और AvatarApp डालें.

  7. डिफ़ॉल्ट Java फ़ाइल का नाम बदलकर src/main/java/AvatarApp.java करें.

  8. AvatarApp.java के कॉन्टेंट की जगह यह कोड डालें:

    import java.util.List;
    
    import com.google.api.services.chat.v1.model.CardWithId;
    import com.google.api.services.chat.v1.model.GoogleAppsCardV1Card;
    import com.google.api.services.chat.v1.model.GoogleAppsCardV1CardHeader;
    import com.google.api.services.chat.v1.model.GoogleAppsCardV1Image;
    import com.google.api.services.chat.v1.model.GoogleAppsCardV1Section;
    import com.google.api.services.chat.v1.model.GoogleAppsCardV1TextParagraph;
    import com.google.api.services.chat.v1.model.GoogleAppsCardV1Widget;
    import com.google.api.services.chat.v1.model.Message;
    import com.google.cloud.functions.HttpFunction;
    import com.google.cloud.functions.HttpRequest;
    import com.google.cloud.functions.HttpResponse;
    import com.google.gson.Gson;
    import com.google.gson.JsonObject;
    
    public class AvatarApp implements HttpFunction {
        private static final Gson gson = new Gson();
    
        @Override
        public void service(HttpRequest request, HttpResponse response) throws Exception {
            JsonObject body = gson.fromJson(request.getReader(), JsonObject.class);
            if (request.getMethod().equals("GET") || !body.has("chat")) {
                response.getWriter().write("Hello! This function is meant to be used " +
                    "in a Google Chat Space..");
                return;
            }
    
            // Stores the Google Chat event as a variable.
            JsonObject chatMessage = body.getAsJsonObject("chat")
                .getAsJsonObject("messagePayload").getAsJsonObject("message");
    
            // Replies with the sender's avatar in a card.
            String displayName = chatMessage.getAsJsonObject("sender").get("displayName").getAsString();
            String avatarUrl = chatMessage.getAsJsonObject("sender").get("avatarUrl").getAsString();
            Message message = createMessage(displayName, avatarUrl);
    
            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));
        }
    
        Message createMessage(String displayName, String avatarUrl) {
            GoogleAppsCardV1CardHeader cardHeader = new GoogleAppsCardV1CardHeader();
            cardHeader.setTitle(String.format("Hello %s!", displayName));
    
            GoogleAppsCardV1TextParagraph textParagraph = new GoogleAppsCardV1TextParagraph();
            textParagraph.setText("Your avatar picture: ");
    
            GoogleAppsCardV1Widget avatarWidget = new GoogleAppsCardV1Widget();
            avatarWidget.setTextParagraph(textParagraph);
    
            GoogleAppsCardV1Image image = new GoogleAppsCardV1Image();
            image.setImageUrl(avatarUrl);
    
            GoogleAppsCardV1Widget avatarImageWidget = new GoogleAppsCardV1Widget();
            avatarImageWidget.setImage(image);
    
            GoogleAppsCardV1Section section = new GoogleAppsCardV1Section();
            section.setWidgets(List.of(avatarWidget, avatarImageWidget));
    
            GoogleAppsCardV1Card card = new GoogleAppsCardV1Card();
            card.setName("Avatar Card");
            card.setHeader(cardHeader);
            card.setSections(List.of(section));
    
            CardWithId cardWithId = new CardWithId();
            cardWithId.setCardId("avatarCard");
            cardWithId.setCard(card);
    
            Message message = new Message();
            message.setText("Here's your avatar");
            message.setCardsV2(List.of(cardWithId));
    
            return message;
        }
    }
    
  9. pom.xml के कॉन्टेंट की जगह यह कोड डालें:

    <project xmlns="http://maven.apache.org/POM/4.0.0"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>com.google.chat</groupId>
        <artifactId>avatar-app</artifactId>
        <version>1.0-SNAPSHOT</version>
    
        <properties>
            <maven.compiler.target>17</maven.compiler.target>
            <maven.compiler.source>17</maven.compiler.source>
        </properties>
    
        <dependencies>
            <dependency>
            <groupId>com.google.cloud.functions</groupId>
            <artifactId>functions-framework-api</artifactId>
            <version>1.0.4</version>
            </dependency>
    
            <!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
            <dependency>
                <groupId>com.google.code.gson</groupId>
                <artifactId>gson</artifactId>
                <version>2.9.1</version>
            </dependency>
    
            <!-- https://mvnrepository.com/artifact/com.google.apis/google-api-services-chat -->
            <dependency>
                <groupId>com.google.apis</groupId>
                <artifactId>google-api-services-chat</artifactId>
                <version>v1-rev20230115-2.0.0</version>
            </dependency>
        </dependencies>
    
        <!-- Required for Java functions in the inline editor -->
        <build>
            <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                <excludes>
                    <exclude>.google/</exclude>
                </excludes>
                </configuration>
            </plugin>
            </plugins>
        </build>
    </project>
    
  10. डिप्लॉय करें पर क्लिक करें.

Cloud Functions की जानकारी वाला पेज खुलता है. साथ ही, आपका फ़ंक्शन, प्रोग्रेस के दो इंडिकेटर के साथ दिखता है: एक बिल्ड के लिए और एक सेवा के लिए. जब प्रोग्रेस इंडिकेटर हट जाते हैं और उनकी जगह सही का निशान दिखने लगता है, तो इसका मतलब है कि फ़ंक्शन डिप्लॉय हो गया है और इस्तेमाल के लिए तैयार है.

Google Chat को अपने फ़ंक्शन को लागू करने की अनुमति देना

Google Workspace ऐड-ऑन को अपने फ़ंक्शन को शुरू करने की अनुमति देने के लिए, Cloud Run Invoker भूमिका के साथ Google Workspace ऐड-ऑन के सेवा खाते को जोड़ें.

  1. Google Cloud Console में, Cloud Run पेज पर जाएं:

    Cloud Run पर जाएं

  2. Cloud Run सेवाओं की सूची में, रिसीव करने वाले फ़ंक्शन के बगल में मौजूद चेकबॉक्स को चुनें. (फ़ंक्शन पर क्लिक न करें.)

  3. अनुमतियां पर क्लिक करें. अनुमतियां पैनल खुलता है.

  4. प्रिंसिपल जोड़ें पर क्लिक करें.

  5. नए प्रिंसिपल में, अपने प्रोजेक्ट से जुड़े Google Workspace ऐड-ऑन के सेवा खाते का ईमेल पता डालें.

  6. कोई भूमिका चुनें में जाकर, Cloud Run > Cloud Run Invoker चुनें.

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

ऐड-ऑन कॉन्फ़िगर करना

Cloud फ़ंक्शन डिप्लॉय होने के बाद, ऐड-ऑन बनाने और Google Chat ऐप्लिकेशन को डिप्लॉय करने के लिए यह तरीका अपनाएं:

  1. Google Cloud Console में, मेन्यू > Cloud Functions पर क्लिक करें.

    Cloud Functions पर जाएं

    पक्का करें कि आपने जिस प्रोजेक्ट के लिए Cloud Functions चालू किया है वह चुना गया हो.

  2. फ़ंक्शन की सूची में, AddOnChatApp पर क्लिक करें.

  3. ट्रिगर टैब पर क्लिक करें.

  4. एचटीटीपीएस में जाकर, यूआरएल कॉपी करें.

  5. "Google Chat API" खोजें और Google Chat API पर क्लिक करें. इसके बाद, मैनेज करें पर क्लिक करें.

    Chat API पर जाना

  6. कॉन्फ़िगरेशन पर क्लिक करें और Google Chat ऐप्लिकेशन सेट अप करें:

    1. ऐप्लिकेशन का नाम में, Add-on Chat app डालें.
    2. अवतार का यूआरएल में, https://developers.google.com/chat/images/quickstart-app-avatar.png डालें.
    3. ब्यौरा में, Add-on Chat app डालें.
    4. काम करने का तरीका में जाकर, 1:1 मैसेज पाएं और स्पेसेज़ और ग्रुप बातचीत में शामिल हों को चुनें.
    5. कनेक्शन सेटिंग में जाकर, एचटीटीपी एंडपॉइंट यूआरएल चुनें. इसके बाद, बॉक्स में Cloud फ़ंक्शन ट्रिगर का यूआरएल चिपकाएं.
    6. पुष्टि करने वाली ऑडियंस में, एचटीटीपी एंडपॉइंट यूआरएल चुनें.
    7. प्रॉडक्ट की उपलब्धता में जाकर, अपने डोमेन में Google Chat ऐप्लिकेशन को कुछ लोगों और ग्रुप के लिए उपलब्ध कराएं को चुनें. इसके बाद, अपना ईमेल पता डालें.
    8. लॉग में जाकर, लॉगिंग में गड़बड़ियां लॉग करें को चुनें.
  7. सेव करें पर क्लिक करें.

Chat ऐप्लिकेशन, Chat पर मैसेज पाने और उनका जवाब देने के लिए तैयार है.

Chat ऐप्लिकेशन की जांच करना

Chat ऐप्लिकेशन की जांच करने के लिए, Chat ऐप्लिकेशन में डायरेक्ट मैसेज स्पेस खोलें और कोई मैसेज भेजें:

  1. उस Google Workspace खाते का इस्तेमाल करके Google Chat खोलें जिसका इस्तेमाल आपने, खुद को भरोसेमंद टेस्टर के तौर पर जोड़ते समय किया था.

    Google Chat पर जाएं

  2. नई चैट पर क्लिक करें.
  3. एक या उससे ज़्यादा लोगों को जोड़ें फ़ील्ड में, अपने Chat ऐप्लिकेशन का नाम लिखें.
  4. नतीजों में से अपना चैट ऐप्लिकेशन चुनें. एक डायरेक्ट मैसेज खुलता है.

  5. ऐप्लिकेशन को भेजे गए नए डायरेक्ट मैसेज में, Hello लिखें और enter दबाएं.

Chat ऐप्लिकेशन के मैसेज में एक कार्ड होता है. इसमें मैसेज भेजने वाले व्यक्ति का नाम और अवतार इमेज दिखती है. इसकी इमेज यहां दी गई है:

Chat ऐप्लिकेशन, मैसेज भेजने वाले व्यक्ति के डिसप्ले नेम और अवतार की इमेज वाले कार्ड के साथ जवाब दे रहा है

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

समस्या हल करें

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

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

व्यवस्थित करें

हमारा सुझाव है कि आप इस ट्यूटोरियल में इस्तेमाल किए गए संसाधनों के लिए, अपने Google Cloud खाते से शुल्क लगने से बचने के लिए, Cloud प्रोजेक्ट मिटा दें.

  1. Google Cloud Console में, संसाधन मैनेज करें पेज पर जाएं. मेन्यू > IAM और एडमिन > संसाधन मैनेज करें पर क्लिक करें.

    संसाधन मैनेजर पर जाएं

  2. प्रोजेक्ट की सूची में, वह प्रोजेक्ट चुनें जिसे मिटाना है. इसके बाद, मिटाएं पर क्लिक करें.
  3. डायलॉग में, प्रोजेक्ट आईडी टाइप करें. इसके बाद, प्रोजेक्ट को मिटाने के लिए बंद करें पर क्लिक करें.