वेबहुक

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

पार्टनर वेबहुक और एजेंट वेबहुक

अपने वेबहुक को पार्टनर लेवल या एजेंट लेवल पर कॉन्फ़िगर किया जा सकता है.

  • आपका पार्टनर वेबहुक, हर उस एजेंट पर लागू होता है जिसे मैनेज करने का अधिकार आपके पास है. अगर आपके एजेंट एक जैसा काम करते हैं या सिर्फ़ एक एजेंट है, तो पार्टनर वेबहुक का इस्तेमाल करें.
  • एजेंट वेबहुक, अलग-अलग एजेंट पर लागू होते हैं. अगर अलग-अलग व्यवहार वाले कई एजेंट ऑपरेट किए जाते हैं, तो हर एजेंट के लिए अलग वेबहुक सेट किया जा सकता है.

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

एजेंट का वेबहुक कॉन्फ़िगर करें

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

  1. Business Communications डेवलपर कंसोल खोलें और अपने आरबीएम पार्टनर के Google खाते से साइन इन करें.
  2. अपने एजेंट पर क्लिक करें.
  3. इंटिग्रेशन पर क्लिक करें.
  4. वेबहुक के लिए, कॉन्फ़िगर करें पर क्लिक करें.
  5. वेबहुक एंडपॉइंट यूआरएल के लिए, "https://" से शुरू होने वाला अपना वेबहुक यूआरएल डालें.
  6. अपने clientToken की वैल्यू नोट करें. आपको यह पुष्टि करनी होगी कि आपको जो मैसेज मिल रहे हैं वे Google से आ रहे हैं.
  7. दिए गए clientToken पैरामीटर वाले POST अनुरोध को स्वीकार करने के लिए, अपने वेबहुक को कॉन्फ़िगर करें. साथ ही, रिस्पॉन्स के मुख्य हिस्से के तौर पर, secret पैरामीटर की सादे टेक्स्ट वाली वैल्यू के साथ 200 OK रिस्पॉन्स भेजें.

    उदाहरण के लिए, अगर आपके वेबहुक को यहां दिए गए बॉडी कॉन्टेंट के साथ POST अनुरोध मिलता है, तो

    {
      "clientToken":"SJENCPGJESMGUFPY",
      "secret":"1234567890"
    }
    

    इसके बाद, आपके वेबहुक को clientToken वैल्यू की पुष्टि करनी चाहिए. अगर clientToken सही है, तो रिस्पॉन्स के मुख्य हिस्से के तौर पर 1234567890 के साथ 200 OK रिस्पॉन्स दिखेगा:

    // clientToken from Configure
    const myClientToken = "SJENCPGJESMGUFPY";
    
    // Example endpoint
    app.post("/rbm-webhook", (req, res) => {
      const msg = req.body;
      if (msg.clientToken === myClientToken) {
          res.status(200).send(msg.secret);
          return;
      }
      res.send(400);
    });
    
  8. Developer Console में, पुष्टि करें पर क्लिक करें. आरबीएम जब आपके वेबहुक की पुष्टि करता है, तब डायलॉग बंद हो जाता है.

आने वाले मैसेज की पुष्टि करें

वेबहुक को किसी भी ईमेल पते से मैसेज मिल सकते हैं, इसलिए आपको इस बात की पुष्टि करनी होगी कि Google ने मैसेज का कॉन्टेंट प्रोसेस करने से पहले ही मैसेज भेजे हैं.

यह पुष्टि करने के लिए कि Google ने आपको मैसेज भेजा है, यह तरीका अपनाएं:

  1. मैसेज का X-Goog-Signature हेडर एक्सट्रैक्ट करें. यह मैसेज के मुख्य हिस्से के पेलोड की हैश की गई, base64-एन्कोडेड कॉपी है.
  2. अनुरोध के message.body एलिमेंट में मौजूद आरबीएम पेलोड को Base-64-डिकोड करें.
  3. अपने वेबहुक के क्लाइंट टोकन (जिसका इस्तेमाल आपने वेबहुक सेट अप करते समय किया था) को कुंजी के तौर पर इस्तेमाल करके, base-64 डिकोड किए गए मैसेज पेलोड के बाइट का SHA512 HMAC बनाएं और नतीजे को base64 कोड में बदलें.
  4. X-Goog-Signature हैश की तुलना, अपने बनाए गए हैश से करें.
    • अगर हैश मेल खाते हैं, तो आपने पुष्टि की है कि Google ने मैसेज भेज दिया है.
    • अगर हैश मेल नहीं खाते हैं, तो किसी अच्छे मैसेज पर हैशिंग प्रोसेस की जांच करें.

      अगर आपकी हैशिंग प्रोसेस ठीक से काम कर रही है और आपको ऐसा मैसेज मिलता है कि आपको धोखाधड़ी से भेजा गया है, तो हमसे संपर्क करें.

Node.js

  if ((requestBody.hasOwnProperty('message')) && (requestBody.message.hasOwnProperty('data'))) {
    // Validate the received hash to ensure the message came from Google RBM
    let userEventString = Buffer.from(requestBody.message.data, 'base64');
    let hmac = crypto.createHmac('sha512', CLIENT_TOKEN);
    let data = hmac.update(userEventString);
    let genHash = data.digest('base64');
    let headerHash = req.header('X-Goog-Signature');

    if (headerHash === genHash) {
      let userEvent = JSON.parse(userEventString);

      console.log('userEventString: ' + userEventString);
      handleMessage(userEvent);
    } else {
      console.log('hash mismatch - ignoring message');
    }
  }

  res.sendStatus(200);
  

अगले चरण

वेबहुक को कॉन्फ़िगर करने के बाद, आपका एजेंट आपके टेस्ट डिवाइसों से मैसेज पा सकता है. अपने सेटअप की पुष्टि करने के लिए, मैसेज भेजें.