> This is a page from the ElevenLabs documentation. For a complete page index, fetch https://elevenlabs.io/docs/llms.txt. For the full documentation in a single file, fetch https://elevenlabs.io/docs/llms-full.txt.

# आउटबाउंड मैसेज और टेम्पलेट्स

## जानकारी

कोई एजेंट सक्रिय बातचीत के दौरान ही फ़्री-फ़ॉर्म WhatsApp मैसेज भेज सकता है। किसी यूज़र तक पहले पहुंचने के लिए — जैसे नोटिफ़िकेशन, दोबारा जुड़ने या शेड्यूल की गई कॉल के लिए — आपको Meta से मंज़ूर **मैसेज टेम्प्लेट** भेजना होता है। इस पेज में टेम्प्लेट बनाना, आउटबाउंड मैसेज और कॉल भेजना, और उन्हें बड़े पैमाने पर चलाना शामिल है।

## WhatsApp Manager में टेम्प्लेट बनाना

टेम्प्लेट [WhatsApp Manager](https://business.facebook.com/latest/whatsapp_manager/message_templates) में बनाए और मंज़ूर किए जाते हैं, ElevenLabs में नहीं।

टेम्प्लेट बनाते समय:

* कोई कैटेगरी चुनें: लेन-देन वाले मैसेज के लिए **Utility**, प्रमोशनल मैसेज के लिए **Marketing**, या वेरिफ़िकेशन कोड के लिए **Authentication**। Meta हर कैटेगरी की कीमत और रेट लिमिट अलग तरीके से तय करता है — [WhatsApp pricing](https://developers.facebook.com/documentation/business-messaging/whatsapp/pricing) देखें।
* पैरामीटर फ़ॉर्मैट चुनें: पोज़िशनल (`{{1}}`, `{{2}}`) या नाम वाले (`{{customer_name}}`)। नाम वाले पैरामीटर के लिए, भेजे जाने वाले हर मान पर `parameter_name` ज़रूरी है।
* मंज़ूरी के लिए सबमिट करें। मंज़ूरी में आमतौर पर कुछ मिनट से कुछ घंटे लगते हैं। पेंडिंग या अस्वीकृत टेम्प्लेट भेजा नहीं जा सकता — API रिक्वेस्ट स्वीकार करता है, लेकिन Meta कभी मैसेज डिलीवर नहीं करता।

> **Note**
>
> Meta यह सीमित करता है कि किसी तय अवधि में एक यूज़र कितने [marketing templates](https://developers.facebook.com/documentation/business-messaging/whatsapp/templates/marketing-templates/per-user-limits)
> प्राप्त कर सकता है। अगर कोई मार्केटिंग टेम्प्लेट बिना किसी सूचना के डिलीवर नहीं होता,
> तो यह सीमा एक सामान्य कारण है (Meta त्रुटि 131049)।

## आउटबाउंड मैसेज भेजना

टेम्प्लेट मैसेज भेजने से नई बातचीत शुरू होती है। यूज़र के जवाब देने तक एजेंट चुप रहता है — टेम्प्लेट ही पहला मैसेज होता है और यूज़र के जवाब देने तक कोई बातचीत टाइमर शुरू नहीं होता।

#### डैशबोर्ड

[WhatsApp पेज](https://elevenlabs.io/app/agents/whatsapp) पर जाएं, अपना अकाउंट चुनें और ***Outbound -> Message*** बटन पर क्लिक करें। कोई एजेंट चुनें, WhatsApp यूज़र ID दें, और मैसेज टेम्प्लेट व उसके पैरामीटर चुनें:

![WhatsApp आउटबाउंड मैसेज डायलॉग](/docs/_fern-img/13913c2ccc1d92cb59e7332b6fdb4a8c8c64760a334d1a311fa2007831eeb986.webp)

#### Python

```python
from elevenlabs import ElevenLabs

elevenlabs = ElevenLabs()

elevenlabs.conversational_ai.whatsapp.outbound_message(
    whatsapp_phone_number_id="524029457612345",
    whatsapp_user_id="12213231492",
    template_name="welcome",
    template_language_code="en",
    template_params=[
        {
            "type": "body",
            "parameters": [
                {
                    "type": "text",
                    "parameter_name": "name",
                    "text": "Daniele",
                }
            ],
        }
    ],
    agent_id="agent_9201kwcrbq9qfxaa2t8nnnkqf2w9",
    conversation_initiation_client_data={
        "dynamic_variables": {"customer_name": "Daniele"},
    },
)
```

#### TypeScript

```typescript
import { ElevenLabsClient } from "@elevenlabs/elevenlabs-js";

const elevenlabs = new ElevenLabsClient();

await elevenlabs.conversationalAi.whatsapp.outboundMessage({
  whatsappPhoneNumberId: "524029457612345",
  whatsappUserId: "12213231492",
  templateName: "welcome",
  templateLanguageCode: "en",
  templateParams: [
    {
      type: "body",
      parameters: [
        {
          type: "text",
          parameterName: "name",
          text: "Daniele",
        },
      ],
    },
  ],
  agentId: "agent_9201kwcrbq9qfxaa2t8nnnkqf2w9",
  conversationInitiationClientData: {
    dynamicVariables: { customer_name: "Daniele" },
  },
});
```

#### cURL

```bash
curl -X POST https://api.elevenlabs.io/v1/convai/whatsapp/outbound-message \
  -H "xi-api-key: $ELEVENLABS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "whatsapp_phone_number_id": "524029457612345",
    "whatsapp_user_id": "12213231492",
    "template_name": "welcome",
    "template_language_code": "en",
    "template_params": [
      {
        "type": "body",
        "parameters": [
          {"type": "text", "parameter_name": "name", "text": "Daniele"}
        ]
      }
    ],
    "agent_id": "agent_9201kwcrbq9qfxaa2t8nnnkqf2w9",
    "conversation_initiation_client_data": {
      "dynamic_variables": {"customer_name": "Daniele"}
    }
  }'
```

पूरी रिक्वेस्ट स्कीमा के लिए [API रेफरेंस](/docs/hi/api-reference/whats-app/outbound-message) देखें।

> **Tip**
>
> कोई AI असिस्टेंट इन उदाहरणों को आपके टेम्प्लेट के अनुसार बदल सकता है। उसे ElevenLabs डॉक्स की
> [llms.txt](/docs/hi/llms.txt) (या अधिक विस्तृत [llms-full.txt](/docs/hi/llms-full.txt)) दें, WhatsApp Manager से अपने
> टेम्प्लेट की परिभाषा पेस्ट करें और रिक्वेस्ट मांगें — वह आपके टेम्प्लेट के लिए सही `template_params` के साथ
> cURL कमांड या SDK कॉल बना देगा।

### टेम्प्लेट पैरामीटर

`template_params`, **component** ऑब्जेक्ट की एक सूची है, जिसमें पैरामीटर वाले हर टेम्प्लेट कॉम्पोनेंट के लिए एक ऑब्जेक्ट होता है:

* बॉडी प्लेसहोल्डर के लिए `{"type": "body", "parameters": [...]}`
* पैरामीटर वाले हेडर के लिए `{"type": "header", "parameters": [...]}` (टेक्स्ट, इमेज, दस्तावेज़ या लोकेशन)
* बटन पैरामीटर के लिए `{"type": "button", "sub_type": ..., "index": ..., "parameters": [...]}`

`parameters` में हर एंट्री एक वैल्यू ऑब्जेक्ट होती है, जैसे `{"type": "text", "text": "Daniele"}`। नाम वाले पैरामीटर के टेम्प्लेट के लिए, हर वैल्यू में `parameter_name` शामिल करें। कॉम्पोनेंट रैपर छोड़ना — उदाहरण के लिए, `template_params` में सीधे `{"type": "text", ...}` देना — अस्वीकार कर दिया जाता है।

### प्राप्तकर्ता नंबर का फ़ॉर्मैट

`whatsapp_user_id` में सिर्फ़ अंक होने चाहिए: देश का कोड और उसके बाद नंबर, बिना `+`, स्पेस या डैश के। उदाहरण के लिए, `14155552671`, न कि `+1 (415) 555-2671`।

> **Warning**
>
> कुछ देशों में किसी व्यक्ति के लिए WhatsApp की ID, उसके डायल किए गए नंबर से अलग होती है —
> उदाहरण के लिए, मेक्सिकन नंबरों में देश कोड के बाद अतिरिक्त `1` होता है (`521...`), और ब्राज़ीलियाई
> नंबरों में नौवां अंक हो भी सकता है या नहीं भी। अगर यूज़र ने आपको पहले मैसेज भेजा है, तो उस पिछली बातचीत से
> `whatsapp_user_id` लेना बेहतर है, जिसे आप बातचीत इतिहास से कॉपी कर सकते हैं।

### डायनामिक वेरिएबल, ब्रांच और एनवायरनमेंट

`conversation_initiation_client_data` फ़ील्ड आपको बातचीत के लिए [डायनामिक वेरिएबल](/docs/hi/eleven-agents/customization/personalization/dynamic-variables) सेट करने और उसे किसी खास [एजेंट ब्रांच](/docs/hi/eleven-agents/operate/versioning) व [एनवायरनमेंट](/docs/hi/eleven-agents/integrate/environment-variables) पर पिन करने देता है:

```json
{
  "dynamic_variables": { "customer_name": "Daniele" },
  "branch_id": "agtbrch_8721kwarbs83e233mg1fzkaf9pg0",
  "environment": "staging"
}
```

ये सेटिंग बातचीत के लिए बनी रहती हैं: यूज़र के जवाब देने पर एजेंट अनुरोध की गई ब्रांच और एनवायरनमेंट पर फिर से शुरू होता है। ब्रांच और एनवायरनमेंट की पहले जांच होती है — अगर इनमें से कोई मौजूद नहीं है, तो रिक्वेस्ट त्रुटि के साथ विफल हो जाती है और कोई मैसेज नहीं भेजा जाता।

आउटबाउंड बातचीत को डायनामिक वेरिएबल इसी रिक्वेस्ट फ़ील्ड से मिलते हैं; इनबाउंड बातचीत को वे बातचीत शुरू करने वाले वेबहुक से मिलते हैं — [इनिशियलाइज़ेशन कॉन्टेक्स्ट](/docs/hi/eleven-agents/whatsapp#initialization-context) देखें।

> **Note**
>
> टेम्प्लेट पैरामीटर सिर्फ़ टेम्प्लेट टेक्स्ट भरते हैं — वे एजेंट को उपलब्ध नहीं होते। अगर
> एजेंट को टेम्प्लेट से कोई वैल्यू चाहिए (जैसे ग्राहक का नाम), तो उसे फिर से
> `dynamic_variables` में भेजें।

### भेजने के बाद

सफल रिक्वेस्ट एक `conversation_id` लौटाती है और रेंडर किया गया टेम्प्लेट पहले मैसेज के रूप में आपकी हिस्ट्री में बातचीत दिखाई देती है। यूज़र के जवाब देने तक एजेंट नहीं चलता। टेम्प्लेट भेजने से न अधिकतम-अवधि टाइमर शुरू होता है, न निष्क्रियता टाइमर; दोनों बातचीत फिर से शुरू होने पर शुरू होते हैं। `200` रिस्पॉन्स का मतलब है कि ElevenLabs ने रिक्वेस्ट स्वीकार कर ली — Meta बाद में भी डिलीवरी अस्वीकार कर सकता है। अगर मैसेज कभी नहीं पहुंचता, तो [समस्या निवारण](/docs/hi/eleven-agents/whatsapp/troubleshooting) देखें।

## आउटबाउंड कॉल शेड्यूल करना

आउटबाउंड WhatsApp कॉल के लिए यूज़र की अनुमति चाहिए — [यूज़र कॉल अनुमतियां](https://developers.facebook.com/documentation/business-messaging/whatsapp/calling/user-call-permissions) देखें। [WhatsApp Manager](https://business.facebook.com/latest/whatsapp_manager/message_templates) में **कॉल अनुमति अनुरोध** कॉम्पोनेंट वाला मैसेज टेम्प्लेट बनाएं। कॉल शेड्यूल करने पर ElevenLabs अनुमति की स्थिति जांचता है:

* अनुमति पहले से मिली है: कॉल तुरंत की जाती है।
* अनुमति अभी नहीं मांगी गई है: अनुमति-अनुरोध टेम्प्लेट भेजा जाता है और यूज़र के मंज़ूर करते ही कॉल की जाती है।
* अनुमति अस्वीकार की गई: बातचीत को `User declined the call permission request.` कारण के साथ विफल के रूप में रिकॉर्ड किया जाता है।

#### डैशबोर्ड

[WhatsApp पेज](https://elevenlabs.io/app/agents/whatsapp) पर जाएं, अपना अकाउंट चुनें और ***Outbound -> Call*** बटन पर क्लिक करें। कोई एजेंट चुनें, WhatsApp यूज़र ID दें, और कॉल अनुमति अनुरोध टेम्प्लेट चुनें:

![WhatsApp आउटबाउंड कॉल डायलॉग](/docs/_fern-img/1fcf7968f1651ce8e9474e770aad4dce4e702c69b4522f5bcc65efcd8bf8a3e4.webp)

#### Python

```python
from elevenlabs import ElevenLabs

elevenlabs = ElevenLabs()

elevenlabs.conversational_ai.whatsapp.outbound_call(
    whatsapp_phone_number_id="524029457612345",
    whatsapp_user_id="12213231492",
    whatsapp_call_permission_request_template_name="call_permission",
    whatsapp_call_permission_request_template_language_code="en",
    agent_id="agent_9201kwcrbq9qfxaa2t8nnnkqf2w9",
    conversation_initiation_client_data={
        "dynamic_variables": {"customer_name": "Daniele"},
    },
)
```

#### TypeScript

```typescript
import { ElevenLabsClient } from "@elevenlabs/elevenlabs-js";

const elevenlabs = new ElevenLabsClient();

await elevenlabs.conversationalAi.whatsapp.outboundCall({
  whatsappPhoneNumberId: "524029457612345",
  whatsappUserId: "12213231492",
  whatsappCallPermissionRequestTemplateName: "call_permission",
  whatsappCallPermissionRequestTemplateLanguageCode: "en",
  agentId: "agent_9201kwcrbq9qfxaa2t8nnnkqf2w9",
  conversationInitiationClientData: {
    dynamicVariables: { customer_name: "Daniele" },
  },
});
```

#### cURL

```bash
curl -X POST https://api.elevenlabs.io/v1/convai/whatsapp/outbound-call \
  -H "xi-api-key: $ELEVENLABS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "whatsapp_phone_number_id": "524029457612345",
    "whatsapp_user_id": "12213231492",
    "whatsapp_call_permission_request_template_name": "call_permission",
    "whatsapp_call_permission_request_template_language_code": "en",
    "agent_id": "agent_9201kwcrbq9qfxaa2t8nnnkqf2w9",
    "conversation_initiation_client_data": {
      "dynamic_variables": {"customer_name": "Daniele"}
    }
  }'
```

पूरी रिक्वेस्ट स्कीमा के लिए [API रेफरेंस](/docs/hi/api-reference/whats-app/outbound-call) देखें। आउटबाउंड मैसेज की तरह, `conversation_initiation_client_data` डायनामिक वेरिएबल सेट करता है और बातचीत को किसी ब्रांच व एनवायरनमेंट पर पिन करता है। अज्ञात ब्रांच या एनवायरनमेंट होने पर कॉल शेड्यूल होने से पहले ही रिक्वेस्ट अस्वीकार हो जाती है।

> **Note**
>
> Meta आउटबाउंड कॉल और [Customer Service Window](https://developers.facebook.com/documentation/business-messaging/whatsapp/messages/send-messages#customer-service-windows) के बाहर भेजे गए कॉल अनुमति अनुरोधों के लिए शुल्क लेता है।
> कॉल शेड्यूल करने से पहले WhatsApp Manager में भुगतान का तरीका जोड़ें।

## कैंपेन और बैचिंग

कई यूज़र को कॉल करने के लिए, `whatsapp_params` के साथ [बैच कॉलिंग](/docs/hi/eleven-agents/phone-numbers/batch-calls) का उपयोग करें: फ़ोन नंबर ID और कॉल अनुमति अनुरोध टेम्प्लेट एक बार दें, और हर प्राप्तकर्ता के लिए एक `whatsapp_user_id` दें।

फ़िलहाल आउटबाउंड मैसेज के लिए कोई नेटिव बैच एंडपॉइंट नहीं है। टेम्प्लेट कैंपेन के लिए, हर प्राप्तकर्ता के लिए एक बार [आउटबाउंड मैसेज एंडपॉइंट](/docs/hi/api-reference/whats-app/outbound-message) कॉल करें और अपने नंबर के लिए Meta की मैसेजिंग सीमाओं के भीतर रहें — [मैसेजिंग सीमाएं](https://developers.facebook.com/documentation/business-messaging/whatsapp/messages/messaging-limits) देखें।