Google Chat ऐप्लिकेशन के लिए होम पेज बनाना

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

दो विजेट के साथ ऐप्लिकेशन का होम कार्ड.
पहली इमेज: ऐसे होम पेज का उदाहरण जो Chat ऐप्लिकेशन के साथ डायरेक्ट मैसेज में दिखता है.

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


Chat ऐप्लिकेशन के लिए मैसेजिंग और यूज़र इंटरफ़ेस डिज़ाइन करने और उनकी झलक देखने के लिए, कार्ड बिल्डर का इस्तेमाल करें:

कार्ड बिल्डर खोलें

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

Node.js

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

Python

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

Java

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

Apps Script

Google Chat ऐप्लिकेशन, जिसमें इंटरैक्टिव सुविधाएं चालू हैं. बनाने के लिए Apps Script में इंटरैक्टिव चैट ऐप्लिकेशन के साथ, इस क्विकस्टार्ट की प्रोसेस को पूरा करें.

अपने Chat ऐप्लिकेशन के लिए, ऐप्लिकेशन का होम पेज कॉन्फ़िगर करें

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

Google Cloud Console में अपनी कॉन्फ़िगरेशन सेटिंग अपडेट करने के लिए, यह तरीका अपनाएं:

  1. Google Cloud console में, मेन्यू > ज़्यादा प्रॉडक्ट > Google Workspace > प्रॉडक्ट लाइब्रेरी > Google Chat API पर जाएं.

    Google Chat API पर जाएं

  2. मैनेज करें पर क्लिक करें. इसके बाद, कॉन्फ़िगरेशन टैब पर क्लिक करें.

  3. ऐप्लिकेशन के होम पेज को कॉन्फ़िगर करने के लिए, इंटरैक्टिव सुविधाएं में जाकर, काम करने का तरीका सेक्शन पर जाएं:

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

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

ऐप्लिकेशन का होम कार्ड बनाएं

जब कोई उपयोगकर्ता ऐप्लिकेशन का होम पेज खोलता है, तो आपके Chat ऐप्लिकेशन को APP_HOME इंटरैक्शन इवेंट को मैनेज करना होगा. इसके लिए, उसे pushCard नेविगेशन और Card के साथ RenderActions का एक इंस्टेंस दिखाना होगा. इंटरैक्टिव अनुभव देने के लिए, कार्ड में इंटरैक्टिव विजेट शामिल किए जा सकते हैं. जैसे, बटन या टेक्स्ट इनपुट. Chat ऐप्लिकेशन इन विजेट को प्रोसेस कर सकता है और इनके आधार पर, आपको अन्य कार्ड या डायलॉग दिखा सकता है.

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

Node.js

node/app-home/index.js
app.post('/', async (req, res) => {
  let event = req.body.chat;

  let body = {};
  if (event.type === 'APP_HOME') {
    // App home is requested
    body = { action: { navigations: [{
      pushCard: getHomeCard()
    }]}}
  } else if (event.type === 'SUBMIT_FORM') {
    // The update button from app home is clicked
    commonEvent = req.body.commonEventObject;
    if (commonEvent && commonEvent.invokedFunction === 'updateAppHome') {
      body = updateAppHome()
    }
  }

  return res.json(body);
});

// Create the app home card
function getHomeCard() {
  return { sections: [{ widgets: [
    { textParagraph: {
      text: "Here is the app home 🏠 It's " + new Date().toTimeString()
    }},
    { buttonList: { buttons: [{
      text: "Update app home",
      onClick: { action: {
        function: "updateAppHome"
      }}
    }]}}
  ]}]};
}

Python

python/app-home/main.py
@app.route('/', methods=['POST'])
def post() -> Mapping[str, Any]:
  """Handle requests from Google Chat

  Returns:
      Mapping[str, Any]: the response
  """
  event = request.get_json()
  match event['chat'].get('type'):

    case 'APP_HOME':
      # App home is requested
      body = { "action": { "navigations": [{
        "pushCard": get_home_card()
      }]}}

    case 'SUBMIT_FORM':
      # The update button from app home is clicked
      event_object = event.get('commonEventObject')
      if event_object is not None:
        if 'update_app_home' == event_object.get('invokedFunction'):
          body = update_app_home()

    case _:
      # Other response types are not supported
      body = {}

  return json.jsonify(body)


def get_home_card() -> Mapping[str, Any]:
  """Create the app home card

  Returns:
      Mapping[str, Any]: the card
  """
  return { "sections": [{ "widgets": [
    { "textParagraph": {
      "text": "Here is the app home 🏠 It's " +
        datetime.datetime.now().isoformat()
    }},
    { "buttonList": { "buttons": [{
      "text": "Update app home",
      "onClick": { "action": {
        "function": "update_app_home"
      }}
    }]}}
  ]}]}

Java

java/app-home/src/main/java/com/google/chat/app/home/App.java
/**
 * Process Google Chat events
 *
 * @param event Event from chat.
 * @return GenericJson
 * @throws Exception
 */
@PostMapping("/")
@ResponseBody
public GenericJson onEvent(@RequestBody JsonNode event) throws Exception {
  switch (event.at("/chat/type").asText()) {
    case "APP_HOME":
      // App home is requested
      GenericJson navigation = new GenericJson();
      navigation.set("pushCard", getHomeCard());

      GenericJson action = new GenericJson();
      action.set("navigations", List.of(navigation));

      GenericJson response = new GenericJson();
      response.set("action", action);
      return response;
    case "SUBMIT_FORM":
      // The update button from app home is clicked
      if (event.at("/commonEventObject/invokedFunction").asText().equals("updateAppHome")) {
        return updateAppHome();
      }
  }

  return new GenericJson();
}

// Create the app home card
GoogleAppsCardV1Card getHomeCard() {
  GoogleAppsCardV1TextParagraph textParagraph = new GoogleAppsCardV1TextParagraph();
  textParagraph.setText("Here is the app home 🏠 It's " + new Date());

  GoogleAppsCardV1Widget textParagraphWidget = new GoogleAppsCardV1Widget();
  textParagraphWidget.setTextParagraph(textParagraph);

  GoogleAppsCardV1Action action = new GoogleAppsCardV1Action();
  action.setFunction("updateAppHome");

  GoogleAppsCardV1OnClick onClick = new GoogleAppsCardV1OnClick();
  onClick.setAction(action);

  GoogleAppsCardV1Button button = new GoogleAppsCardV1Button();
  button.setText("Update app home");
  button.setOnClick(onClick);

  GoogleAppsCardV1ButtonList buttonList = new GoogleAppsCardV1ButtonList();
  buttonList.setButtons(List.of(button));

  GoogleAppsCardV1Widget buttonListWidget = new GoogleAppsCardV1Widget();
  buttonListWidget.setButtonList(buttonList);

  GoogleAppsCardV1Section section = new GoogleAppsCardV1Section();
  section.setWidgets(List.of(textParagraphWidget, buttonListWidget));

  GoogleAppsCardV1Card card = new GoogleAppsCardV1Card();
  card.setSections(List.of(section));

  return card;
}

Apps Script

onAppHome फ़ंक्शन लागू करें, जिसे सभी APP_HOME इंटरैक्शन इवेंट के बाद कॉल किया जाता है:

यह उदाहरण वापस लौटकर एक कार्ड संदेश भेजता है card JSON. Google आपके यूआरएल पैरामीटर को कैसे इस्तेमाल करेगा, यह तय करने के लिए Apps Script कार्ड सेवा.

apps-script/app-home/app-home.gs
/**
 * Responds to a APP_HOME event in Google Chat.
 */
function onAppHome() {
  return { action: { navigations: [{
    pushCard: getHomeCard()
  }]}};
}

/**
 * Returns the app home card.
 */
function getHomeCard() {
  return { sections: [{ widgets: [
    { textParagraph: {
      text: "Here is the app home 🏠 It's " + new Date().toTimeString()
    }},
    { buttonList: { buttons: [{
      text: "Update app home",
      onClick: { action: {
        function: "updateAppHome"
      }}
    }]}}
  ]}]};
}

ऐप्लिकेशन के होम इंटरैक्शन पर कार्रवाई करना

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

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

Node.js

node/app-home/index.js
// Update the app home
function updateAppHome() {
  return { renderActions: { action: { navigations: [{
    updateCard: getHomeCard()
  }]}}}
};

Python

python/app-home/main.py
def update_app_home() -> Mapping[str, Any]:
  """Update the app home

  Returns:
      Mapping[str, Any]: the update card render action
  """
  return { "renderActions": { "action": { "navigations": [{
    "updateCard": get_home_card()
  }]}}}

Java

java/app-home/src/main/java/com/google/chat/app/home/App.java
// Update the app home
GenericJson updateAppHome() {
  GenericJson navigation = new GenericJson();
  navigation.set("updateCard", getHomeCard());

  GenericJson action = new GenericJson();
  action.set("navigations", List.of(navigation));

  GenericJson renderActions = new GenericJson();
  renderActions.set("action", action);

  GenericJson response = new GenericJson();
  response.set("renderActions", renderActions);
  return response;
}

Apps Script

इस उदाहरण में, कार्ड का JSON दिखाकर कार्ड का मैसेज भेजा जाता है. Google आपके यूआरएल पैरामीटर को कैसे इस्तेमाल करेगा, यह तय करने के लिए Apps Script कार्ड सेवा.

apps-script/app-home/app-home.gs
/**
 * Updates the home app.
 */
function updateAppHome() {
  return { renderActions: { action: { navigations: [{
    updateCard: getHomeCard()
  }]}}};
}

डायलॉग बॉक्स खोलना

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

एक डायलॉग बॉक्स, जिसमें कई तरह के विजेट दिखाए गए हैं.
तीसरी इमेज: एक डायलॉग बॉक्स, जिसमें उपयोगकर्ता को संपर्क जोड़ने के लिए कहा गया है.

ऐप्लिकेशन के होम पेज से डायलॉग बॉक्स खोलने के लिए, इससे जुड़े इंटरैक्शन को इस हिसाब से प्रोसेस करें updateCard नेविगेशन के साथ renderActions लौट रहा है, जिसमें Card है ऑब्जेक्ट है. यहां दिए गए उदाहरण में, Chat ऐप्लिकेशन किसी ऐप्लिकेशन के होम कार्ड पर बटन पर क्लिक करने पर, CARD_CLICKED इंटरैक्शन इवेंट को प्रोसेस करके डायलॉग बॉक्स खोलता है:

{ renderActions: { action: { navigations: [{ updateCard: { sections: [{
  header: "Add new contact",
  widgets: [{ "textInput": {
    label: "Name",
    type: "SINGLE_LINE",
    name: "contactName"
  }}, { textInput: {
    label: "Address",
    type: "MULTIPLE_LINE",
    name: "address"
  }}, { decoratedText: {
    text: "Add to favorites",
    switchControl: {
      controlType: "SWITCH",
      name: "saveFavorite"
    }
  }}, { decoratedText: {
    text: "Merge with existing contacts",
    switchControl: {
      controlType: "SWITCH",
      name: "mergeContact",
      selected: true
    }
  }}, { buttonList: { buttons: [{
    text: "Next",
    onClick: { action: { function: "openSequentialDialog" }}
  }]}}]
}]}}]}}}

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

  • CLOSE_DIALOG: डायलॉग बॉक्स को बंद करता है और Chat ऐप्लिकेशन के शुरुआती होम कार्ड पर वापस ले जाता है.
  • CLOSE_DIALOG_AND_EXECUTE: डायलॉग बॉक्स को बंद करता है और ऐप्लिकेशन के होम पेज को रीफ़्रेश करता है कार्ड.

नीचे दिया गया कोड सैंपल, डायलॉग को बंद करने और इस पर वापस जाने के लिए CLOSE_DIALOG का इस्तेमाल करता है ऐप्लिकेशन का होम कार्ड:

{ renderActions: { action: {
  navigations: [{ endNavigation: { action: "CLOSE_DIALOG" }}]
}}}

उपयोगकर्ताओं से जानकारी इकट्ठा करने के लिए, एक क्रम में चलने वाले डायलॉग बॉक्स भी बनाए जा सकते हैं. क्रम से चलने वाले डायलॉग बनाने का तरीका जानने के लिए, डायलॉग खोलना और उनका जवाब देना लेख पढ़ें.