# वेबहुक

<Aside type="caution" icon="setting" title="डेवलपर सहायता की आवश्यकता है">
 आपको वेबहुक एलिमेंट को कॉन्फ़िगर करने के लिए अपनी डेवलपर टीम की मदद की आवश्यकता होगी। शुरू करने के लिए इस गाइड को उनके साथ साझा करें।
</Aside>

वेबहुक आपको बाहरी सेवाओं जैसे एनालिटिक्स, CRM सिस्टम और मार्केटिंग टूल में जर्नी डेटा भेजने की सुविधा देते हैं। आप कर सकते हैं:

* जब कोई ग्राहक जर्नी में कोई कार्रवाई करता है तो बाहरी सिस्टम को सूचित करें
* एनालिटिक्स टूल में ग्राहक डेटा भेजें
* विशिष्ट जर्नी इवेंट्स पर तीसरे पक्ष के ईमेल, SMS, या WhatsApp को ट्रिगर करें

<Aside type="note">
विभिन्न उपयोग मामलों और सेवाओं के लिए वेबहुक को कैसे लागू किया जाए, इसके कुछ उदाहरण देखें: [वेबहुक इंटीग्रेशन सैंपल](/hi/developer/guides/customer-journey/webhook-samples/)
</Aside>

## वेबहुक एलिमेंट कैसे सेट अप करें
### वेबहुक एलिमेंट जोड़ें
**वेबहुक** एलिमेंट को कैनवास पर ड्रैग-एंड-ड्रॉप करें। **वेबहुक** को कहीं भी रखें, यह ध्यान में रखते हुए कि आप किसी तीसरे पक्ष की सेवा में कौन सी जर्नी जानकारी भेजने जा रहे हैं।

<img src="/journey-elements-README-40.webp" alt="नाम और अनुरोध सेटिंग्स के साथ कैनवास पर वेबहुक एलिमेंट"/>

### वेबहुक स्टेप को नाम दें और अनुरोध URL और प्रकार निर्दिष्ट करें
**स्टेप का नाम (STEP NAME)** फ़ील्ड में, वेबहुक के लिए एक नाम दर्ज करें। वेबहुक को उन सेवाओं के अनुसार नाम देना आसान हो सकता है जिन्हें वे डेटा भेजते हैं या उपयोग के मामले के अनुसार।

इसके बाद, **URL** फ़ील्ड में, वह अनुरोध URL निर्दिष्ट करें जिस पर डेटा भेजा जाना चाहिए। URL फ़ील्ड के आगे, **अनुरोध प्रकार (REQUEST TYPE)** ड्रॉपडाउन से अनुरोध प्रकार चुनें: `GET` या `POST`।
<img src="/journey-elements-webhook-1.webp" alt="वेबहुक कॉन्फ़िगरेशन इंटरफ़ेस जो URL फ़ील्ड और GET या POST विधि चुनने के लिए REQUEST TYPE ड्रॉपडाउन दिखा रहा है"/>
### हेडर कॉन्फ़िगर करें
**हेडर (HEADERS)** सेक्शन में, कंटेंट प्रकार सेट करें।

डिफ़ॉल्ट रूप से, कंटेंट प्रकार **application/json** है। यदि जिस सेवा में आप वेबहुक भेज रहे हैं, उसे किसी अन्य कंटेंट प्रकार की आवश्यकता है, तो **कंटेंट-प्रकार (Content-Type)** हेडर मान में उपयुक्त एक दर्ज करें।

कंटेंट प्रकार के उदाहरण हैं:

* `x-www-form-urlencoded`
* `text/plain`
* `text/xml`

यदि आवश्यक हो तो **+ हेडर जोड़ें (+ ADD HEADER)** पर क्लिक करके अतिरिक्त हेडर जोड़ें। आप किसी भी हेडर को उसके आगे 'x' आइकन पर क्लिक करके हटा सकते हैं।

उदाहरण के लिए, कुछ API को **HTTP बेसिक ऑथेंटिकेशन** की आवश्यकता हो सकती है। ऐसे अनुरोधों को प्रमाणित करने के लिए, निम्नलिखित करें:

1. एक सादा टेक्स्ट एडिटर खोलें और अपना यूज़रनेम और पासवर्ड बिना स्पेस के, कोलन द्वारा अलग करके टाइप करें। उदाहरण के लिए: `myuser:mypass`
2. इस स्ट्रिंग को Base64 में एन्कोड करें।
3. परिणामी Base64 स्ट्रिंग (उदाहरण के लिए, `bXl1c2VyOm15cGFzcw==`) को कॉपी करें।
4. वेबहुक सेटिंग्स में, मान के साथ एक ऑथराइज़ेशन हेडर जोड़ें: `Basic <आपकी बेस64 स्ट्रिंग>`। सुनिश्चित करें कि "Basic" शब्द के बाद एक स्पेस है।

<img src="/journey-elements-webhook-2.webp" alt="वेबहुक सेटिंग्स में बेसिक ऑथेंटिकेशन के लिए ऑथराइज़ेशन हेडर का उदाहरण जो कंटेंट-प्रकार और ऑथराइज़ेशन हेडर दिखा रहा है"/>
### JSON अनुरोध बॉडी जोड़ें
**डेटा (DATA)** सेक्शन में, अपनी JSON अनुरोध बॉडी दर्ज करें। सुनिश्चित करें कि अनुरोध बॉडी सही JSON प्रारूप में है।

<Aside type="note">
यदि POST अनुरोध भेजे जाने पर डायनामिक डेटा प्लेसहोल्डर के लिए कोई मान नहीं है, तो शून्य मान प्रेषित किया जाएगा।
</Aside>

उदाहरण:
```
{
  "hwid": "{{device:hwid}}"
}
```



### डायनामिक डेटा और मैक्रोज़ का उपयोग करें

**डेटा बिल्डर (DATA BUILDER)** पैनल आपको डायनामिक जानकारी (जैसे उपयोगकर्ता, डिवाइस, टैग, या इवेंट डेटा) को सीधे आपके JSON अनुरोध बॉडी में डालने की अनुमति देता है। डायनामिक डेटा के साथ, आप जर्नी के माध्यम से आगे बढ़ने वाले व्यक्तिगत उपयोगकर्ता के लिए विशिष्ट मान शामिल कर सकते हैं।

इसके लिए:
1. एक **श्रेणी** चुनें। आप तीन श्रेणियों से डेटा खींच सकते हैं:

- **डिवाइस:** डिवाइस डेटा का उपयोग तब करें जब आपको उपयोगकर्ता के डिवाइस से जुड़ी तकनीकी जानकारी की आवश्यकता हो।

- **टैग:** टैग डेटा का उपयोग तब करें जब आप उपयोगकर्ता प्रोफ़ाइल में संग्रहीत जानकारी भेजना चाहते हैं।

- **इवेंट:** इवेंट डेटा का उपयोग तब करें जब वेबहुक को जर्नी के ट्रिगरिंग इवेंट से मान भेजना चाहिए।

2. एक **पैरामीटर** चुनें (उदाहरण के लिए, HWID, पसंदीदा श्रेणी, आदि)।
3. Pushwoosh एक मैक्रो उत्पन्न करता है जो इस तरह दिखता है:

```
{{tag:Language}}
```

4. मैक्रो को कॉपी करें और इसे डेटा सेक्शन में अपनी JSON बॉडी में पेस्ट करें।

जब वेबहुक एक लाइव जर्नी में चलता है, तो Pushwoosh स्वचालित रूप से मैक्रो को उस उपयोगकर्ता के लिए वास्तविक मान से बदल देता है।

<img src="/journey-elements-webhook-3.webp" alt="वेबहुक अनुरोध बॉडी में डायनामिक डेटा प्लेसहोल्डर डालें"/>

### वेबहुक प्रतिक्रिया डेटा को वेरिएबल्स में मैप करें

डेटा भेजने के अलावा, वेबहुक एलिमेंट उस प्रतिक्रिया से डेटा भी कैप्चर कर सकता है जो उसे प्राप्त होती है और उसे वेरिएबल्स में बदल सकता है। इन वेरिएबल्स का उपयोग बाद में जर्नी में किया जा सकता है। उदाहरण के लिए, [**उपयोगकर्ता प्रोफ़ाइल अपडेट करें**](/hi/product/customer-journey/journey-elements/flow-controls/update-user-profile/#use-a-value-from-a-webhook-response) के साथ एक टैग सेट करें, या बाहरी सेवा द्वारा लौटाए गए मान के आधार पर [**समय विलंब**](/hi/product/customer-journey/journey-elements/flow-controls/time-delay/#use-a-date-from-a-webhook-response) शेड्यूल करें। एक पूर्ण जर्नी उदाहरण के लिए, [अपनी जर्नी में वेबहुक प्रतिक्रिया डेटा का उपयोग करना](/hi/product/customer-journey/journey-elements/using-webhook-response-data-in-journeys/) देखें।

**प्रतिक्रिया मैपिंग (RESPONSE MAPPING)** सेक्शन में, **+ मैपिंग जोड़ें (+ ADD MAPPING)** पर क्लिक करें और प्रत्येक मान के लिए दो फ़ील्ड भरें जिसे आप कैप्चर करना चाहते हैं:

* **पथ (Path):** प्रतिक्रिया JSON बॉडी के अंदर मान का स्थान
* **विशेषता (Attribute):** वह नाम जिसका उपयोग आप बाद में जर्नी में इस मान को संदर्भित करने के लिए करते हैं

<img src="/journey-elements-webhook-4.webp" alt="वेबहुक सेटिंग्स में पथ और विशेषता फ़ील्ड और मैपिंग जोड़ें बटन के साथ प्रतिक्रिया मैपिंग सेक्शन"/>

उदाहरण के लिए, यदि आपका CRM इसके साथ प्रतिक्रिया करता है:

```
{
  "data": {
    "user": {
      "id": "789xyz"
    }
  }
}
```

उस ID को कैप्चर करने के लिए **पथ (Path)** को `data.user.id` और **विशेषता (Attribute)** को `crm_user_id` पर सेट करें।

<Aside type="note">
मैपिंग के बारे में जानने के लिए कुछ बातें:

- **पथ (Path)** एक सादा डॉट-पृथक पथ है (ऑब्जेक्ट कुंजियाँ और, एरे के लिए, संख्यात्मक इंडेक्स, उदाहरण के लिए `results.0.code`)। यह वाइल्डकार्ड या फ़िल्टर का समर्थन नहीं करता है, इसलिए यह एक समय में केवल एक विशिष्ट मान को इंगित कर सकता है।
- मान ठीक वैसे ही संग्रहीत किए जाते हैं जैसे वे JSON प्रतिक्रिया से आते हैं (टेक्स्ट, संख्या, या सही/गलत)। कोई प्रकार रूपांतरण नहीं होता है। यदि आप **समय विलंब (Time Delay)** एलिमेंट में किसी मान को दिनांक के रूप में उपयोग करने की योजना बनाते हैं, तो सुनिश्चित करें कि आपकी सेवा इसे उन दिनांक प्रारूपों में से एक में लौटाती है जिनका **समय विलंब (Time Delay)** समर्थन करता है।
- यदि प्रतिक्रिया मान्य JSON नहीं है, या **पथ (Path)** किसी भी चीज़ से मेल नहीं खाता है, तो उस उपयोगकर्ता के लिए संबंधित वेरिएबल नहीं बनाया जाता है। कोई त्रुटि नहीं दिखाई जाती है, और **वेबहुक** स्टेप अभी भी सामान्य रूप से पूरा होता है।
</Aside>

<Aside type="caution">
64 KB से बड़ी प्रतिक्रिया बॉडी को मैपिंग के लिए बिल्कुल भी संसाधित नहीं किया जाता है। यदि आप इससे मानों को मैप करने की योजना बनाते हैं तो अपने एंडपॉइंट द्वारा वापस भेजी जाने वाली प्रतिक्रिया को यथोचित रूप से छोटा रखें।
</Aside>

<LinkCard title="अपनी जर्नी में वेबहुक प्रतिक्रिया डेटा का उपयोग करना" href="/product/customer-journey/journey-elements/using-webhook-response-data-in-journeys/" />

### वेबहुक का परीक्षण करें
यह सत्यापित करने के लिए **वेबहुक का परीक्षण करें (Test webhook)** पर क्लिक करें कि आपका वेबहुक कॉन्फ़िगरेशन सही है और अनुरोध सफलतापूर्वक भेजा गया है।

### अपना कॉन्फ़िगरेशन सहेजें
अपने वेबहुक कॉन्फ़िगरेशन को सहेजने के लिए **लागू करें (Apply)** पर क्लिक करें।