---
title: "ಪ್ರತಿ ಕರೆಯ ಡೈನಾಮಿಕ್ ಕಾನ್ಫಿಗರೇಶನ್"
description: "ನೀವು ನಿಯಂತ್ರಿಸುವ webhook ನಲ್ಲಿನ ಕಸ್ಟಮ್ ಲಾಜಿಕ್ ಆಧರಿಸಿ, ಪ್ರತಿಯೊಂದು ಒಳಬರುವ ಕರೆಗೂ ಉತ್ತರಿಸುವ ಏಜೆಂಟ್ ಅನ್ನು ಆಯ್ಕೆಮಾಡಿ — ಅಥವಾ ಅದರ prompt ಮತ್ತು ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಪ್ರತ್ಯೇಕವಾಗಿ ಮರುಬರೆಯಿರಿ."
---

ಡೀಫಾಲ್ಟ್ ಆಗಿ ಪ್ರತಿ ಫೋನ್ ಸಂಖ್ಯೆ ಮತ್ತು ಪ್ರಕಟಿಸಬಹುದಾದ ಕೀಗೆ ಸ್ಥಿರ ಏಜೆಂಟ್
ನಿಯೋಜಿಸಲಾಗಿರುತ್ತದೆ. ನಿಮಗೆ **ಕರೆಮಾಡುವವರಿಗನುಗುಣವಾದ** ಅಥವಾ **ಸಂದರ್ಶಕರಿಗನುಗುಣವಾದ** ಗ್ರಾಹಕೀಕರಣ
ಬೇಕಾದಾಗ — VIP ರೂಟಿಂಗ್, ಲಾಗಿನ್ ಆಗಿರುವ ಬಳಕೆದಾರರ ಸಂದರ್ಭ, A/B prompt ಪರೀಕ್ಷೆಗಳು — 
ವೆಬ್‌ಹುಕ್ ಮೋಡ್‌ಗೆ ಬದಲಿಸಿ ಮತ್ತು ನಿಮ್ಮ ಸರ್ವರ್‌ಗೆ ನಿರ್ಧರಿಸಲು ಬಿಡಿ.

## ಇದು ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ

1. ನೀವು [`telephony.incoming`](/kn/webhooks/events)
   (ಫೋನ್) ಅಥವಾ [`web.incoming`](/kn/webhooks/events) (ವಿಜೆಟ್)
   ಈವೆಂಟ್‌ಗೆ ಸಬ್‌ಸ್ಕ್ರೈಬ್ ಮಾಡುತ್ತೀರಿ. ಎರಡೂ **ತಡೆಹಿಡಿಯುವ** ವೆಬ್‌ಹುಕ್‌ಗಳಾಗಿವೆ:
   ಕರೆ ಮುಂದುವರಿಸುವ ಮೊದಲು ThunderPhone ನಿಮ್ಮ ಪ್ರತಿಕ್ರಿಯೆಗಾಗಿ ಗರಿಷ್ಠ
   10 ಸೆಕೆಂಡುಗಳವರೆಗೆ ಕಾಯುತ್ತದೆ.
2. ThunderPhone ನಿಮಗೆ `{call_id, from_number, to_number}` ಕಳುಹಿಸುತ್ತದೆ (ವಿಜೆಟ್
   ಸೆಷನ್‌ಗಳು ಸಂಖ್ಯೆಗಳ ಬದಲಿಗೆ ವಿಜೆಟ್-ನಿರ್ದಿಷ್ಟ ಫೀಲ್ಡ್‌ಗಳನ್ನು ಹೊಂದಿರುತ್ತವೆ — 
   [ವಿನಂತಿ ಸ್ಕೀಮಾ](/kn/webhooks/call-incoming) ನೋಡಿ).
3. ನಿಮ್ಮ ಸರ್ವರ್ ಏಜೆಂಟ್ ಕಾನ್ಫಿಗರೇಶನ್‌ನೊಂದಿಗೆ ಪ್ರತಿಕ್ರಿಯಿಸುತ್ತದೆ (prompt, ಧ್ವನಿ,
   ಉತ್ಪನ್ನ, ಪರಿಕರಗಳು). ThunderPhone ಕರೆಯಲ್ಲಿ ಆ ಕಾನ್ಫಿಗರೇಶನ್ ಅನ್ನು ಬಳಸುತ್ತದೆ.
4. ನೀವು `{}` ಹಿಂತಿರುಗಿಸಿದರೆ, ಸಮಯ ಮೀರಿದರೆ, ಅಥವಾ ದೋಷ ಉಂಟಾದರೆ, ಸ್ಥಿರವಾಗಿ ನಿಯೋಜಿಸಲಾದ
   ಏಜೆಂಟ್ ಅನ್ನು ಪರ್ಯಾಯವಾಗಿ ಬಳಸಲಾಗುತ್ತದೆ. ಸುರಕ್ಷಿತ ಡೀಫಾಲ್ಟ್.

<Note>
  ವೆಬ್‌ಹುಕ್ ಎಂಡ್‌ಪಾಯಿಂಟ್‌ಗೆ ಅಥವಾ ಹಳೆಯ ಏಕ-URL ವೆಬ್‌ಹುಕ್‌ಗೆ ತಲುಪಿಸಿದರೂ,
  ಫೋನ್ ಕರೆಗಳು (`telephony.incoming`) ಮತ್ತು ವಿಜೆಟ್ ಸೆಷನ್‌ಗಳಿಗೆ
  (`web.incoming`) ಒಂದೇ ರೀತಿಯಲ್ಲಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ.
</Note>

<Warning>
  **ಇನ್‌ಲೈನ್ ವೆಬ್‌ಹುಕ್-ಕಾನ್ಫಿಗರ್ ಮಾಡಿದ ಕರೆಗಳಲ್ಲಿ ThunderPhone ಒಪ್ಪಿಗೆ ಘೋಷಣೆ
  ಪ್ಲೇ ಆಗುವುದಿಲ್ಲ.** ಈ ಮಾರ್ಗವು ಏಜೆಂಟ್-ಮಟ್ಟದ ಕರೆ-ಆರಂಭದ ಘೋಷಣೆಯನ್ನು
  ಬಿಟ್ಟುಹೋಗುತ್ತದೆ ಮತ್ತು ThunderPhone ನ ಒಪ್ಪಿಗೆ-ಘೋಷಣೆ ಚೌಕಟ್ಟಿನಿಂದ
  (ಸೇವಾ ನಿಯಮಗಳು, "ರೆಕಾರ್ಡಿಂಗ್ ಮತ್ತು ಒಪ್ಪಿಗೆ" ವಿಭಾಗ) ಸ್ಪಷ್ಟವಾಗಿ ಹೊರಗಿಡಲಾಗಿದೆ. ಈ
  ಕರೆಗಳಲ್ಲಿನ ಎಲ್ಲಾ ರೆಕಾರ್ಡಿಂಗ್, ಮೇಲ್ವಿಚಾರಣೆ, AI-ಭಾಗವಹಿಸುವಿಕೆ ಮತ್ತು
  ಕರೆಮಾಡುವವರ-ಗುರುತಿಸುವಿಕೆ ಸೂಚನೆಗಳು ಹಾಗೂ ಒಪ್ಪಿಗೆಗಳಿಗೆ ನಿಮ್ಮ ಸಂಸ್ಥೆಯೇ ಹೊಣೆಗಾರ.
  ಇನ್‌ಲೈನ್ ವೆಬ್‌ಹುಕ್ ಮೋಡ್ ಸಕ್ರಿಯಗೊಳಿಸುವ ಮೊದಲು ಅವುಗಳನ್ನು ನಿಮ್ಮ ಸ್ವಂತ ಹರಿವಿನಲ್ಲಿ —
  ಉದಾಹರಣೆಗೆ prompt ನ ಆರಂಭಿಕ ಸ್ಕ್ರಿಪ್ಟ್‌ನಲ್ಲಿ — ಒದಗಿಸಿ. ಉಳಿಸಿದ `agent_id` ಅನ್ನು ಉಲ್ಲೇಖಿಸುವ
  ವೆಬ್‌ಹುಕ್ ಪ್ರತಿಕ್ರಿಯೆಯು ಆ ಏಜೆಂಟ್‌ನ ಸಾಮಾನ್ಯ ರೆಕಾರ್ಡಿಂಗ್ ಮತ್ತು ಬಹಿರಂಗಪಡಿಸುವಿಕೆ ನೀತಿಯನ್ನು ಬಳಸುತ್ತದೆ.
</Warning>

## 1. ವೆಬ್‌ಹುಕ್ ಗಮ್ಯಸ್ಥಾನವನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಿ

<Tabs>
<Tab title="ಫೋನ್ ಕರೆಗಳು">
ಫೋನ್ ಸಂಖ್ಯೆಗಳಿಗೆ, ನಿಮ್ಮ ಎಂಡ್‌ಪಾಯಿಂಟ್ ಅನ್ನು `telephony.incoming` ಗೆ ಸಬ್‌ಸ್ಕ್ರೈಬ್ ಮಾಡಿ:

```bash
curl -X POST https://api.thunderphone.com/v1/developer/webhook-endpoints \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "label":  "Prod call-incoming",
    "url":    "https://example.com/thunderphone/incoming",
    "events": ["telephony.incoming"]
  }'
```

ಪ್ರತಿಕ್ರಿಯೆಯು ಒಮ್ಮೆ ಮಾತ್ರದ `secret` ಅನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ — ಅದನ್ನು ಉಳಿಸಿಕೊಳ್ಳಿ;
ಸಹಿ ಪರಿಶೀಲನೆಗಾಗಿ ಅದನ್ನು ಬಳಸುತ್ತೀರಿ.
</Tab>
<Tab title="ವೆಬ್ ವಿಜೆಟ್">
ವಿಜೆಟ್ ಸೆಷನ್‌ಗಳಿಗೆ, ನಿಮ್ಮ ಎಂಡ್‌ಪಾಯಿಂಟ್ URL ಒಳಗೊಂಡಿರುವ `mode="webhook"` ಹೊಂದಿದ
ಪ್ರಕಟಿಸಬಹುದಾದ ಕೀ ರಚಿಸಿ:

```bash
curl -X POST https://api.thunderphone.com/v1/publishable-key \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name":            "Dynamic widget",
    "mode":            "webhook",
    "webhook_url":     "https://example.com/thunderphone/widget-incoming",
    "allowed_domains": ["example.com"]
  }'
```

ಪ್ರತಿ ಸೆಷನ್ ಆರಂಭದಲ್ಲಿ ವಿಜೆಟ್ ಈ URL ಗೆ POST ಮಾಡುತ್ತದೆ.
</Tab>
</Tabs>

## 2. ಹ್ಯಾಂಡ್ಲರ್ ಅನ್ನು ಅನುಷ್ಠಾನಗೊಳಿಸಿ

ಮೂರು ಸಾಮಾನ್ಯ ನಿಯಮಗಳು:

- ಪ್ರತಿ ವಿನಂತಿಯಲ್ಲೂ **ಸಹಿಯನ್ನು ಪರಿಶೀಲಿಸಿ** (ನೋಡಿ
  [ವೆಬ್‌ಹುಕ್ ಸಹಿಗಳನ್ನು ಪರಿಶೀಲಿಸಿ](/kn/guides/verify-webhook-signatures)).
  ಅಭಿವೃದ್ಧಿ ಪರಿಸರದಲ್ಲಿ ಇದನ್ನು ಬಿಟ್ಟುಬಿಡಬೇಡಿ — ಒಮ್ಮೆ ಸರಿಯಾಗಿ ಮಾಡಿ, ಮರುಬಳಸಿ.
- **ವೇಗವಾಗಿ ಪ್ರತಿಕ್ರಿಯಿಸಿ**. ಹತ್ತು ಸೆಕೆಂಡುಗಳು ಕಟ್ಟುನಿಟ್ಟಿನ ಮಿತಿಯಾಗಿದ್ದು, ಪ್ರತಿ ಸೆಕೆಂಡೂ
  ಕರೆಮಾಡುವವರಿಗೆ ಮೌನ ಸಮಯವಾಗಿದೆ. ಅಗತ್ಯವಿದ್ದರೆ ಡೇಟಾಬೇಸ್ ಲುಕ್‌ಅಪ್‌ಗಳನ್ನು ಮಾಡಿ, ಆದರೆ
  ಡೌನ್‌ಸ್ಟ್ರೀಮ್ LLMಗಳನ್ನು ಸಿಂಕ್ರೋನಸ್ ಆಗಿ ಕರೆಯಬೇಡಿ — ಡೈನಾಮಿಕ್ prompt ರಚನೆ ಬೇಕಿದ್ದರೆ,
  ಮುಂಚಿತವಾಗಿ ಲೆಕ್ಕಹಾಕಿ ಮತ್ತು ಕ್ಯಾಶ್ ಮಾಡಿ.
- **ಸ್ಪಷ್ಟವಾಗಿ ಫಾಲ್‌ಬ್ಯಾಕ್ ಮಾಡಿ**. ಯಾವುದೇ ಅನಿರೀಕ್ಷಿತ ಸ್ಥಿತಿಯು `{}` ಅನ್ನು ಹಿಂತಿರುಗಿಸಬೇಕು,
  ಇದರಿಂದ ಸ್ಥಿರವಾಗಿ ನಿಯೋಜಿಸಲಾದ ಏಜೆಂಟ್ ಕರೆಯನ್ನು ನಿರ್ವಹಿಸುತ್ತದೆ.

<CodeGroup>
```python FastAPI
import hashlib
import hmac
import json
import os

from fastapi import FastAPI, HTTPException, Request

app = FastAPI()
SECRET = os.environ["THUNDERPHONE_WEBHOOK_SECRET"]

def verify(body: bytes, sig: str) -> bool:
    expected = hmac.new(SECRET.encode(), body, hashlib.sha256).hexdigest()
    return hmac.compare_digest(expected, sig or "")

@app.post("/thunderphone/incoming")
async def incoming(request: Request):
    body = await request.body()
    if not verify(body, request.headers.get("X-ThunderPhone-Signature", "")):
        raise HTTPException(401)

    event = json.loads(body)
    if event["type"] not in ("telephony.incoming", "web.incoming"):
        return {}  # fall back to default

    caller = event["data"]["from_number"]
    # Cheap DB lookup: is this a known VIP?
    customer = lookup_customer(caller)
    if customer and customer.tier == "vip":
        return {
            "prompt":  f"You are a VIP concierge for {customer.name}. Be proactive…",
            "voice":   "john",
            "product": "storm-base",
        }
    return {}  # default agent handles non-VIPs

def lookup_customer(phone: str):
    # ... your CRM integration ...
    pass
```

```javascript Express
import crypto from "node:crypto";
import express from "express";

const app = express();
const SECRET = process.env.THUNDERPHONE_WEBHOOK_SECRET;

function verify(body, sig) {
  const expected = crypto.createHmac("sha256", SECRET).update(body).digest("hex");
  return sig &&
    crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(sig));
}

app.post(
  "/thunderphone/incoming",
  express.raw({ type: "application/json" }),
  async (req, res) => {
    if (!verify(req.body, req.header("X-ThunderPhone-Signature"))) {
      return res.sendStatus(401);
    }
    const event = JSON.parse(req.body.toString("utf8"));

    const IMPORTANT_TYPES = new Set([
      "telephony.incoming",
      "web.incoming",
    ]);
    if (!IMPORTANT_TYPES.has(event.type)) return res.json({});

    const customer = await lookupCustomer(event.data.from_number);
    if (customer?.tier === "vip") {
      return res.json({
        prompt:  `You are a VIP concierge for ${customer.name}. Be proactive…`,
        voice:   "john",
        product: "storm-base",
      });
    }
    res.json({}); // fall back to default agent
  },
);
```
</CodeGroup>

## 3. ಪ್ರತಿಕ್ರಿಯೆ ಸ್ಕೀಮಾ

ಪ್ರತಿಕ್ರಿಯೆಯ ಬಾಡಿಯು
[ಒಳಬರುವ-ಕರೆ ಪ್ರತಿಕ್ರಿಯೆ ಸ್ಕೀಮಾ](/kn/webhooks/call-incoming)
ಜೊತೆಗೆ ನಿಖರವಾಗಿ ಹೊಂದಿಕೆಯಾಗುತ್ತದೆ. ಸಾಮಾನ್ಯವಾಗಿ ಬಳಸುವ ಫೀಲ್ಡ್‌ಗಳು:

| ಫೀಲ್ಡ್ | ವಿಧ | ವಿವರಣೆ |
|-------|------|-------------|
| `prompt` | ಸ್ಟ್ರಿಂಗ್ (ಅಗತ್ಯವಿದೆ) | ಏಜೆಂಟ್‌ಗಾಗಿ ಸಿಸ್ಟಮ್ prompt |
| `voice` | ಸ್ಟ್ರಿಂಗ್ (ಅಗತ್ಯವಿದೆ) | [`GET /v1/voices`](/api-reference/agents#voices) ನಿಂದ ಧ್ವನಿ ಐಡಿ |
| `product` | ಸ್ಟ್ರಿಂಗ್ | ಡೀಫಾಲ್ಟ್ ಆಗಿ `spark` |
| `background_track` | ಸ್ಟ್ರಿಂಗ್ \| ನಲ್ | ಆಂಬಿಯೆಂಟ್ ಆಡಿಯೊ ಐಡಿ |
| `acknowledgement_prompt_mode` | ಸ್ಟ್ರಿಂಗ್ | `auto` ಅಥವಾ `manual` (ಅಂಗೀಕಾರದೊಂದಿಗೆ Storm ಮಾತ್ರ) |
| `acknowledgement_prompt` | ಸ್ಟ್ರಿಂಗ್ | ಮೋಡ್ `manual` ಆಗಿರುವಾಗ ಅಗತ್ಯವಿದೆ |
| `tools` | ಅರೇ | ಇನ್‌ಲೈನ್ ಫಂಕ್ಷನ್-ಟೂಲ್ ಸ್ಕೀಮಾಗಳು — [ಫಂಕ್ಷನ್ ಟೂಲ್‌ಗಳು](/kn/tools/overview) ನೋಡಿ |

<Note>
  ಪ್ರತಿ-ಕರೆಯ ಮಾತನಾಡುವ ಕ್ರಮ ಮತ್ತು `max_hold_seconds` ವೆಬ್‌ಹುಕ್
  ಪ್ರತಿಕ್ರಿಯೆಯಲ್ಲಿ ಲಭ್ಯವಿಲ್ಲ. ನೀವು ಉಲ್ಲೇಖಿಸುವ
  [ಏಜೆಂಟ್](/api-reference/agents) ನಲ್ಲಿ ಅವುಗಳನ್ನು ಹೊಂದಿಸಿ.
</Note>

### ಉಳಿಸಿದ ಏಜೆಂಟ್ ಅನ್ನು ಉಳಿಸಿಕೊಳ್ಳಿ ಮತ್ತು ವೇರಿಯಬಲ್‌ಗಳನ್ನು ಒದಗಿಸಿ

ಪ್ರತಿ-ಕರೆ ಡೇಟಾದೊಂದಿಗೆ ಆ ಸಂಸ್ಥೆಯ ಉಳಿಸಿದ ಏಜೆಂಟ್ ಅನ್ನು ಬಳಸಲು `{"agent_id": 12, "variables": {"name": "Ada"}}` ಹಿಂತಿರುಗಿಸಿ.
ಅದರ prompt ನಲ್ಲಿ `{{name}}` ಅಥವಾ
`{{name|Friend}}` ಇರಬಹುದು. ವೆಬ್‌ಹುಕ್ ವೇರಿಯಬಲ್‌ಗಳು ವಿನಂತಿ-ಹಂತದ ವೇರಿಯಬಲ್‌ಗಳ
ಮೇಲೆ ವಿಲೀನಗೊಳ್ಳುತ್ತವೆ; ನಲ್ ಇದ್ದರೆ ಪ್ಲೇಸ್‌ಹೋಲ್ಡರ್ ಡೀಫಾಲ್ಟ್ ಬಳಸಲಾಗುತ್ತದೆ, ಅಥವಾ
ಯಾವುದನ್ನೂ ಒದಗಿಸದಿದ್ದರೆ ಖಾಲಿ ಪಠ್ಯ ಬಳಸಲಾಗುತ್ತದೆ. ಅಂತಿಮ ಮೌಲ್ಯಗಳು ಮತ್ತು ಪರಿಹರಿಸದ
ಹೆಸರುಗಳು ಕರೆ ವಿವರಗಳು ಮತ್ತು ಪೂರ್ಣಗೊಳಿಸುವಿಕೆ ವೆಬ್‌ಹುಕ್‌ಗಳಲ್ಲಿ ಕಾಣಿಸುತ್ತವೆ.
ಉಳಿಸಿದ-ಏಜೆಂಟ್ ಪ್ರತಿಕ್ರಿಯೆಗಳು `agent_id` ಮತ್ತು `variables` ಅನ್ನು ಮಾತ್ರ ಸ್ವೀಕರಿಸುತ್ತವೆ. `prompt`
ಇದ್ದರೆ, ಪ್ರತಿಕ್ರಿಯೆಯು ಇನ್‌ಲೈನ್ ಕಾನ್ಫಿಗರೇಶನ್ ಬಳಸುತ್ತದೆ ಮತ್ತು `agent_id` ಅನ್ನು ನಿರ್ಲಕ್ಷಿಸುತ್ತದೆ (ನಲ್
ಅಥವಾ ಪೂರ್ಣಾಂಕವಲ್ಲದ ಮೆಟಾಡೇಟಾ ಸೇರಿದಂತೆ); ಇನ್‌ಲೈನ್ prompt ಇನ್ನೂ ಮಾನ್ಯವಾಗಿರಬೇಕು. ಇನ್‌ಲೈನ್
ಕಾನ್ಫಿಗರೇಶನ್ ಪ್ರತಿಕ್ರಿಯೆಗಳಲ್ಲಿ `variables` ಕೂಡ ಇರಬಹುದು. ಉಳಿಸಿದ-ಏಜೆಂಟ್ ಪ್ರತಿಕ್ರಿಯೆಗಳು
ಫೋನ್ ಮತ್ತು ವಿಜೆಟ್ ಕರೆಗಳೆರಡರಲ್ಲೂ ಏಜೆಂಟ್‌ನ ನಿಯೋಜಿತ A/B ವಿಭಜನೆಯನ್ನು ಬಳಸುತ್ತವೆ, ನಂತರ ವೇರಿಯಬಲ್‌ಗಳನ್ನು ರೆಂಡರ್ ಮಾಡುತ್ತವೆ. [ಕರೆ ವೇರಿಯಬಲ್‌ಗಳು](/kn/guides/call-variables)
ನಲ್ಲಿ ಮಿತಿಗಳು ಮತ್ತು ಸೆಷನ್ API ಬೆಂಬಲವನ್ನು ನೋಡಿ. ನಿರ್ಬಂಧಿಸುವ ಕಾನ್ಫಿಗರೇಶನ್ ಲೆಗಸಿ
ಫೋನ್-ಸಂಖ್ಯೆ/ಸಂಸ್ಥೆ URL ಅಥವಾ ವೆಬ್‌ಹುಕ್-ಮೋಡ್ ವಿಜೆಟ್ ಕೀಯಿಂದ ಬರುತ್ತದೆ; ಎಂಡ್‌ಪಾಯಿಂಟ್-ಸಿಸ್ಟಮ್
ಒಳಬರುವ ಈವೆಂಟ್‌ಗಳು ಸೂಚನೆಗಳಷ್ಟೇ.

## ಮಾದರಿಗಳು

### ಲಾಗಿನ್ ಆಗಿರುವ ಬಳಕೆದಾರರ ಸಂದರ್ಭ

ವೆಬ್‌ಹುಕ್-ಮೋಡ್ ವಿಜೆಟ್‌ಗಳಲ್ಲಿ, ಭೇಟಿ ನೀಡುವವರ ಪುಟಕ್ಕೆ ಅವರು ಯಾರೆಂದು ಈಗಾಗಲೇ
ತಿಳಿದಿರುತ್ತದೆ. ವಿಜೆಟ್ SDK
ಮುಂದಕ್ಕೆ ಕಳುಹಿಸುವ ಕ್ವೆರಿ ಸ್ಟ್ರಿಂಗ್ ಪ್ಯಾರಾಮೀಟರ್‌ನೊಂದಿಗೆ (`?customer_id=123`) ನಿಮ್ಮ ವೆಬ್‌ಹುಕ್‌ಗೆ ಕರೆ ಮಾಡಿ ಮತ್ತು
ಸರ್ವರ್-ಸೈಡ್‌ನಲ್ಲಿ ಗ್ರಾಹಕರನ್ನು ಹುಡುಕಿ.

### A/B prompt ಬಿಡುಗಡೆ

ನೀವು ಇದನ್ನು ಸ್ವತಃ ನಿರ್ಮಿಸುವ ಮೊದಲು, ThunderPhone ನಲ್ಲಿ ಸ್ಥಳೀಯ
[ಪ್ರಯೋಗಗಳು](/kn/guides/concepts) ವೈಶಿಷ್ಟ್ಯವಿದೆ ಎಂಬುದನ್ನು ಗಮನಿಸಿ
(`/dashboard/experiments` ಮತ್ತು ಏಜೆಂಟ್ ಬಿಲ್ಡರ್‌ನ **A/B** ಟ್ಯಾಬ್) ಅದು
ವೇರಿಯಂಟ್‌ಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುತ್ತದೆ, ಟ್ರಾಫಿಕ್ ವಿಭಜಿಸುತ್ತದೆ ಮತ್ತು ಪ್ರತಿ ವೇರಿಯಂಟ್‌ನ ಫಲಿತಾಂಶಗಳನ್ನು ಹೋಲಿಸುತ್ತದೆ —
ವೆಬ್‌ಹುಕ್ ಅಗತ್ಯವಿಲ್ಲ.

ಆದರೂ ನಿಮಗೆ ವೆಬ್‌ಹುಕ್-ಭಾಗದ ನಿಯಂತ್ರಣ ಬೇಕಾದರೆ: `call_id` ಅನ್ನು ಹ್ಯಾಶ್ ಮಾಡಿ → ಬಕೆಟ್;
`0..49` ಗೆ prompt A ಮತ್ತು `50..99` ಗೆ prompt B ಒದಗಿಸಿ. ನೀವು ಆಯ್ಕೆಮಾಡಿದ
ಬಕೆಟ್ ಅನ್ನು ನಿಮ್ಮ ಸ್ವಂತ DB ಯಲ್ಲಿ ದಾಖಲಿಸಿ ಮತ್ತು ನಂತರ ಪೂರ್ಣಗೊಂಡ ಕರೆಯ ಗ್ರೇಡ್‌ನೊಂದಿಗೆ
ಸಂಬಂಧಿಸಿ.

### ಸಮಯ-ಆಧಾರಿತ ರೂಟಿಂಗ್

ವ್ಯವಹಾರ ಸಮಯ → "ಲೈವ್ ಬೆಂಬಲ" ಏಜೆಂಟ್; ವ್ಯವಹಾರೇತರ ಸಮಯ → "ಸಂದೇಶ ತೆಗೆದುಕೊಳ್ಳಿ"
ಏಜೆಂಟ್. ನಿಮ್ಮ ಹ್ಯಾಂಡ್ಲರ್‌ನಲ್ಲಿ `new Date().getUTCHours()` ಆಧಾರಿತ ಸರಳ ಸ್ವಿಚ್.

---

## ಮುಂದಿನ ಹಂತಗಳು

<CardGroup cols={2}>
  <Card title="ಒಳಬರುವ-ಕರೆ ವೆಬ್‌ಹುಕ್ ಉಲ್ಲೇಖ" icon="phone" href="/kn/webhooks/call-incoming">
    ಪ್ರತಿಯೊಂದು ಕಾನ್ಫಿಗರೇಶನ್ ಕೀ ಸೇರಿದಂತೆ ನಿಖರವಾದ ವಿನಂತಿ + ಪ್ರತಿಕ್ರಿಯೆ ಸ್ಕೀಮಾಗಳು.
  </Card>
  <Card title="ವೆಬ್‌ಹುಕ್ ಸಹಿಗಳನ್ನು ಪರಿಶೀಲಿಸಿ" icon="shield-check" href="/kn/guides/verify-webhook-signatures">
    HMAC ಅನ್ನು ಒಮ್ಮೆ ಸರಿಯಾಗಿ ಮಾಡಿ; ಎಲ್ಲೆಡೆ ಮರುಬಳಸಿ.
  </Card>
  <Card title="ಟೂಲ್ ಏಕೀಕರಣ ನಿರ್ಮಿಸಿ" icon="screwdriver-wrench" href="/kn/guides/build-tool-integration">
    ಡೈನಾಮಿಕ್ ರೂಟಿಂಗ್ ಅನ್ನು ಪ್ರತಿ-ಏಜೆಂಟ್ ಟೂಲ್‌ಗಳೊಂದಿಗೆ ಸಂಯೋಜಿಸಿ.
  </Card>
  <Card title="ವಿತರಣಾ ಸೆಮ್ಯಾಂಟಿಕ್ಸ್" icon="bolt" href="/kn/webhooks/overview">
    ಮರುಪ್ರಯತ್ನಗಳು, ಕ್ರಮೀಕರಣ, ಸಮಯಮಿತಿಗಳು.
  </Card>
</CardGroup>
