---
title: "OpenAI Realtime ಕ್ಲೈಂಟ್‌ಗಳೊಂದಿಗೆ ThunderPhone ಬಳಸಿ"
description: "ಉಳಿಸಿದ ಏಜೆಂಟ್ ಅಥವಾ ಇನ್‌ಲೈನ್ ಸೆಷನ್ ಕಾನ್ಫಿಗರೇಶನ್ ಬಳಸಿ, OpenAI Realtime-ಹೊಂದಾಣಿಕೆಯ ಸರ್ವರ್ ಕ್ಲೈಂಟ್ ಅನ್ನು ThunderPhone ಕಡೆಗೆ ನಿರ್ದೇಶಿಸಿ."
---

ThunderPhone, OpenAI Realtime ಈವೆಂಟ್ ಮಾದರಿಯ ಕೇಂದ್ರೀಕೃತ ಉಪವಿಭಾಗವನ್ನು ಅನುಷ್ಠಾನಗೊಳಿಸುತ್ತದೆ.
ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಸರ್ವರ್-ಸೈಡ್ ಕ್ಲೈಂಟ್, ThunderPhone ಧ್ವನಿ ಏಜೆಂಟ್ ಬಳಸುವಾಗಲೂ ತನ್ನ WebSocket, ಆಡಿಯೊ, ಸೆಷನ್ ಮತ್ತು
ಪ್ರತಿಕ್ರಿಯೆ ಈವೆಂಟ್ ಹರಿವನ್ನು ಉಳಿಸಿಕೊಳ್ಳಬಹುದು.

## ಸಂಪರ್ಕಿಸುವ ಮೊದಲು

ನಿಮಗೆ ThunderPhone ಸಂಸ್ಥೆಯ ರಹಸ್ಯ API ಕೀ ಮತ್ತು WebSocketಗಳನ್ನು ತೆರೆಯಬಹುದಾದ ಸರ್ವರ್ ರನ್‌ಟೈಮ್ ಅಗತ್ಯವಿದೆ.
ಬ್ರೌಸರ್ ಕೋಡ್‌ನಿಂದ ಸಂಪರ್ಕಿಸಬೇಡಿ ಅಥವಾ ಕೀಯನ್ನು ಬ್ರೌಸರ್‌ಗೆ ಬಹಿರಂಗಪಡಿಸಬೇಡಿ. ಉಳಿಸಿದ ಏಜೆಂಟ್ ಬಳಸಲು, ಮೊದಲು ಅದನ್ನು
ನಿಯೋಜಿಸಿ ಮತ್ತು ಅದರ ಸಂಖ್ಯಾತ್ಮಕ ಏಜೆಂಟ್ ID ಅನ್ನು ನಕಲಿಸಿ.

ಇದಕ್ಕೆ ಸಂಪರ್ಕಿಸಿ:

```text
wss://api.thunderphone.com/v1/realtime
```

ನಿಮ್ಮ ಸರ್ವರ್‌ನಿಂದ WebSocket ಅಪ್‌ಗ್ರೇಡ್ ಅನ್ನು ದೃಢೀಕರಿಸಿ:

```http
Authorization: Bearer sk_live_YOUR_API_KEY
```

ಹ್ಯಾಂಡ್‌ಶೇಕ್ ಹೆಡರ್‌ಗಳನ್ನು ಹೊಂದಿಸಲಾಗದ ಕ್ಲೈಂಟ್‌ಗಳಿಗಾಗಿ ಕ್ವೆರಿ-ಸ್ಟ್ರಿಂಗ್ ದೃಢೀಕರಣ ಲಭ್ಯವಿದೆ,
ಆದರೆ URLಗಳು ಲಾಗ್‌ಗಳಿಗೆ ಸೋರಿಕೆಯಾಗುವುದು ಸುಲಭ.

## ಕಾನ್ಫಿಗರೇಶನ್‌ನ ಮಾಲೀಕರು ಯಾರೆಂದು ಆಯ್ಕೆಮಾಡಿ

| ಮೋಡ್ | ಇದರೊಂದಿಗೆ ಸಂಪರ್ಕಿಸಿ | ಕಾನ್ಫಿಗರೇಶನ್ ಮೂಲ |
| --- | --- | --- |
| ಉಳಿಸಿದ ಏಜೆಂಟ್ | `?agent_id=12` | ನಿಯೋಜಿಸಲಾದ prompt, ಧ್ವನಿ, ಉತ್ಪನ್ನ, ಭಾಷೆಗಳು, ಜ್ಞಾನ ಮತ್ತು ಹೊಂದಾಣಿಕೆಯ ಸರ್ವರ್‌ನಲ್ಲಿ ನಡೆಯುವ ಉಪಕರಣಗಳು |
| ಇನ್‌ಲೈನ್ | `agent_id` ಇಲ್ಲ | ನಿಮ್ಮ ಕ್ಲೈಂಟ್‌ನಿಂದ ಸ್ವೀಕರಿಸಲಾದ ಮೊದಲ `session.update` |

### ಉಳಿಸಿದ ಏಜೆಂಟ್

ನಿಯೋಜಿಸಲಾದ ಏಜೆಂಟ್ ID ಯೊಂದಿಗೆ ಸಂಪರ್ಕಿಸಿ:

```text
wss://api.thunderphone.com/v1/realtime?agent_id=12
```

ಸಾಕೆಟ್ ಸಂಪರ್ಕವಾಗುವಾಗ ಏಜೆಂಟ್ ಪ್ರಾರಂಭವಾಗುತ್ತದೆ. ಅದರ ಶುಭಾಶಯ ಲಭ್ಯವಾಗಿಯೇ ಇರುತ್ತದೆ,
ಆದರೆ Realtime ಅದರ ಮಾತನಾಡುವ ಮೌನ ಪರಿಶೀಲನೆಗಳನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸುತ್ತದೆ ಮತ್ತು `transfer_call`
ಹಾಗೂ `send_keypad_input` ಅನ್ನು ಹೊರತುಪಡಿಸುತ್ತದೆ. ಇತರ ಹೊಂದಾಣಿಕೆಯ ಉಪಕರಣಗಳು ThunderPhone ನಲ್ಲಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತವೆ. ಈ ಮೋಡ್‌ಗಾಗಿ
ಇನ್‌ಲೈನ್ ಸೂಚನೆಗಳು ಅಥವಾ ಕ್ಲೈಂಟ್-ಕಾರ್ಯಗತಗೊಳಿಸುವ ಉಪಕರಣಗಳನ್ನು ಕಳುಹಿಸಬೇಡಿ.

ಏಜೆಂಟ್ ಪ್ರಾರಂಭವಾಗುವ ಮೊದಲು `input_audio_format`,
`output_audio_format`, `input_rate`, ಮತ್ತು `output_rate` ಕ್ವೆರಿ ಪ್ಯಾರಾಮೀಟರ್‌ಗಳ ಮೂಲಕ ವೈರ್ ಆಡಿಯೊವನ್ನು ಹೊಂದಿಸಿ. ಸಂಪರ್ಕದ ನಂತರ
ಉಳಿಸಿದ ಕಾನ್ಫಿಗರೇಶನ್ ಅಥವಾ ಆಡಿಯೊ ಸ್ವರೂಪಗಳನ್ನು ಬದಲಾಯಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ.

### ಇನ್‌ಲೈನ್ ಸೆಷನ್

`agent_id` ಇಲ್ಲದೆ, `session.created` ಗಾಗಿ ಕಾಯಿರಿ, ನಂತರ `session.update` ಕಳುಹಿಸಿ:

```json
{
  "type": "session.update",
  "session": {
    "type": "realtime",
    "instructions": "Answer questions clearly and keep responses brief.",
    "audio": {
      "input": {
        "format": { "type": "audio/pcm", "rate": 24000 }
      },
      "output": {
        "format": { "type": "audio/pcm", "rate": 24000 },
        "voice": "olivia"
      }
    },
    "config": {
      "product": "bolt"
    }
  }
}
```

ಸ್ವೀಕರಿಸಲಾದ ಮೊದಲ ಅಪ್‌ಡೇಟ್ ಕರೆಯನ್ನು ಸಿದ್ಧಗೊಳಿಸುತ್ತದೆ. `session.updated` ಎಂದರೆ
ಸೆಷನ್ ಸಕ್ರಿಯವಾಗಿದೆ. ಆ ಹಂತದ ನಂತರ ಸೂಚನೆಗಳು, ಧ್ವನಿ, ಉತ್ಪನ್ನ, ಉಪಕರಣಗಳು ಮತ್ತು ಆಡಿಯೊ ಸ್ವರೂಪಗಳನ್ನು
ಬದಲಾಯಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ.

ಇನ್‌ಲೈನ್ ಸೆಷನ್‌ಗಳಲ್ಲಿ ಸ್ವಯಂಚಾಲಿತ ಶುಭಾಶಯ ಅಥವಾ ಮಾತನಾಡುವ ಮೌನ ಪರಿಶೀಲನೆಗಳಿಲ್ಲ. ಏಜೆಂಟ್ ಮೊದಲು ಮಾತನಾಡುವಂತೆ ಮಾಡಲು,
ಸಿಸ್ಟಮ್ ಅಥವಾ ಬಳಕೆದಾರ ಸಂದೇಶವನ್ನು ಸೇರಿಸಿ ಮತ್ತು `response.create` ಕಳುಹಿಸಿ. ಸಂಪೂರ್ಣವಾಗಿ ನಿಷ್ಕ್ರಿಯವಾಗಿರುವ ಸೆಷನ್ ಕೂಡ
ವೇದಿಕೆಯ ಮೌನ-ಕರೆ ಮಿತಿಯಲ್ಲಿ ಕೊನೆಗೊಳ್ಳುತ್ತದೆ; ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ ಇದು 600 ಸೆಕೆಂಡುಗಳು.

## ಅಧಿಕೃತ OpenAI SDK ಬಳಸಿ

`/v1`ನಲ್ಲಿ ಕೊನೆಗೊಳ್ಳುವ WebSocket ಮೂಲ URL ಅನ್ನು ಒದಗಿಸಿ; SDK `/realtime` ಅನ್ನು ಸೇರಿಸುತ್ತದೆ. `model` ಮೌಲ್ಯವು ಹೊಂದಾಣಿಕೆಯ ಹೆಸರು ಆಗಿದ್ದು ThunderPhone ಉತ್ಪನ್ನವನ್ನು ಆಯ್ಕೆ ಮಾಡುವುದಿಲ್ಲ. ಸೆಷನ್ ಕಾನ್ಫಿಗರೇಶನ್‌ನಲ್ಲಿ ಅಥವಾ ಉಳಿಸಿದ ಏಜೆಂಟ್‌ನಲ್ಲಿ ಉತ್ಪನ್ನವನ್ನು ಆಯ್ಕೆಮಾಡಿ.

ಈ ಸಂಪರ್ಕ ಪರಿಶೀಲನೆಯು ಇನ್‌ಲೈನ್ Bolt ಸೆಷನ್ ರಚಿಸಿ, ಮೊದಲ `session.updated` ವರೆಗೆ ಈವೆಂಟ್‌ಗಳನ್ನು ಮುದ್ರಿಸಿ, ನಂತರ ಮುಚ್ಚುತ್ತದೆ. ಆಡಿಯೊ ಸ್ಟ್ರೀಮ್ ಮಾಡಲು [ಕನಿಷ್ಠ Python ಕ್ಲೈಂಟ್](/api-reference/realtime#minimal-python-client) ಬಳಸಿ.

```python
import asyncio
import os

from openai import AsyncOpenAI


async def main():
    client = AsyncOpenAI(
        api_key=os.environ["THUNDERPHONE_API_KEY"],
        websocket_base_url="wss://api.thunderphone.com/v1",
    )

    async with client.realtime.connect(
        model="thunderphone-realtime"
    ) as connection:
        await connection.session.update(session={
            "type": "realtime",
            "instructions": "Listen to the caller and help them complete the call.",
            "config": {"product": "bolt"},
        })
        async for event in connection:
            print(event.type)
            if event.type == "session.updated":
                break


if __name__ == "__main__":
    asyncio.run(main())
```

ಇನ್‌ಪುಟ್-ಆಡಿಯೊ ಅಪೆಂಡ್, ಪ್ರತಿಕ್ರಿಯೆ ಆಡಿಯೊ ಡೆಲ್ಟಾಗಳು, ಅಡಚಣೆಗಳು, ಫಂಕ್ಷನ್ ಕರೆಗಳು, ದೋಷಗಳು ಮತ್ತು ಸ್ವಚ್ಛ ಸಾಕೆಟ್ ಮುಚ್ಚುವಿಕೆಗಳಿಗಾಗಿ ನಿಮ್ಮ ಈಗಿನ ನಿರ್ವಹಣೆಯನ್ನು ಉಳಿಸಿಕೊಳ್ಳಿ. ಇನ್‌ಲೈನ್ ಕಸ್ಟಮ್ ಫಂಕ್ಷನ್‌ಗಳು ನಿಮ್ಮ ಕ್ಲೈಂಟ್‌ನಲ್ಲಿ ಕಾರ್ಯಗತಗೊಳ್ಳುತ್ತವೆ; ಅವುಗಳ ಫಲಿತಾಂಶಗಳನ್ನು Realtime ಪ್ರೋಟೋಕಾಲ್ ಮೂಲಕ ಹಿಂತಿರುಗಿಸಿ. ಉಳಿಸಿದ-ಏಜೆಂಟ್ ಟೂಲ್‌ಗಳು ThunderPhoneನಲ್ಲಿ ಕಾರ್ಯಗತಗೊಳ್ಳುತ್ತವೆ.

## ಸೆಷನ್ ಜೀವನಚಕ್ರ ಮತ್ತು ವೈಫಲ್ಯಗಳು

ಒಂದು WebSocket ಒಂದು ಕರೆಯನ್ನು ಪ್ರತಿನಿಧಿಸುತ್ತದೆ. ಅಮಾನ್ಯ ಏಜೆಂಟ್ ID ಅಥವಾ ತಿರಸ್ಕರಿಸಲಾದ ಇನ್‌ಲೈನ್ ಕಾನ್ಫಿಗರೇಶನ್ `error` ಈವೆಂಟ್ ಅನ್ನು ಉಂಟುಮಾಡುತ್ತದೆ. ಸೆಷನ್ ಅನ್ನು ಸಕ್ರಿಯವೆಂದು ಪರಿಗಣಿಸುವ ಮೊದಲು `session.updated`ಗಾಗಿ ಕಾಯಿರಿ. ನಿಜವಾದ ಇನ್‌ಪುಟ್ ಮತ್ತು ಔಟ್‌ಪುಟ್ ಸ್ವರೂಪಗಳು ಹಾಗೂ ಸ್ಯಾಂಪಲ್ ದರಗಳನ್ನು ಘೋಷಿಸಿ: PCM ದರದ ಅಸಾಮರಸ್ಯವು ಪರಿಶೀಲನೆ ದೋಷವನ್ನು ಉಂಟುಮಾಡುವುದಕ್ಕಿಂತ ಆಡಿಯೊವನ್ನು ತುಂಬ ವೇಗವಾಗಿ ಅಥವಾ ತುಂಬ ನಿಧಾನವಾಗಿ ಪ್ಲೇ ಮಾಡುತ್ತದೆ.

ಸೆಷನ್ ಆರಂಭವಾದ ನಂತರ, ನಿಮ್ಮ ಅಪ್ಲಿಕೇಶನ್ ಮುಗಿದಾಗ ಸಾಕೆಟ್ ಅನ್ನು ಸ್ವಚ್ಛವಾಗಿ ಮುಚ್ಚಿ. ಇನ್‌ಲೈನ್ ಸೆಷನ್‌ಗಳು ಕ್ಲೈಂಟ್-ಕಾರ್ಯಗತ ಫಂಕ್ಷನ್‌ಗಳನ್ನು ಬಳಸಬಹುದು. ಉಳಿಸಿದ-ಏಜೆಂಟ್ ಸೆಷನ್‌ಗಳು ಹೊಂದಾಣಿಕೆಯ ThunderPhone-ಚಾಲಿತ ಟೂಲ್‌ಗಳನ್ನು ಬಳಸುತ್ತವೆ ಮತ್ತು ವರ್ಗಾವಣೆ ಅಥವಾ ಕೀಪ್ಯಾಡ್ ಇನ್‌ಪುಟ್ ಅನ್ನು ಒದಗಿಸುವುದಿಲ್ಲ.

## ಇಂಟಿಗ್ರೇಶನ್ ಪರೀಕ್ಷಿಸಿ

[ಕನಿಷ್ಠ Python WAV ಕ್ಲೈಂಟ್](/api-reference/realtime#minimal-python-client) ಮತ್ತು ಅದು ಘೋಷಿಸಿದ ದರದಲ್ಲಿರುವ ಮೊನೊ PCM16 WAVನಿಂದ ಪ್ರಾರಂಭಿಸಿ. ಈ ಕೆಳಗಿನವುಗಳನ್ನು ಪರಿಶೀಲಿಸಿ:

1. ಸರ್ವರ್ ಕಾನ್ಫಿಗರೇಶನ್ ಅನ್ನು ಸ್ವೀಕರಿಸಿ `session.updated` ಕಳುಹಿಸುತ್ತದೆ.
2. ಇನ್‌ಪುಟ್ ನಿರೀಕ್ಷಿತ ವೇಗದಲ್ಲಿ ಟ್ರಾನ್ಸ್‌ಕ್ರಿಪ್ಟ್ ಮತ್ತು ಪ್ರತಿಕ್ರಿಯೆ-ಆಡಿಯೊ ಈವೆಂಟ್‌ಗಳನ್ನು ಉಂಟುಮಾಡುತ್ತದೆ.
3. ಅಡಚಣೆ ಮತ್ತು ಪ್ರತಿಕ್ರಿಯೆ ರದ್ದತೆಯು ಉಳಿದ ಔಟ್‌ಪುಟ್ ಆಡಿಯೊವನ್ನು ನಿಲ್ಲಿಸುತ್ತದೆ.
4. ಇನ್‌ಲೈನ್ ಫಂಕ್ಷನ್ ಫಲಿತಾಂಶಗಳು ಅಥವಾ ಉಳಿಸಿದ-ಏಜೆಂಟ್ ಟೂಲ್ ಫಲಿತಾಂಶಗಳು ಮಾಡೆಲ್‌ಗೆ ಹಿಂತಿರುಗುತ್ತವೆ.
5. ಅಮಾನ್ಯ ಇನ್‌ಪುಟ್ ನಿಮ್ಮ ಕ್ಲೈಂಟ್ ನಿರ್ವಹಿಸುವ `error` ಈವೆಂಟ್ ಅನ್ನು ಉಂಟುಮಾಡುತ್ತದೆ.
6. ನಿಮ್ಮ ಕ್ಲೈಂಟ್ ಸಾಕೆಟ್ ಅನ್ನು ಮುಚ್ಚುತ್ತದೆ ಮತ್ತು ಕರೆ [ಕರೆ ಇತಿಹಾಸ](/kn/guides/review-calls)ದಲ್ಲಿ ಕಾಣಿಸುತ್ತದೆ.

[Realtime WebSocket ಉಲ್ಲೇಖ](/api-reference/realtime)ವು ಸ್ವೀಕರಿಸಲಾದ ಈವೆಂಟ್‌ಗಳು, ಆಡಿಯೊ ಸ್ವರೂಪಗಳು, ಸೆಷನ್ ಫೀಲ್ಡ್‌ಗಳು ಮತ್ತು ಸಂಪೂರ್ಣ ಉದಾಹರಣೆಗಳನ್ನು ಪಟ್ಟಿ ಮಾಡುತ್ತದೆ.

## ವೆಚ್ಚ

Realtime ಕರೆಗಳು ಆಯ್ಕೆಮಾಡಿದ ಉತ್ಪನ್ನದ ಸಾಮಾನ್ಯ ಪ್ರತಿ-ನಿಮಿಷದ ದರವನ್ನು ಬಳಸುತ್ತವೆ. ಲೈವ್ ಟ್ರಾನ್ಸ್‌ಕ್ರಿಪ್ಟ್ ಡೆಲ್ಟಾಗಳನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿದರೆ ಸಂಪೂರ್ಣ ಸೆಷನ್‌ಗೆ ಪ್ರತಿ-ನಿಮಿಷದ ಹೆಚ್ಚುವರಿ ಶುಲ್ಕ ಸೇರುತ್ತದೆ; ದರಕ್ಕಾಗಿ [ಲೈವ್ ಟ್ರಾನ್ಸ್‌ಕ್ರಿಪ್ಟ್‌ಗಳು](/api-reference/realtime#live-transcripts) ಮತ್ತು ಉತ್ಪನ್ನ ದರಗಳಿಗಾಗಿ [ದರನಿಗದಿ](/kn/guides/pricing) ನೋಡಿ.

`POST /v1/realtime/sessions` ಪ್ರತ್ಯೇಕ ನಿರ್ವಹಿತ LiveKit ಮಾರ್ಗವಾಗಿದೆ. ಇದು ರೂಮ್ ಮತ್ತು ವ್ಯಾಪ್ತಿ-ನಿರ್ದಿಷ್ಟ ಭಾಗವಹಿಸುವವರ ಟೋಕನ್ ಅನ್ನು ರಚಿಸುತ್ತದೆ; ನೇರ WebSocket ಸಂಪರ್ಕಕ್ಕೆ ಇದು ಅಗತ್ಯವಿಲ್ಲ.

ಫ್ರೇಮ್‌ವರ್ಕ್ ಇಂಟಿಗ್ರೇಶನ್‌ಗಳಿಗಾಗಿ, [Pipecatನಿಂದ ThunderPhone ಬಳಸಿ](/kn/guides/use-with-pipecat) ಮತ್ತು [LiveKit Agentsನಿಂದ ThunderPhone ಬಳಸಿ](/kn/guides/use-with-livekit) ನೋಡಿ.
