---
title: "ਟੂਲ ਇੰਟੀਗ੍ਰੇਸ਼ਨ (API) ਬਣਾਓ"
description: "ਆਪਣੇ ਏਜੰਟ ਨੂੰ ਗੱਲਬਾਤ ਦੌਰਾਨ ਤੁਹਾਡੀਆਂ API ਕਾਲ ਕਰਨ ਦਿਓ — ਡੇਟਾਬੇਸ ਖੋਜੋ, ਟਿਕਟ ਬਣਾਓ, ਆਰਡਰ ਲੱਭੋ।"
---

ਇੱਕ **ਟੂਲ ਇੰਟੀਗ੍ਰੇਸ਼ਨ** ਮੁੜ ਵਰਤਣਯੋਗ HTTP ਐਂਡਪੌਇੰਟ ਹੈ ਜਿਸਨੂੰ ਏਜੰਟ ਕਾਲ ਦੌਰਾਨ
ਚਲਾ ਸਕਦਾ ਹੈ। ਤੁਸੀਂ ThunderPhone ਨੂੰ ਟੂਲ ਦਾ JSON-schema ਵੇਰਵਾ
ਅਤੇ ਇੱਕ ਐਂਡਪੌਇੰਟ URL ਦਿੰਦੇ ਹੋ; ਏਜੰਟ ਗੱਲਬਾਤ ਦੇ ਆਧਾਰ 'ਤੇ ਇਹ ਤੈਅ ਕਰਦਾ ਹੈ ਕਿ ਇਸਨੂੰ ਕਦੋਂ ਕਾਲ ਕਰਨਾ ਹੈ,
ਅਤੇ ThunderPhone ਆਪਣੇ ਸਰਵਰਾਂ ਤੋਂ ਆਊਟਬਾਊਂਡ HTTP ਬੇਨਤੀ ਕਰਦਾ ਹੈ ਅਤੇ ਜਵਾਬ ਏਜੰਟ ਨੂੰ ਵਾਪਸ ਦਿੰਦਾ ਹੈ।

<Note>
  ਡੈਸ਼ਬੋਰਡ ਇਸ API ਤੋਂ ਬਿਨਾਂ ਜ਼ਿਆਦਾਤਰ ਟੂਲ ਲੋੜਾਂ ਪੂਰੀਆਂ ਕਰਦਾ ਹੈ: **ਕਨੈਕਸ਼ਨ
  → ਐਪਾਂ** ਕੁਝ OAuth ਕਲਿੱਕਾਂ ਨਾਲ Slack, HubSpot, Salesforce, Google Calendar,
  Google Sheets ਅਤੇ Cal.com ਨੂੰ ਕਨੈਕਟ ਕਰਦਾ ਹੈ; **ਕਨੈਕਸ਼ਨ →
  APIਆਂ** ਕਿਸੇ ਵੀ HTTP API ਨੂੰ ਏਜੰਟ ਕਾਰਵਾਈ ਵਿੱਚ ਬਦਲਦਾ ਹੈ (ਇੱਕ cURL ਕਮਾਂਡ
  ਪੇਸਟ ਕਰੋ ਅਤੇ ਇੱਕ AI ਵਿਜ਼ਾਰਡ ਟੂਲ ਦਾ ਖਾਕਾ ਤਿਆਰ ਕਰਦਾ ਹੈ, ਜਿਸ ਵਿੱਚ ਬਿਲਟ-ਇਨ ਟੈਸਟ ਬੇਨਤੀ ਹੁੰਦੀ ਹੈ); ਅਤੇ
  **ਕਨੈਕਸ਼ਨ → MCP** MCP ਸਰਵਰ ਜੋੜਦਾ ਹੈ। ਵੇਖੋ
  [ਕਨੈਕਸ਼ਨ](/pa/guides/concepts)। ਇਹ ਗਾਈਡ APIਆਂ ਇੰਟਰਫੇਸ ਦੇ ਹੇਠਾਂ ਵਾਲੀ
  ਮੁੱਢਲੀ API ਬਾਰੇ ਹੈ।
</Note>

ਇਹ ਗਾਈਡ ਮੌਸਮ ਖੋਜਣ ਵਾਲਾ ਟੂਲ ਸ਼ੁਰੂ ਤੋਂ ਅੰਤ ਤੱਕ ਬਣਾਉਣ ਬਾਰੇ ਦੱਸਦੀ ਹੈ।

## ਟੂਲ ਦੀ ਬਣਤਰ

ਦੋ ਹਿੱਸੇ:

1. **ਸਕੀਮਾ** — ਇੱਕ OpenAI-ਸ਼ੈਲੀ ਫੰਕਸ਼ਨ ਪਰਿਭਾਸ਼ਾ
   (`{type: "function", function: {name, description, parameters}}`)
   ਜੋ LLM ਨੂੰ ਦੱਸਦੀ ਹੈ ਕਿ ਟੂਲ ਕੀ ਕਰਦਾ ਹੈ ਅਤੇ ਇਹ ਕਿਹੜੀਆਂ ਆਰਗੂਮੈਂਟਾਂ ਲੈਂਦਾ ਹੈ।
2. **ਐਂਡਪੌਇੰਟ** — ਉਹ URL ਜਿਸਨੂੰ ThunderPhone ਦੇ ਸਰਵਰ ਉਸ ਵੇਲੇ ਕਾਲ ਕਰਦੇ ਹਨ ਜਦੋਂ
   LLM ਟੂਲ ਵਰਤਣ ਦਾ ਫੈਸਲਾ ਕਰਦਾ ਹੈ। ਬੇਨਤੀ ਇੱਕ JSON POST ਹੁੰਦੀ ਹੈ ਜਿਸਦੀ
   ਬਾਡੀ ਵਿੱਚ LLM ਵੱਲੋਂ ਚੁਣੀਆਂ ਗਈਆਂ ਆਰਗੂਮੈਂਟਾਂ ਹੁੰਦੀਆਂ ਹਨ।

## 1. ਇੱਕ ਐਡੀਟਰ ਚੁਣੋ

<CardGroup cols={2}>
  <Card title="ਡੈਸ਼ਬੋਰਡ" icon="window-maximize">
    **ਕਨੈਕਸ਼ਨ → APIਆਂ** ਖੋਲ੍ਹੋ, API ਕਨੈਕਸ਼ਨ ਬਣਾਓ ਜਾਂ ਸੋਧੋ,
    ਪੈਰਾਮੀਟਰ ਐਡੀਟਰ ਨੂੰ **JSON** 'ਤੇ ਬਦਲੋ, ਅਤੇ ਉੱਥੇ ਫਾਰਮੈਟ ਸ਼ਾਮਲ ਕਰੋ।
  </Card>
  <Card title="ਇੰਟੀਗ੍ਰੇਸ਼ਨ API" icon="plug">
    `POST /v1/integrations` ਨਾਲ ਸਪੈੱਕ ਬਣਾਓ, ਜਾਂ ਇਸਨੂੰ
    `PATCH /v1/integrations/{id}` ਨਾਲ ਅੱਪਡੇਟ ਕਰੋ।
  </Card>
</CardGroup>

ਦੋਵੇਂ ਰਸਤੇ ਇੱਕ ਸੁਰੱਖਿਅਤ ਇੰਟੀਗ੍ਰੇਸ਼ਨ ਬਣਾਉਂਦੇ ਹਨ। ਇਸਨੂੰ ਸੁਰੱਖਿਅਤ ਕਰਨ ਤੋਂ ਬਾਅਦ ਏਜੰਟ ਨਾਲ
ਜੋੜੋ। Agents API ਵਿੱਚ ਲਿਖਣਯੋਗ ਇਨਲਾਈਨ `tools`
ਫੀਲਡ ਨਹੀਂ ਹੈ। ਇਹ ਗਾਈਡ ਇੰਟੀਗ੍ਰੇਸ਼ਨ API ਰਸਤਾ ਵਰਤਦੀ ਹੈ।

## 2. ਇੰਟੀਗ੍ਰੇਸ਼ਨ ਬਣਾਓ

```bash
curl -X POST https://api.thunderphone.com/v1/integrations \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "display_name": "Weather API",
    "spec": {
      "type": "function",
      "function": {
        "name": "get_weather",
        "description": "Return the current weather for a zip code.",
        "parameters": {
          "type": "object",
          "properties": {
            "zip": { "type": "string", "description": "5-digit US ZIP code" }
          },
          "required": ["zip"]
        }
      }
    },
    "endpoint_url":    "https://api.example.com/weather",
    "endpoint_method": "GET",
    "headers": [
      { "key": "X-Api-Key", "value": "your-provider-key" }
    ]
  }'
```

ਵਾਪਸ ਆਇਆ `id` (ਇੱਕ UUID) ਸੇਵ ਕਰੋ।

<Tip>
  ਟੂਲ ਅਤੇ ਹਰੇਕ ਪੈਰਾਮੀਟਰ ਦੇ `description` ਲਈ ਵਾਸਤਵਿਕ ਮਿਹਨਤ ਕਰੋ। LLM ਰਨਟਾਈਮ
  ਦੌਰਾਨ ਇਹਨਾਂ ਸਟਰਿੰਗਾਂ ਦੀ ਵਰਤੋਂ ਇਹ ਫ਼ੈਸਲਾ ਕਰਨ ਲਈ ਕਰਦਾ ਹੈ ਕਿ ਟੂਲ ਨੂੰ ਕਦੋਂ ਅਤੇ
  ਕਿਵੇਂ ਕਾਲ ਕਰਨਾ ਹੈ। ਅਸਪਸ਼ਟ ਵਰਣਨ → ਅਸਪਸ਼ਟ ਟੂਲ ਕਾਲਾਂ।
</Tip>

### ਐਡਰੈੱਸ ਪੈਰਾਮੀਟਰਾਂ ਉੱਤੇ `format: "email"` ਘੋਸ਼ਿਤ ਕਰੋ

ਈਮੇਲ ਐਡਰੈੱਸ ਲੈਣ ਵਾਲੇ ਪੈਰਾਮੀਟਰ ਨੂੰ ਆਪਣੀ ਸਕੀਮਾ ਵਿੱਚ ਇਹ ਦੱਸਣਾ ਚਾਹੀਦਾ ਹੈ:

```json
"email": { "type": "string", "format": "email", "description": "The caller's email address" }
```

`format` ਸਿਰਫ਼ ਇੱਕ ਸੰਕੇਤ ਤੋਂ ਵੱਧ ਹੈ। ਹੱਲ ਕੀਤੀ ਈਮੇਲ ਸਕੀਮਾ ਲਈ, ਤੁਹਾਡੇ
ਐਂਡਪੁਆਇੰਟ ਨੂੰ ਕਾਲ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ThunderPhone ਵੈਲਿਊ ਦੇ ਸ਼ੁਰੂ ਅਤੇ ਅੰਤ ਦੀ
ਖਾਲੀ ਥਾਂ ਹਟਾਉਂਦਾ ਹੈ, ਡੋਮੇਨ ਨੂੰ ਲੋਅਰ-ਕੇਸ ਕਰਦਾ ਹੈ, ਇਕੱਲੇ ਅੰਗਰੇਜ਼ੀ ਸ਼ਬਦਾਂ
`at`, `dot`, `underscore`, `dash`, ਅਤੇ `hyphen` ਨੂੰ ਉਹਨਾਂ ਦੇ ਅੱਖਰਾਂ ਵਿੱਚ
ਬਦਲਦਾ ਹੈ, ਅਤੇ `@`, `.`, `_`, ਅਤੇ `-` ਦੇ ਬਿਲਕੁਲ ਆਲੇ-ਦੁਆਲੇ ਦੀ ਖਾਲੀ ਥਾਂ
ਹਟਾਉਂਦਾ ਹੈ। ਟ੍ਰਾਂਸਕ੍ਰਿਪਟ ਵਿੱਚ ਪਹਿਲਾਂ ਹੀ ਅਸਲ `@` ਮੌਜੂਦ ਹੋਵੇ ਜਾਂ ਨਾ ਹੋਵੇ,
ਇਹਨਾਂ ਸ਼ਬਦਾਂ ਦਾ ਅਰਥ ਇੱਕੋ ਹੁੰਦਾ ਹੈ:
`"john dot smith at gmail dot com"` ਬਣ ਜਾਂਦਾ ਹੈ
`john.smith@gmail.com`।

ਹੋਰ ਕੋਈ ਵੀ ਅੰਦਰੂਨੀ ਖਾਲੀ ਥਾਂ ਨੂੰ ਚੁੱਪਚਾਪ ਜੋੜਨ ਦੀ ਬਜਾਏ ਅਸਵੀਕਾਰ ਕੀਤਾ ਜਾਂਦਾ ਹੈ।
ਬੋਲੇ ਗਏ ਸੇਪਰੇਟਰ ਸ਼ਬਦ ਸਿਰਫ਼ ਅੰਗਰੇਜ਼ੀ ਲਈ ਹਨ; ਗੈਰ-ਅੰਗਰੇਜ਼ੀ ਜਾਂ ਅਣਪਛਾਤੇ
ਖਾਲੀ ਥਾਂ ਵਾਲੇ ਰੂਪ ਬੰਦ ਢੰਗ ਨਾਲ ਅਸਫਲ ਹੁੰਦੇ ਹਨ। ਵੈਧ ਅੰਤਰਰਾਸ਼ਟਰੀਕ੍ਰਿਤ ਡੋਮੇਨ
ਅਤੇ SMTPUTF8 ਲੋਕਲ ਭਾਗ ਸਵੀਕਾਰ ਕੀਤੇ ਜਾਂਦੇ ਹਨ। ਪਾਰਸਰ ਨਾਰਮਲਾਈਜ਼ੇਸ਼ਨ ਤੋਂ ਬਾਅਦ
Punycode ਇਨਪੁੱਟ Punycode ਹੀ ਰਹਿੰਦਾ ਹੈ ਅਤੇ Unicode ਡੋਮੇਨ ਇਨਪੁੱਟ Unicode ਹੀ
ਰਹਿੰਦਾ ਹੈ, ਇਸ ਲਈ ਤੁਹਾਡੀ API ਨੂੰ ਕਾਲਰ ਵੱਲੋਂ ਦਿੱਤਾ ਰਵਾਇਤੀ ਰੂਪ ਮਿਲਦਾ ਹੈ। ਜੇ
ਅੰਤਿਮ ਵੈਲਿਊ ਅਵੈਧ ਹੋਵੇ, ਤਾਂ ਟੂਲ ਨੂੰ **ਕਾਲ ਨਹੀਂ ਕੀਤਾ ਜਾਂਦਾ**। ਏਜੰਟ ਨੂੰ
`invalid_email_argument` ਮਿਲਦਾ ਹੈ, ਜੋ ਉਸਨੂੰ ਕਾਲਰ ਨਾਲ ਸਪੈਲਿੰਗ ਦੀ ਪੁਸ਼ਟੀ
ਕਰਨ ਅਤੇ ਅਸਲ ਐਡਰੈੱਸ ਮੁੜ ਭੇਜਣ ਲਈ ਕਹਿੰਦਾ ਹੈ।

ਛੱਡੀ ਗਈ ਵਿਕਲਪਿਕ ਈਮੇਲ ਨੂੰ ਬਿਨਾਂ ਬਦਲੇ ਰੱਖਿਆ ਜਾਂਦਾ ਹੈ। `null`, ਖਾਲੀ ਸਟਰਿੰਗ,
ਜਾਂ ਸਿਰਫ਼ ਖਾਲੀ ਥਾਂ ਵਾਲੀ ਸਟਰਿੰਗ ਨੂੰ ਵੀ ਬਿਨਾਂ ਬਦਲੇ ਰੱਖਿਆ ਜਾਂਦਾ ਹੈ ਜਦੋਂ
ਪ੍ਰਾਪਰਟੀ ਵਿਕਲਪਿਕ ਜਾਂ nullable ਹੋਵੇ; ਲੋੜੀਂਦੀ, non-nullable ਈਮੇਲ ਲਈ ਇਹੋ
ਵੈਲਿਊਆਂ ਅਸਵੀਕਾਰ ਕੀਤੀਆਂ ਜਾਂਦੀਆਂ ਹਨ।

ਸਥਾਨਕ ਸਕੀਮਾ ਰੈਫ਼ਰੈਂਸ ਜਿਵੇਂ `#/$defs/email` ਅਤੇ `#/definitions/email`, ਨਾਲੇ
`anyOf`, `oneOf`, ਅਤੇ `allOf` ਦੀ ਜਾਂਚ ਸਾਈਕਲ ਅਤੇ ਡੈਪਥ ਸੀਮਾਵਾਂ ਨਾਲ ਕੀਤੀ ਜਾਂਦੀ
ਹੈ। ਗੈਰ-ਸਥਾਨਕ ਜਾਂ ਹੱਲ ਨਾ ਹੋ ਸਕਣ ਵਾਲਾ `$ref` ਇੱਕ ਜਾਣੀ-ਪਛਾਣੀ ਐਨਫੋਰਸਮੈਂਟ
ਸੀਮਾ ਹੈ ਅਤੇ ਇਸਨੂੰ ਬਿਨਾਂ ਬਦਲੇ ਪਾਸ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਜਿਵੇਂ ਉਹ ਕਾਲ ਵੀ ਜਿਸਦੇ ਟੂਲ
ਸਨੈਪਸ਼ਾਟ ਵਿੱਚ ਵਰਤਣਯੋਗ ਸਕੀਮਾ ਨਹੀਂ ਹੈ। ਜਦੋਂ ਤੁਹਾਨੂੰ ਇਹ ਗੇਟ ਲਾਗੂ ਕਰਵਾਉਣ ਦੀ
ਲੋੜ ਹੋਵੇ ਤਾਂ ਈਮੇਲ ਸਕੀਮਾਵਾਂ ਨੂੰ ਸਥਾਨਕ ਰੱਖੋ।

ਲਾਗੂ ਕੀਤੇ ਈਮੇਲ ਫਾਰਮੈਟ ਤੋਂ ਬਿਨਾਂ ਪੈਰਾਮੀਟਰਾਂ ਨੂੰ ਬਿਲਕੁਲ ਉਸੇ ਤਰ੍ਹਾਂ ਪਾਸ ਕੀਤਾ
ਜਾਂਦਾ ਹੈ ਜਿਵੇਂ ਮਾਡਲ ਨੇ ਉਹ ਬਣਾਏ ਸਨ।

ਸਮਰਥਿਤ ਫਾਰਮੈਟ `date-time`, `time`, `date`, `duration`, `email`,
`hostname`, `ipv4`, `ipv6`, ਅਤੇ `uuid` ਹਨ; ਅੱਜ ਸਿਰਫ਼ `email` ਨੂੰ
ਨਾਰਮਲਾਈਜ਼ ਅਤੇ ਲਾਗੂ ਕੀਤਾ ਜਾਂਦਾ ਹੈ।

## 3. ਐਂਡਪੁਆਇੰਟ ਦਾ ਸੈਂਡਬਾਕਸ ਟੈਸਟ ਕਰੋ

ਇੰਟੀਗ੍ਰੇਸ਼ਨ ਨੂੰ ਕਿਸੇ ਏਜੰਟ ਨਾਲ ਲਿੰਕ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ, ਕਨੈਕਟੀਵਿਟੀ ਦੀ ਪੁਸ਼ਟੀ ਲਈ
ThunderPhone ਦੇ ਸਰਵਰਾਂ ਤੋਂ ਇੱਕ ਸਾਈਨ ਕੀਤੀ ਬੇਨਤੀ ਭੇਜੋ:

```bash
curl -X POST https://api.thunderphone.com/v1/integrations/test-request \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url":    "https://api.example.com/weather?zip=94110",
    "method": "GET",
    "headers": { "X-Api-Key": "your-provider-key" }
  }'
```

```json Response
{
  "ok": true,
  "status": 200,
  "elapsed_ms": 187,
  "response_headers": { "content-type": "application/json" },
  "response_preview": "{\"temperature_f\": 64, ...}"
}
```

ਇਹ ਟੈਸਟ ThunderPhone ਦੇ SSRF ਗਾਰਡਾਂ ਨੂੰ ਵੀ ਮਜ਼ਬੂਤ ਕਰਦਾ ਹੈ — localhost ਜਾਂ
ਨਿੱਜੀ IP ਰੇਂਜਾਂ ਲਈ ਬੇਨਤੀਆਂ `400 code=url_not_allowed` ਵਾਪਸ ਕਰਦੀਆਂ ਹਨ।

## 4. ਇੰਟੀਗ੍ਰੇਸ਼ਨ ਨੂੰ ਏਜੰਟ ਨਾਲ ਲਿੰਕ ਕਰੋ

ਏਜੰਟ ਬਣਾਉਂਦੇ ਜਾਂ ਅੱਪਡੇਟ ਕਰਦੇ ਸਮੇਂ `integration_ids` ਰਾਹੀਂ ਅਟੈਚ ਕਰੋ:

```bash
curl -X PATCH https://api.thunderphone.com/v1/agents/12 \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "integration_ids": ["f9b5a1a4-..."]
  }'
```

ਤੁਸੀਂ ਇੱਕ ਏਜੰਟ ਨਾਲ ਕਈ ਇੰਟੀਗ੍ਰੇਸ਼ਨ ਲਿੰਕ ਕਰ ਸਕਦੇ ਹੋ। ਏਜੰਟ ਦਾ prompt
ਉਹਨਾਂ ਨੂੰ ਨਾਮ ਨਾਲ ਰੈਫਰੈਂਸ ਕਰ ਸਕਦਾ ਹੈ — "ਜਦੋਂ ਕਾਲਰ ਮੌਸਮ ਦੀਆਂ ਸਥਿਤੀਆਂ
ਬਾਰੇ ਪੁੱਛੇ ਤਾਂ `get_weather` ਵਰਤੋ" — ਜਾਂ ਇਹ schema ਵੇਰਵਿਆਂ ਤੋਂ ਉਹਨਾਂ ਨੂੰ
ਅਸਿੱਧੇ ਤੌਰ 'ਤੇ ਪਛਾਣ ਸਕਦਾ ਹੈ।

## 5. endpoint ਲਾਗੂ ਕਰੋ

ਜਦੋਂ ਏਜੰਟ ਟੂਲ ਨੂੰ ਚਲਾਉਂਦਾ ਹੈ, ThunderPhone ਤੁਹਾਡੇ `endpoint_url` ਨੂੰ ਇੱਕ
ਸਾਈਨ ਕੀਤੀ POST ਭੇਜਦਾ ਹੈ:

```
POST /weather HTTP/1.1
Host: api.example.com
X-Api-Key: your-provider-key
X-ThunderPhone-Signature: <HMAC-SHA256 hex>
X-ThunderPhone-Call-ID: 987654321
Content-Type: application/json

{"zip": "94110"}
```

ਤੁਹਾਡਾ ਸਰਵਰ JSON ਨਾਲ ਜਵਾਬ ਦਿੰਦਾ ਹੈ, ਜੋ LLM ਨੂੰ ਵਾਪਸ ਸੌਂਪਿਆ ਜਾਂਦਾ ਹੈ:

```json
{"temperature_f": 64, "condition": "Partly cloudy", "wind_mph": 8}
```

LLM ਉਸ ਜਵਾਬ ਨੂੰ ਪ੍ਰੋਸੈਸ ਕਰਦਾ ਹੈ ਅਤੇ ਕਾਲਰ ਨੂੰ ਮਨੁੱਖੀ-ਭਾਸ਼ਾ ਵਿੱਚ ਸੰਖੇਪ ਦੱਸਦਾ ਹੈ।

<Warning>
  ਸਿਗਨੇਚਰ ਦੀ ਗਣਨਾ raw request body ਉੱਤੇ ਤੁਹਾਡੇ webhook endpoint ਵਾਲੇ ਹੀ
  `secret` ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। **ਇਸਦੀ ਪੁਸ਼ਟੀ ਕਰੋ** — ਟੂਲ endpoints
  ਇੰਟਰਨੈੱਟ-ਮੁਖੀ ਹੁੰਦੇ ਹਨ ਅਤੇ webhooks ਵਰਗੀਆਂ ਹੀ spoofing ਸੰਬੰਧੀ ਚਿੰਤਾਵਾਂ ਦੇ
  ਅਧੀਨ ਹੁੰਦੇ ਹਨ। ਵੇਖੋ
  [webhook ਸਿਗਨੇਚਰਾਂ ਦੀ ਪੁਸ਼ਟੀ ਕਰੋ](/pa/guides/verify-webhook-signatures)।
</Warning>

## 6. ਲੂਪ ਦੀ ਜਾਂਚ ਕਰੋ

ਏਜੰਟ ਦੇ ਖ਼ਿਲਾਫ਼ ਇੱਕ [mic ਸੈਸ਼ਨ](/api-reference/mic-sessions) ਚਲਾਓ
ਅਤੇ ਉਹ ਸਵਾਲ ਪੁੱਛੋ ਜਿਸਨੂੰ ਤੁਹਾਡਾ ਟੂਲ ਸੰਭਾਲਦਾ ਹੈ ("94110 ਵਿੱਚ ਮੌਸਮ ਕਿਹੋ ਜਿਹਾ
ਹੈ?")। ਕਾਲ ਦਾ ਟ੍ਰਾਂਸਕ੍ਰਿਪਟ ਪੂਰਾ round trip ਦਿਖਾਉਂਦਾ ਹੈ:

```json
{
  "call_id": 987654321,
  "transcripts": [
    { "role": "user",
      "content": "What's the weather in 94110?" },
    { "role": "tool_call",
      "content": "{\"tool_call\": \"get_weather\", \"arguments\": {\"zip\": \"94110\"}}" },
    { "role": "tool_response",
      "content": "{\"tool_name\": \"get_weather\", \"response\": {\"temperature_f\": 64, \"condition\": \"Partly cloudy\"}}" },
    { "role": "agent",
      "content": "It's 64 degrees and partly cloudy." }
  ]
}
```

ਤੁਸੀਂ ਇਸਨੂੰ
[`GET /v1/calls/{call_id}/transcript`](/api-reference/calls#get-transcript)
ਰਾਹੀਂ ਪ੍ਰਾਪਤ ਕਰ ਸਕਦੇ ਹੋ; raw event stream (ਹਰ ਐਂਟਰੀ ਦੀ timing ਅਤੇ audio offsets ਸਮੇਤ)
ਇੱਥੇ ਹੈ
[`GET /v1/calls/{call_id}/history`](/api-reference/calls#get-history)।

## ਆਮ ਸਮੱਸਿਆਵਾਂ

<AccordionGroup>
  <Accordion title="ਏਜੰਟ ਕਦੇ ਵੀ ਟੂਲ ਨੂੰ ਕਾਲ ਨਹੀਂ ਕਰਦਾ">
    LLM ਟੂਲ ਦੇ ਵੇਰਵੇ ਦੇ ਆਧਾਰ 'ਤੇ ਫ਼ੈਸਲਾ ਕਰਦਾ ਹੈ। ਜੇ ਕਾਲਰ ਦਾ
    ਸਵਾਲ ਵੇਰਵੇ ਨਾਲ ਮੇਲ ਨਹੀਂ ਖਾਂਦਾ, ਤਾਂ ਮਾਡਲ ਟੂਲ ਨੂੰ ਚਲਾਏਗਾ ਨਹੀਂ।
    ਵੇਰਵੇ ਨੂੰ ਹੋਰ ਸਟੀਕ ਬਣਾਓ (ਆਮ ਸਮਾਨਾਰਥੀ ਸ਼ਬਦ ਅਤੇ ਵਾਕਾਂਸ਼ ਸ਼ਾਮਲ ਕਰੋ) ਜਾਂ
    ਏਜੰਟ ਦੇ prompt ਵਿੱਚ ਇਸਦਾ ਸਪਸ਼ਟ ਜ਼ਿਕਰ ਕਰੋ ("ਜਦੋਂ ਕਾਲਰ ਮੌਸਮ ਬਾਰੇ ਪੁੱਛੇ,
    `get_weather` ਵਰਤੋ।")।
  </Accordion>

  <Accordion title="ਟੂਲ ਬਹੁਤ ਜ਼ਿਆਦਾ ਡਾਟਾ ਵਾਪਸ ਕਰਦਾ ਹੈ">
    6 kB ਤੋਂ ਵੱਧ ਦੇ ਜਵਾਬ ਟ੍ਰਾਂਸਕ੍ਰਿਪਟ preview ਵਿੱਚ ਕੱਟੇ ਜਾਂਦੇ ਹਨ। ਸਿਰਫ਼ ਉਹੀ
    ਫ਼ੀਲਡ ਵਾਪਸ ਕਰੋ ਜਿਨ੍ਹਾਂ ਦੀ LLM ਨੂੰ ਲੋੜ ਹੈ — ਆਪਣੀ ਪੂਰੀ row ਨਹੀਂ।
  </Accordion>

  <Accordion title="ਟਾਈਮਆਉਟ">
    ਟੂਲ endpoints ਲਈ ਡਿਫਾਲਟ ਟਾਈਮਆਉਟ 10 ਸਕਿੰਟ ਹੈ। ਜੇ ਤੁਹਾਨੂੰ ਵੱਧ ਸਮਾਂ ਚਾਹੀਦਾ ਹੈ,
    ਤਾਂ ਇਸਨੂੰ ਅਸਿੰਕ੍ਰੋਨਸ ਤਰੀਕੇ ਨਾਲ ਸੰਭਾਲੋ: `{"status": "pending", "request_id": "..."}`
    ਵਾਪਸ ਕਰੋ ਅਤੇ ਨਤੀਜਾ ਵੱਖਰੀ ਟੂਲ ਕਾਲ ਰਾਹੀਂ ਦਿਖਾਓ।
  </Accordion>

  <Accordion title="ਵਰਜਨਿੰਗ">
    ਹਰ ਇੰਟੀਗ੍ਰੇਸ਼ਨ `PATCH` ਇੱਕ ਨਵਾਂ revision ਬਣਾਉਂਦੀ ਹੈ। ਇਹ ਦੇਖਣ ਲਈ ਕਿ ਕਿਸਨੇ
    ਕੀ ਬਦਲਿਆ, 
    [`GET /v1/integrations/{id}/versions`](/api-reference/integrations#version-history)
    ਦੀ ਜਾਂਚ ਕਰੋ। ਜੇ ਤੁਸੀਂ ਕਿਸੇ ਟੂਲ ਦਾ schema ਖਰਾਬ ਕਰ ਦਿੰਦੇ ਹੋ, ਤਾਂ ਪੁਰਾਣੇ snapshot ਨੂੰ
    PATCH ਕਰਕੇ ਵਾਪਸ ਭੇਜਣ ਨਾਲ ਹੱਥੋਂ rollback ਕਰ ਸਕਦੇ ਹੋ।
  </Accordion>
</AccordionGroup>

---

## ਅਗਲੇ ਕਦਮ

<CardGroup cols={2}>
  <Card title="ਇੰਟੀਗ੍ਰੇਸ਼ਨ ਰੈਫਰੈਂਸ" icon="plug" href="/api-reference/integrations">
    CRUD, ਟ੍ਰਾਂਸਫਰ, ਵਰਜਨ ਇਤਿਹਾਸ।
  </Card>
  <Card title="ਫੰਕਸ਼ਨ ਟੂਲਜ਼ ਸਪੈਸਿਫਿਕੇਸ਼ਨ" icon="screwdriver-wrench" href="/pa/tools/overview">
    ਪੂਰਾ JSON ਸਕੀਮਾ ਵਿਆਕਰਨ ਅਤੇ ਸਾਈਨ ਕੀਤੇ ਐਂਡਪੌਇੰਟ ਦਾ ਕਰਾਰ।
  </Card>
  <Card title="ਦਸਤਖ਼ਤਾਂ ਦੀ ਪੁਸ਼ਟੀ ਕਰੋ" icon="shield-check" href="/pa/guides/verify-webhook-signatures">
    ਟੂਲ ਐਂਡਪੌਇੰਟਾਂ ਲਈ ਵੈੱਬਹੁੱਕ-ਦਸਤਖ਼ਤ ਪੈਟਰਨ ਲਾਗੂ ਕਰੋ।
  </Card>
  <Card title="ਟ੍ਰਾਂਸਕ੍ਰਿਪਟ + ਇਤਿਹਾਸ API" icon="phone" href="/api-reference/calls">
    ਟੂਲ ਕਾਲ ਦੀ ਪੂਰੀ ਆਉਣ-ਜਾਣ ਪ੍ਰਕਿਰਿਆ ਦੀ ਜਾਂਚ ਕਰੋ।
  </Card>
</CardGroup>
