---
title: "ਵੈੱਬਹੁੱਕਸ ਸੰਖੇਪ ਜਾਣਕਾਰੀ"
description: "ThunderPhone ਰੀਅਲ-ਟਾਈਮ ਇਵੈਂਟ ਕਿਵੇਂ ਡਿਲੀਵਰ ਕਰਦਾ ਹੈ, ਸਿਗਨੇਚਰਾਂ ਦੀ ਪੁਸ਼ਟੀ ਕਿਵੇਂ ਕਰਨੀ ਹੈ, ਅਤੇ ਲੈਗੇਸੀ ਤੇ ਐਂਡਪੌਇੰਟ-ਆਧਾਰਿਤ ਡਿਲੀਵਰੀ ਮਾਡਲਾਂ ਦੀ ਤੁਲਨਾ ਕਿਵੇਂ ਹੁੰਦੀ ਹੈ।"
---

ThunderPhone ਤੁਹਾਡੇ ਸਰਵਰ ਨੂੰ HTTP `POST` ਬੇਨਤੀਆਂ ਭੇਜਦਾ ਹੈ ਜਦੋਂ ਕਾਲ ਦੌਰਾਨ ਕੁਝ ਹੁੰਦਾ ਹੈ — ਇਨਬਾਊਂਡ ਕਾਲ ਸ਼ੁਰੂ ਹੁੰਦੀ ਹੈ, ਕਾਲ ਸਮਾਪਤ ਹੁੰਦੀ ਹੈ, ਗ੍ਰੇਡਿੰਗ ਰਨ ਪੂਰਾ ਹੁੰਦਾ ਹੈ, ਅਲਰਟ ਚੱਲਦਾ ਹੈ, ਆਦਿ। ਇੱਥੇ **ਦੋ ਡਿਲਿਵਰੀ ਮਾਡਲ** ਹਨ:

<CardGroup cols={2}>
  <Card title="ਵੈੱਬਹੁੱਕ ਐਂਡਪੌਇੰਟ (ਸਿਫਾਰਸ਼ੀ)" icon="bolt" href="/pa/webhooks/endpoints">
    ਕਈ URL, ਹਰੇਕ ਐਂਡਪੌਇੰਟ ਲਈ ਵੱਖਰੇ ਸੀਕ੍ਰੇਟ, ਹਰੇਕ ਐਂਡਪੌਇੰਟ ਲਈ ਵੱਖਰੇ ਇਵੈਂਟ ਫਿਲਟਰ,
    ਅਤੇ ਆਟੋਮੈਟਿਕ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ਾਂ।
    `GET/POST/PATCH/DELETE /v1/developer/webhook-endpoints` ਰਾਹੀਂ ਪ੍ਰਬੰਧਿਤ ਕਰੋ।
  </Card>
  <Card title="ਸਿੰਗਲ-URL ਲੈਗੇਸੀ ਵੈੱਬਹੁੱਕ" icon="link" href="/api-reference/organizations#legacy-single-url-webhook">
    ਹਰੇਕ ਸੰਸਥਾ ਲਈ ਇੱਕ URL। ਇਸ ਵਿੱਚ ਕਾਲ-ਲਾਈਫਸਾਈਕਲ ਇਵੈਂਟ ਸ਼ਾਮਲ ਹੁੰਦੇ ਹਨ, ਜਿਸ ਵਿੱਚ
    **ਬਲਾਕਿੰਗ** ਕੌਂਫਿਗਰੇਸ਼ਨ ਅਦਲਾ-ਬਦਲਾਂ ਵੀ ਸ਼ਾਮਲ ਹਨ। `GET/PUT /v1/webhook` 'ਤੇ ਪ੍ਰਬੰਧਿਤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ।
  </Card>
</CardGroup>

[ਇਵੈਂਟ ਕੈਟਾਲੌਗ](/pa/webhooks/events) ਵਿੱਚ ਸਾਰੇ 10 ਇਵੈਂਟ ਕਿਸਮਾਂ
ਵੈੱਬਹੁੱਕ ਐਂਡਪੌਇੰਟਾਂ ਰਾਹੀਂ ਡਿਲਿਵਰ ਕੀਤੀਆਂ ਜਾਂਦੀਆਂ ਹਨ। ਛੇ ਕਾਲ-ਲਾਈਫਸਾਈਕਲ ਇਵੈਂਟ
(`telephony.incoming`, `telephony.complete`, `telephony.tool`,
`web.incoming`, `web.complete`, `web.tool`) **ਵੀ** ਲੈਗੇਸੀ
ਸਿੰਗਲ-URL ਵੈੱਬਹੁੱਕ ਨੂੰ ਭੇਜੇ ਜਾਂਦੇ ਹਨ — ਜੇ ਤੁਹਾਡੇ ਕੋਲ ਲੈਗੇਸੀ URL ਅਤੇ ਮੇਲ ਖਾਂਦਾ
ਐਂਡਪੌਇੰਟ ਦੋਵੇਂ ਹਨ, ਤਾਂ ਤੁਸੀਂ ਇਵੈਂਟ **ਦੋਵੇਂ** ਮਾਰਗਾਂ 'ਤੇ ਪ੍ਰਾਪਤ ਕਰਦੇ ਹੋ। ਬਲਾਕਿੰਗ
ਵਿਹਾਰ ([`telephony.incoming` / `web.incoming` ਕੌਂਫਿਗਰੇਸ਼ਨ
ਅਦਲਾ-ਬਦਲ](/pa/webhooks/call-incoming) ਅਤੇ ਵੈੱਬਹੁੱਕ-ਮੋਡ
[ਟੂਲ ਡਿਸਪੈਚ](/pa/tools/overview)) ਸਿਰਫ਼
ਲੈਗੇਸੀ ਮਾਰਗ 'ਤੇ ਹੁੰਦਾ ਹੈ; ਹਰੇਕ ਐਂਡਪੌਇੰਟ ਡਿਲਿਵਰੀ ਫਾਇਰ-ਐਂਡ-ਫਰਗੇਟ ਸੂਚਨਾ ਹੁੰਦੀ ਹੈ।

## ਪੇਲੋਡ ਫਾਰਮੈਟ

ਐਂਡਪੌਇੰਟ ਡਿਲਿਵਰੀਆਂ `data`, `event_id`, ਅਤੇ
`type` ਵਾਲਾ ਇੱਕ JSON ਆਬਜੈਕਟ ਹੁੰਦੀਆਂ ਹਨ:

```json
{
  "data": {
    "call_id": 987654321,
    "from_number": "+14155550199",
    "to_number": "+15551234567"
  },
  "event_id": "3f6b2ad0-1c9e-4a57-9f2b-8f6f0f9d2f11",
  "type": "telephony.incoming"
}
```

`event_id` ਹਰੇਕ ਭੇਜੇ ਗਏ ਇਵੈਂਟ ਲਈ ਵਿਲੱਖਣ ਹੁੰਦਾ ਹੈ। ਇਹ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ਾਂ
**ਅਤੇ** ਇਵੈਂਟ ਪ੍ਰਾਪਤ ਕਰਨ ਵਾਲੇ ਹਰੇਕ ਐਂਡਪੌਇੰਟ ਵਿੱਚ ਇੱਕੋ ਜਿਹਾ ਹੁੰਦਾ ਹੈ — ਇਸ ਦੇ ਆਧਾਰ 'ਤੇ ਡੀਡਿਊਪਲੀਕੇਟ ਕਰੋ।

ਲੈਗੇਸੀ ਸਿੰਗਲ-URL ਵੈੱਬਹੁੱਕ ਉਹੀ `type` ਅਤੇ `data` ਭੇਜਦਾ ਹੈ, ਪਰ
`event_id` **ਤੋਂ ਬਿਨਾਂ**:

```json
{
  "type": "telephony.incoming",
  "data": { "call_id": 987654321, "from_number": "+14155550199", "to_number": "+15551234567" }
}
```

ਵਾਇਰ 'ਤੇ, ਹਰੇਕ ਬਾਡੀ ਕੈਨੋਨਿਕਲ ਤਰੀਕੇ ਨਾਲ ਸੀਰੀਅਲਾਈਜ਼ ਹੁੰਦੀ ਹੈ — ਕੁੰਜੀਆਂ
ਅੱਖਰਕ੍ਰਮ ਅਨੁਸਾਰ ਕ੍ਰਮਬੱਧ, ਕੋਈ ਵ੍ਹਾਈਟਸਪੇਸ ਨਹੀਂ, UTF-8। ਇਨ੍ਹਾਂ ਡੌਕਸ ਵਿੱਚ
ਸੁਚੱਜੇ ਤਰੀਕੇ ਨਾਲ ਫਾਰਮੈਟ ਕੀਤੀਆਂ ਉਦਾਹਰਨਾਂ ਸਿਰਫ਼ ਪੜ੍ਹਨਯੋਗਤਾ ਲਈ ਹਨ।

ਇਵੈਂਟ ਕਿਸਮਾਂ ਅਤੇ ਪੇਲੋਡ ਫੀਲਡਾਂ ਦੀ ਪੂਰੀ ਸੂਚੀ ਲਈ [ਇਵੈਂਟ ਕੈਟਾਲੌਗ](/pa/webhooks/events) ਵੇਖੋ।

## ਦਸਤਖ਼ਤ ਤਸਦੀਕ

ਹਰ ਬੇਨਤੀ ਵਿੱਚ `X-ThunderPhone-Signature` ਹੈਡਰ ਵਿੱਚ **ਕੱਚੇ ਬੇਨਤੀ
ਬਾਡੀ** ਉੱਤੇ ਇੱਕ HMAC-SHA256 ਦਸਤਖ਼ਤ ਹੁੰਦਾ ਹੈ। ਸਾਈਨਿੰਗ ਕੁੰਜੀ ਐਂਡਪੌਇੰਟ ਦਾ
`secret` ਹੁੰਦਾ ਹੈ (ਜਾਂ ਪੁਰਾਣੀਆਂ ਡਿਲਿਵਰੀਆਂ ਲਈ ਤੁਹਾਡੀ ਸੰਸਥਾ-ਪੱਧਰੀ ਵੈੱਬਹੁੱਕ
`secret`)।

### ਕਦਮ

1. ਕਿਸੇ ਵੀ ਪਾਰਸਿੰਗ ਤੋਂ **ਪਹਿਲਾਂ** ਕੱਚਾ ਬੇਨਤੀ ਬਾਡੀ ਪੜ੍ਹੋ।
2. `hmac_sha256(secret, body).hexdigest()` ਦੀ ਗਣਨਾ ਕਰੋ।
3. `X-ThunderPhone-Signature` ਹੈਡਰ ਨਾਲ ਸਥਿਰ ਸਮੇਂ ਵਿੱਚ ਤੁਲਨਾ ਕਰੋ।

ਅਸੀਂ ਬਿਲਕੁਲ ਉਹੀ ਬਾਈਟਾਂ ਸਾਈਨ ਕਰਦੇ ਹਾਂ ਜੋ ਅਸੀਂ ਭੇਜਦੇ ਹਾਂ, ਅਤੇ ਉਹ ਬਾਈਟਾਂ
ਕੈਨੋਨਿਕਲ JSON ਸੀਰੀਅਲਾਈਜ਼ੇਸ਼ਨ ਹੁੰਦੀਆਂ ਹਨ (ਕ੍ਰਮਬੱਧ ਕੁੰਜੀਆਂ, ਸੰਖੇਪ ਵੱਖਰੇਕਰਨ)। ਇਸ ਲਈ
ਕੱਚੇ ਬਾਡੀ ਦੇ ਮੁਕਾਬਲੇ ਤਸਦੀਕ ਹਮੇਸ਼ਾਂ ਕੰਮ ਕਰਦੀ ਹੈ — ਅਤੇ ਜੇ ਤੁਹਾਡਾ ਫ੍ਰੇਮਵਰਕ
ਤੁਹਾਨੂੰ ਸਿਰਫ਼ ਪਾਰਸ ਕੀਤਾ JSON ਦਿੰਦਾ ਹੈ, ਤਾਂ ਇਸ ਨੂੰ ਕ੍ਰਮਬੱਧ ਕੁੰਜੀਆਂ ਅਤੇ
ਸੰਖੇਪ ਵੱਖਰੇਕਰਨ ਨਾਲ ਦੁਬਾਰਾ ਸੀਰੀਅਲਾਈਜ਼ ਕਰਨ ਨਾਲ ਇੱਕੋ ਜਿਹੀਆਂ ਬਾਈਟਾਂ ਬਣਦੀਆਂ ਹਨ। ਦੋਵੇਂ ਤਰੀਕੇ
[ਤਸਦੀਕ ਗਾਈਡ](/pa/guides/verify-webhook-signatures) ਵਿੱਚ ਸ਼ਾਮਲ ਹਨ।

<CodeGroup>
```python Python
import hmac
import hashlib

def verify_signature(body: bytes, signature: str, secret: str) -> bool:
    expected = hmac.new(
        secret.encode("utf-8"),
        body,
        hashlib.sha256,
    ).hexdigest()
    return hmac.compare_digest(expected, signature or "")

# Example Flask handler
from flask import Flask, request, abort
app = Flask(__name__)

@app.post("/thunderphone-webhook")
def handle():
    body = request.get_data()
    sig = request.headers.get("X-ThunderPhone-Signature", "")
    if not verify_signature(body, sig, WEBHOOK_SECRET):
        abort(401)
    event = request.get_json()
    # dispatch on event["type"] …
    return "", 204
```

```javascript Node.js (Express)
import crypto from "node:crypto";
import express from "express";

function verifySignature(body, signature, secret) {
  const expected = crypto
    .createHmac("sha256", secret)
    .update(body)
    .digest("hex");
  if (!signature || expected.length !== signature.length) return false;
  return crypto.timingSafeEqual(
    Buffer.from(expected),
    Buffer.from(signature),
  );
}

const app = express();
app.post(
  "/thunderphone-webhook",
  express.raw({ type: "application/json" }),
  (req, res) => {
    const sig = req.header("X-ThunderPhone-Signature") || "";
    if (!verifySignature(req.body, sig, process.env.WEBHOOK_SECRET)) {
      return res.sendStatus(401);
    }
    const event = JSON.parse(req.body.toString("utf8"));
    // dispatch on event.type …
    res.sendStatus(204);
  },
);
```
</CodeGroup>

## ਡਿਲਿਵਰੀ ਅਰਥ-ਵਿਧੀ

ਇਹ ਅਰਥ-ਵਿਧੀਆਂ **ਐਂਡਪੌਇੰਟ** ਡਿਲਿਵਰੀਆਂ 'ਤੇ ਲਾਗੂ ਹੁੰਦੀਆਂ ਹਨ। ਪੁਰਾਣਾ ਸਿੰਗਲ-URL
ਵੈੱਬਹੁੱਕ ਬਿਨਾਂ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ਾਂ ਦੇ ਇੱਕ ਸਿੰਗਲ ਸਮਕਾਲੀ ਯਤਨ ਹੈ।

<AccordionGroup>
  <Accordion title="ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ਾਂ">
    ਹਰ ਇਵੈਂਟ ਦਾ ਤੁਰੰਤ ਇੱਕ ਵਾਰ ਯਤਨ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। ਕੋਈ ਵੀ `2xx` ਜਵਾਬ
    ਡਿਲਿਵਰੀ ਦੀ ਪੁਸ਼ਟੀ ਕਰਦਾ ਹੈ। ਕਿਸੇ ਵੀ ਹੋਰ ਨਤੀਜੇ ਉੱਤੇ (ਗੈਰ-2xx,
    ਕਨੈਕਸ਼ਨ ਗਲਤੀ, ਟਾਈਮਆਊਟ) ਅਸੀਂ **ਪਹਿਲੇ ਯਤਨ ਤੋਂ ਬਾਅਦ 1 ਮਿੰਟ, 5 ਮਿੰਟ, 30 ਮਿੰਟ, 2 ਘੰਟੇ, 6 ਘੰਟੇ,
    12 ਘੰਟੇ ਅਤੇ 24 ਘੰਟੇ** 'ਤੇ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰਦੇ ਹਾਂ — 24 ਘੰਟਿਆਂ ਵਿੱਚ
    8 ਯਤਨ। ਜੇ ਹਰ ਯਤਨ ਅਸਫਲ ਹੋ ਜਾਂਦਾ ਹੈ, ਤਾਂ ਡਿਲਿਵਰੀ ਰੁਕ ਜਾਂਦੀ ਹੈ ਅਤੇ ਐਂਡਪੌਇੰਟ ਨੂੰ
    [ਵੈੱਬਹੁੱਕ ਐਂਡਪੌਇੰਟਾਂ](/pa/webhooks/endpoints) ਵਿੱਚ
    `status="failing"` ਵਜੋਂ ਚਿੰਨ੍ਹਿਤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। ਜਦੋਂ ਹੀ ਪੇਲੋਡ ਟਿਕਾਊ ਤੌਰ 'ਤੇ ਸਵੀਕਾਰ ਹੋਵੇ,
    `2xx` ਵਾਪਸ ਕਰੋ; ਅਸਮਕਾਲੀ ਢੰਗ ਨਾਲ ਪ੍ਰਕਿਰਿਆ ਕਰੋ।
  </Accordion>

  <Accordion title="ਕ੍ਰਮਬੱਧਤਾ">
    ਡਿਲਿਵਰੀ ਕ੍ਰਮਬੱਧਤਾ ਸਭ ਤੋਂ ਵਧੀਆ ਯਤਨ ਦੇ ਆਧਾਰ 'ਤੇ ਹੈ। ਅਭਿਆਸ ਵਿੱਚ ਅਸੀਂ ਇਵੈਂਟਾਂ ਨੂੰ
    ਉਹਨਾਂ ਦੇ ਨਿਕਲਣ ਦੇ ਕ੍ਰਮ ਵਿੱਚ ਡਿਲਿਵਰ ਕਰਦੇ ਹਾਂ, ਪਰ ਅਸਫਲਤਾ ਹੋਣ 'ਤੇ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ਾਂ ਕ੍ਰਮ ਬਦਲ ਸਕਦੀਆਂ ਹਨ।
    ਹਮੇਸ਼ਾ `call_id` / ਆਬਜੈਕਟ id ਰਾਹੀਂ ਡੁਪਲੀਕੇਟ ਹਟਾਓ ਅਤੇ ਮਿਲਾਨ ਕਰੋ।
  </Accordion>

  <Accordion title="ਡੁਪਲੀਕੇਟ">
    ਡਿਲਿਵਰੀ **ਘੱਟੋ-ਘੱਟ-ਇੱਕ-ਵਾਰ** ਹੈ: ਉਸ ਜਵਾਬ ਤੋਂ ਬਾਅਦ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼, ਜੋ ਅਸੀਂ ਕਦੇ
    ਨਹੀਂ ਦੇਖਿਆ, ਕਿਸੇ ਇਵੈਂਟ ਦੀ ਡੁਪਲੀਕੇਟ ਬਣਾ ਸਕਦੀ ਹੈ। ਹਰ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਵਿੱਚ ਉਹੀ
    `event_id` ਹੁੰਦਾ ਹੈ, ਇਸ ਲਈ ਪ੍ਰਕਿਰਿਆ ਕੀਤੀਆਂ id ਸਟੋਰ ਕਰੋ ਅਤੇ ਦੁਹਰਾਵੇ ਛੱਡੋ। `event_id`
    ਐਂਡਪੌਇੰਟਾਂ ਵਿਚਕਾਰ ਵੀ ਸਾਂਝਾ ਹੁੰਦਾ ਹੈ — ਇੱਕੋ ਇਵੈਂਟ ਲਈ ਸਬਸਕ੍ਰਾਈਬ ਕੀਤੇ ਦੋ ਐਂਡਪੌਇੰਟਾਂ ਨੂੰ
    ਉਹੀ `event_id` ਮਿਲਦਾ ਹੈ।
  </Accordion>

  <Accordion title="ਟਾਈਮਆਊਟ">
    ਐਂਡਪੌਇੰਟ ਡਿਲਿਵਰੀਆਂ ਵਿੱਚ ਹਰ ਯਤਨ ਲਈ **30 ਸਕਿੰਟ** ਦਾ ਟਾਈਮਆਊਟ ਹੁੰਦਾ ਹੈ। ਪੁਰਾਣੇ ਪਾਥ 'ਤੇ,
    ਲਾਈਵ ਕਾਲ ਵਿਹਾਰ ਨੂੰ ਨਿਯੰਤਰਿਤ ਕਰਨ ਵਾਲੀਆਂ ਬਲੌਕਿੰਗ ਬੇਨਤੀਆਂ —
    [`telephony.incoming` / `web.incoming`](/pa/webhooks/call-incoming)
    ਕਨਫਿਗਰੇਸ਼ਨ ਅਦਲਾ-ਬਦਲੀ — **10 ਸਕਿੰਟ** ਬਾਅਦ ਟਾਈਮਆਊਟ ਹੋ ਜਾਂਦੀਆਂ ਹਨ, ਪਰ ਹੌਲਾ
    ਜਵਾਬ ਕਾਲ ਚੁੱਕਣ ਵਿੱਚ ਦੇਰੀ ਕਰਦਾ ਹੈ, ਇਸ ਲਈ ਕੁਝ ਸਕਿੰਟਾਂ ਦੇ ਅੰਦਰ ਜਵਾਬ ਦੇਣ ਦਾ ਟੀਚਾ ਰੱਖੋ। ਵੈੱਬਹੁੱਕ-ਮੋਡ
    [ਟੂਲ ਡਿਸਪੈਚ](/pa/tools/overview) ਮੂਲ ਰੂਪ ਵਿੱਚ 20 ਸਕਿੰਟ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹੈ,
    ਅਤੇ ਟੂਲ ਘੋਸ਼ਣਾਵਾਂ ਉੱਚ-ਪੱਧਰੀ `timeout` ਸੈੱਟ ਕਰ ਸਕਦੀਆਂ ਹਨ।
  </Accordion>

  <Accordion title="ਸਰੋਤ IP">
    ਆਊਟਬਾਊਂਡ ਵੈੱਬਹੁੱਕ ThunderPhone ਦੀ ਕਲਾਉਡ IP ਰੇਂਜ ਤੋਂ ਆਉਂਦੇ ਹਨ।
    ਜੇ ਤੁਹਾਡੇ ਫਾਇਰਵਾਲ ਨੂੰ ਅਲਾਊਲਿਸਟ ਦੀ ਲੋੜ ਹੈ, ਤਾਂ ਸਹਾਇਤਾ ਨਾਲ ਸੰਪਰਕ ਕਰੋ ਅਤੇ ਅਸੀਂ
    ਮੌਜੂਦਾ ਰੇਂਜਾਂ ਸਾਂਝੀਆਂ ਕਰਾਂਗੇ।
  </Accordion>
</AccordionGroup>

## ਪੁਰਾਣੇ ਅਤੇ ਐਂਡਪੌਇੰਟ-ਅਧਾਰਿਤ ਵੈੱਬਹੁੱਕਾਂ ਵਿੱਚੋਂ ਚੋਣ

| ਵਿਸ਼ੇਸ਼ਤਾ | ਪੁਰਾਣਾ (`/v1/webhook`) | ਐਂਡਪੌਇੰਟ (`/v1/developer/webhook-endpoints`) |
|---------|------------------------|----------------------------------------------|
| URL ਦੀ ਗਿਣਤੀ | ਹਰ ਸੰਗਠਨ ਲਈ 1 | ਹਰ ਸੰਗਠਨ ਲਈ ਕਈ |
| ਇਵੈਂਟ ਕਵਰੇਜ | ਸਿਰਫ਼ `telephony.*` / `web.*` | ਸਾਰੀਆਂ 10 ਇਵੈਂਟ ਕਿਸਮਾਂ |
| ਇਵੈਂਟ ਫਿਲਟਰ | — | ਪ੍ਰਤੀ-ਐਂਡਪੌਇੰਟ |
| ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ਾਂ | ਕੋਈ ਨਹੀਂ | 24 ਘੰਟਿਆਂ ਵਿੱਚ 8 ਯਤਨ |
| ਐਨਵਲਪ | `type` + `data` | `type` + `data` + `event_id` |
| ਸੀਕ੍ਰੇਟ ਰੋਟੇਸ਼ਨ | ਸਿੰਗਲ ਸੀਕ੍ਰੇਟ ਬਦਲਦਾ ਹੈ | ਪ੍ਰਤੀ-ਐਂਡਪੌਇੰਟ ਸੀਕ੍ਰੇਟ |
| ਮਿਟਾਏ ਬਿਨਾਂ ਅਯੋਗ ਕਰੋ | `PUT /v1/webhook` ਨਾਲ `{"url": ""}` | `status=disabled` |
| ਸਥਿਤੀ ਦ੍ਰਿਸ਼ਯਤਾ | — | `active` / `disabled` / `failing` |
| ਬਲੌਕਿੰਗ ਕਨਫਿਗਰੇਸ਼ਨ ਅਦਲਾ-ਬਦਲੀ | ਹਾਂ ([`telephony.incoming` / `web.incoming`](/pa/webhooks/call-incoming)) | ਕਦੇ ਨਹੀਂ — ਸਿਰਫ਼ ਸੂਚਨਾਵਾਂ |
| ਸਭ ਤੋਂ ਵਧੀਆ ਲਈ | ਡਾਇਨਾਮਿਕ ਕਾਲ ਕਨਫਿਗਰੇਸ਼ਨ | ਪ੍ਰੋਡਕਸ਼ਨ ਵਿੱਚ ਇਵੈਂਟ ਵਰਤੋਂ |

ਨਵੇਂ ਇੰਟੀਗ੍ਰੇਸ਼ਨਾਂ ਨੂੰ ਐਂਡਪੌਇੰਟ-ਅਧਾਰਿਤ ਵੈੱਬਹੁੱਕਾਂ ਰਾਹੀਂ ਇਵੈਂਟ ਵਰਤਣੇ ਚਾਹੀਦੇ ਹਨ।
ਪੁਰਾਣਾ URL ਕੇਵਲ ਤਦੋਂ ਰੱਖੋ (ਜਾਂ ਜੋੜੋ) ਜੇ ਤੁਸੀਂ ਕਾਲ ਚੁੱਕਣ ਵੇਲੇ ਕਾਲਾਂ ਨੂੰ
ਡਾਇਨਾਮਿਕ ਤੌਰ 'ਤੇ ਕਨਫਿਗਰ ਕਰਦੇ ਹੋ ਜਾਂ ਵੈੱਬਹੁੱਕ-ਮੋਡ ਟੂਲ ਡਿਸਪੈਚ ਵਰਤਦੇ ਹੋ — ਉਹ
ਬੇਨਤੀ/ਜਵਾਬ ਅਦਲਾ-ਬਦਲੀਆਂ ਸਿਰਫ਼ ਪੁਰਾਣੇ ਪਾਥ 'ਤੇ ਚਲਦੀਆਂ ਹਨ।

---

## ਸੰਬੰਧਿਤ

<CardGroup cols={2}>
  <Card title="ਇਵੈਂਟ ਕੈਟਾਲੌਗ" icon="list" href="/pa/webhooks/events">
    ਸਾਰੀਆਂ ਇਵੈਂਟ ਕਿਸਮਾਂ ਅਤੇ ਉਹਨਾਂ ਦੇ ਪੇਲੋਡ।
  </Card>
  <Card title="ਵੈੱਬਹੁੱਕ ਐਂਡਪੌਇੰਟ" icon="bolt" href="/pa/webhooks/endpoints">
    ਕਈ ਐਂਡਪੌਇੰਟਾਂ, ਇਵੈਂਟ ਫਿਲਟਰਾਂ ਅਤੇ ਸੀਕ੍ਰੇਟਾਂ ਦਾ ਪ੍ਰਬੰਧ ਕਰੋ।
  </Card>
  <Card title="telephony.incoming / web.incoming" icon="phone" href="/pa/webhooks/call-incoming">
    ਕਾਲਾਂ ਕਨਫਿਗਰ ਕਰਨ ਲਈ ਤੁਹਾਡੇ ਸਰਵਰ ਨੂੰ ਜਿਸ ਬਲੌਕਿੰਗ ਬੇਨਤੀ ਦਾ ਜਵਾਬ ਦੇਣਾ ਲਾਜ਼ਮੀ ਹੈ।
  </Card>
  <Card title="telephony.complete / web.complete" icon="phone" href="/pa/webhooks/call-complete">
    ਟ੍ਰਾਂਸਕ੍ਰਿਪਟ, ਰਿਕਾਰਡਿੰਗ ਅਤੇ ਮੈਟ੍ਰਿਕਸ ਵਾਲਾ ਕਾਲ ਤੋਂ ਬਾਅਦ ਦਾ ਪੇਲੋਡ।
  </Card>
</CardGroup>
