أرسل صوت مكالمة واستقبله من برنامجك الخاص، مثل نظامك الهاتفي أو تطبيقك. ابدأ المكالمة:
curl https://evasay.com/api/v1/voice/calls/websocket \
-X POST \
-H "Authorization: Bearer sk-your-key" \
-H "Content-Type: application/json" \
-d '{ "agent_id": "AGENT_ID", "encoding": "pcm_s16le", "sample_rate": 16000 }'
يحمل websocket_url في الرد رمزًا لمرة واحدة ويمكن فتحه خلال 15 دقيقة. قيمة encoding إما pcm_s16le (PCM بدقة 16 بت little-endian بمعدل sample_rate يساوي 8000 أو 16000 أو 24000) أو mulaw (μ-law بتردد 8 كيلوهرتز). ينتقل الصوت في الاتجاهين كإطارات ثنائية بتلك الصيغة، ويُفضَّل أن يكون كل إطار 20 مللي ثانية. أما الإطارات النصية فهي JSON:
| الاتجاه | الرسائل |
|---|---|
| أنت ← EvaSay | {"type":"dtmf","digits":"12#"} ضغطات المفاتيح؛ {"type":"end"} يُغلق الخط؛ {"type":"text","text":"…"} كلمات كتبها المتصل ("input":"button" لرد جرى النقر عليه)؛ {"type":"context","text":"…","key":"cart"} ما يبلّغ عنه تطبيقك (لا يرد الوكيل عليه)؛ {"type":"typing"} العميل يكتب (أرسله نحو مرة في الثانية أثناء الكتابة؛ لا يتكلم الوكيل لمدة ثانيتين)؛ {"type":"tool_result","id":"…","result":{…}} (أو "error") إجابة دالة صفحة |
| EvaSay ← أنت | start (مع callId)؛ clear (قاطع المتصل: أسقِط صوت الوكيل الذي لم يُشغَّل بعد)؛ transcript (role وtext وfinal، وinput للكلمات المكتوبة)؛ user_started_speaking وuser_stopped_speaking وagent_started_speaking وagent_stopped_speaking؛ cards (cards وquick_replies)؛ tool (id وname وarguments: شغّل إحدى دوال صفحتك)؛ notice (code: too_fast أو limit للكلمات المكتوبة)؛ ended (مع reason، ثم يُغلق المقبس) |
يُلقي الوكيل التحية فور اتصالك. ويمكن إضافة user_id وpage_tools (دوال الصفحة التي يرد عليها تطبيقك، انظر أدناه) إلى الطلب. تُفوتَر المكالمات بالدقيقة كأي مكالمة أخرى، بسجلات المكالمات والتحليل وWebhooks نفسها.