الصوت والوقت الفعلي

Realtime WebSocket

الاتصال بجلسات صوتية ومتعددة الوسائط فورية عبر WebSocket

GET
/v1/realtime

نظرة عامة

استخدم نقطة النهاية هذه لجلسات الوقت الفعلي مثل التعرّف على الكلام بالبث، وتركيب الكلام، وترجمة الكلام، أو النماذج متعددة الوسائط في الوقت الفعلي. يعيد طلب GET العادي بيانات وصف نقطة النهاية، بينما يفتح طلب ترقية WebSocket جلسة في الوقت الفعلي للنموذج المحدد.

النطاق المدعوم

يوفّر TokenLab نقطة WebSocket فورية على GET /v1/realtime لفحص metadata وطلبات ترقية WebSocket. تعامل معها كسطح WebSocket محدود (WebSocket subset): فهي تمرّر أحداث نماذج realtime المدعومة فقط، ولا تدعم أسطح مساعدات REST في OpenAI Realtime مثل إنشاء الجلسات، أو client_secrets، أو واجهات التحكم بالمكالمات Calls، أو legacy beta session APIs.

في تطبيقات المتصفح أو الجوال، احتفظ بمفاتيح API طويلة العمر على الخادم. هذا المسار لا يصدر Realtime client secrets قصيرة العمر.

اختر نموذجًا فوريًا حاليًا من /v1/models، وتحقق من /v1/models/{model} ثم اضبط TOKENLAB_REALTIME_MODEL. تعتمد أحداث الجلسة وإعداداتها على النموذج. مثال JSON أدناه لاستجابة HTTP GET عادية، وليس حدث جلسة WebSocket.

الاتصال

modelstringqueryمطلوب

معرّف نموذج realtime. استخدم نموذجاً يعلن عقده العام دعم realtime.

Authorizationstringheaderمطلوب

مفتاح API بصيغة Bearer. يجب أن يرسل عميل WebSocket ترويسة Authorization: Bearer sk-your-api-key أثناء طلب الترقية.

الطلب

import WebSocket from 'ws';

const model = process.env.TOKENLAB_REALTIME_MODEL;
const apiKey = process.env.TOKENLAB_API_KEY;
if (!model || !apiKey) {
  throw new Error('Set TOKENLAB_REALTIME_MODEL and TOKENLAB_API_KEY');
}

const url = new URL('wss://api.tokenlab.sh/v1/realtime');
url.searchParams.set('model', model);
const socket = new WebSocket(url, {
  headers: { Authorization: `Bearer ${apiKey}` }
});

socket.on('open', () => {
  console.log('Realtime connection open');
});

socket.on('message', (data) => {
  console.log('realtime event', data.toString());
});

socket.on('error', (error) => console.error(error.message));
socket.on('close', (code) => console.log('Realtime connection closed', code));

الرسائل

ينقل TokenLab رسائل WebSocket بين عميلك والنموذج الفوري المحدد. استخدم تنسيق الأحداث الموثّق لذلك النموذج، وأدرج model في سلسلة الاستعلام بدلاً من إدراجه في كل حدث.

الفوترة والإغلاق

تُحتسب تكلفة الجلسات من رصيد مفتاح API الخاص بك: يحجز TokenLab مبلغًا تقديريًا عند البدء، ثم يسوّي الاستخدام الفعلي عند الانتهاء ويعيد الفرق.

أغلق مقبس العميل عند اكتمال الجلسة. إذا أغلقت الخدمة الجلسة أولاً، يرسل TokenLab إلى عميلك حدث/رمز إغلاق آمنًا عند الإمكان.

الاستجابة

HTTP GET
{
  "object": "realtime.endpoint",
  "websocket_url": "/v1/realtime?model={model}",
  "protocol": "tokenlab_realtime_proxy"
}

حقول مهمة

objectstring
نوع الكائن في استجابة HTTP GET العادية. قيمته الثابتة هي realtime.endpoint.
websocket_urlstring
مسار اتصال WebSocket النسبي الذي يعيده طلب HTTP GET عادي: /v1/realtime?model={model}. استبدل {model} بمعرّف النموذج المحدد.
protocolstring
معرّف البروتوكول الذي يعيده طلب HTTP GET عادي. قيمته الثابتة هي tokenlab_realtime_proxy.
typestring
نوع الحدث أو الرسالة الذي تعيده API.
session.idstring
معرّف مبهم يتم استلامه عبر اتصال realtime. ضمّنه في سجلات الدعم لتسهيل التشخيص؛ وليس عنوان URL لجلسة REST.

التفويض

BearerAuth
AuthorizationBearer <token>

مصادقة مفتاح API. قم بإنشاء أو إدارة مفاتيح API في Dashboard > API > API Keys.

الموضع: header

معاملات الاستعلام

model?string

معرف النموذج الفوري (Realtime) لتوجيه جلسة WebSocket. مطلوب لطلبات ترقية WebSocket؛ واختياري لفحوصات البيانات الوصفية (metadata) عبر HTTP العادي.

الاستجابة

application/json

application/json

application/json

application/json

application/json

application/json