أضف شخصية تعريفية ناطقة بالذكاء الاصطناعي إلى موقعك مع Wixzel Voice
في نهاية هذا الدليل يكون في زاوية موقعك شخصية تعريفية (mascot) ناطقة. يضغط الزوار Call ويتحدثون إلى وكيل يعرف نشاطك التجاري، في المتصفح، دون خط هاتف ودون تطبيق. يستغرق ذلك نحو 15 دقيقة: طلب واحد يُنشئ الوكيل وشخصيته التعريفية من موقعك، وطلب يفعّل الـ widget، ووسم script واحد يضعها في الصفحة. إنشاء الوكيل مجاني. تُحتسب المكالمات بالثانية مثل مكالمة على المحرك نفسه: $0.0491 لكل دقيقة اتصال على Gemini Live، أي نحو $0.15 لمحادثة مدتها ثلاث دقائق، من رصيد مسبق الدفع.
بقلم Aqeel Shamsudheen · نُشر في · حُدّث في
- المدة
- نحو 15 دقيقة
- المحرك
- gemini-live
- وقت المحرك
- $0.0491 لكل دقيقة متصلة

ما الذي تحتاجه قبل أن تبدأ؟
- حساب على Wixzel Voice فيه رصيد. تُدفع المكالمات عبر الـ widget من رصيد حقيقي، وليس من دقائق الاختبار المجانية؛ والحد الأدنى لشحن الرصيد هو $5.
- مفتاح API بالصلاحيتين
agents:writeوcalls:write، محفوظ على خادمك. يمكن أيضًا تنفيذ كل ما يلي من لوحة التحكم، في تبويب الشخصية التعريفية الخاص بالوكيل. - موقع يُقدَّم عبر HTTPS ويمكنك إضافة وسم script إليه. لا تمنح المتصفحات الصفحة إذن الميكروفون إلا عبر HTTPS.
كيف تبني هذا على Wixzel Voice، خطوة بخطوة؟
01أنشئ الوكيل من موقعك
أعطه موقعك ودورًا. قيمة
roleهيreceptionistأوsupportأوsalesأوguideأو كلماتك الخاصة:shellcurl https://api.voice.wixzel.com/v1/agents/generate \ -H "Authorization: Bearer $WIXZEL_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "website_url": "https://smiledental.example", "role": "receptionist" }'make-agent.mjs (TypeScript SDK)import { WixzelVoice, waitForAgent } from 'wixzel-voice'; const client = new WixzelVoice({ apiKey: process.env.WIXZEL_API_KEY }); let agent = await client.agents.generate({ website_url: 'https://smiledental.example', role: 'receptionist', }); agent = await waitForAgent(client.agents, agent); // until the mascot is ready or failed console.log(agent.id, agent.name, agent.mascot.status, agent.knowledge_base_id);يجيب فورًا بوكيل قادر على التحدث بالفعل، مع
mascot.status: "building". في الخلفية يقرأ صفحاتك، ويكتب التعليمات والجملة الافتتاحية، ويبني قاعدة المعرفة مما قرأه، ويرسم شخصية تعريفية بلون علامتك التجارية. استعلم عبرGET /v1/agents/{id}حتى تصبح قيمةmascot.statusهيready، وعادةً يحدث ذلك في أقل من دقيقة؛ وفي الـ SDK، تتولىwaitForAgentالاستعلام. إذا فشل البناء يبقى الوكيل عاملًا بالمظهر الذي كان له.يبدأ الوكيل على Gemini Live. غيّر محركه أو صوته أو تعليماته مثل أي وكيل آخر عبر
PATCH /v1/agents/{id}؛ وتبقى شخصيته التعريفية كما هي.02فعّل الـ widget، واختر من يمكنه الاتصال
المشاركة متوقفة حتى تفعّلها. اذكر الأصول (origins) التي يُقدَّم منها موقعك؛ فلن يبدأ الـ widget مكالمة في أي مكان آخر:
shellcurl -X PATCH https://api.voice.wixzel.com/v1/agents/AGENT_ID/mascot \ -H "Authorization: Bearer $WIXZEL_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "welcome_message": "Hi! I am Molly from Smile Dental. Tap Call to talk to me.", "sharing": { "embed": true, "embed_origins": ["https://smiledental.example", "https://www.smiledental.example"], "caller_info": "contact", "max_call_seconds": 300, "daily_minutes": 60, "calls_per_visitor_daily": 3, "max_concurrent_calls": 2 } }'caller_infoهو ما يقدّمه الزائر قبل المكالمة:none(الافتراضي) لا يطلب شيئًا، وcontactيطلب اسمًا ورقم هاتف أو بريدًا إلكترونيًا، وgoogleيطلب تسجيل الدخول بحساب Google. يخبرك تسجيل الدخول بـ Google بهوية الزائر ولا يُنشئ له حساب Wixzel أبدًا؛ وعلى موقعك يُفتح في نافذة صغيرة على voice.wixzel.com، تعيد النتيجة فقط إلى أصل موجود فيembed_origins.تُبقي الحدود الأربعة المكالمات العامة ضمن ميزانية: أطول مكالمة، والدقائق العامة في اليوم لجميع الزوار معًا (حتى منتصف الليل بتوقيت UTC)، وعدد المكالمات التي يمكن لزائر واحد إجراؤها في اليوم، وعدد المكالمات في الوقت نفسه. القيم أعلاه هي القيم الافتراضية. أضف
"link": trueللحصول على صفحة مشاركة علىvoice.wixzel.com/m?id=…أيضًا.تحمل الاستجابة
mascot.public_id، مثلm_4fT9qLx2Bv8K. وهو المعرّف المستخدم في وسم script.03الصق وسم script واحدًا
أضف هذا إلى كل صفحة يجب أن تظهر فيها الشخصية التعريفية، قبل وسم إغلاق body:
index.html<script src="https://voice.wixzel.com/embed.js" data-mascot="m_4fT9qLx2Bv8K" async></script>تنتظر الشخصية التعريفية في الزاوية السفلية اليمنى مع رسالة الترحيب. يضغط الزائر Call، ويسمح بالميكروفون ويتحدث؛ فتستمع الشخصية التعريفية وتفكر وتحرّك فمها مع صوت الوكيل. يعمل الـ widget داخل shadow root، فلا يتداخل CSS الخاص بك مع CSS الخاص به أبدًا.
04ضعها بنفسك، ودع الوكيل يتصرف في صفحتك
لعرضها داخل عنصر خاص بك بدلًا من الزاوية، احذف
data-mascotمن الوسم واستدعِWixzelMascot.mountبعد تحميل السكربت.أداة العميل (client tool) تعمل في صفحتك عندما يطلبها الوكيل، مثلًا لفتح صفحة الحجز. أنشئ الأداة للوكيل في لوحة التحكم أو عبر
POST /v1/tools، ثم سجّل ما تفعله، قبل تحميل السكربت أو بعده:index.html<div id="talk"></div> <script> window.WixzelMascot = Object.assign(window.WixzelMascot || {}, { tools: { open_page: ({ path }) => { location.href = path; return { opened: path }; }, }, }); </script> <script src="https://voice.wixzel.com/embed.js" async onload="WixzelMascot.mount(document.getElementById('talk'), { mascot: 'm_4fT9qLx2Bv8K' })" ></script>ما تعيده الدالة يعود إلى الوكيل، الذي يخبر به المتصل. أدوات webhook، التي تستدعي خادمك، تعمل في الـ widget أيضًا.
05اعرف من اتصل، واحظر شخصًا
كل مكالمة عبر الـ widget تسجّل المتصل. اعرض قائمة المتصلين بوكيل:
shellcurl "https://api.voice.wixzel.com/v1/callers?agent_id=AGENT_ID&limit=20" \ -H "Authorization: Bearer $WIXZEL_API_KEY" curl -X PATCH https://api.voice.wixzel.com/v1/callers/CALLER_ID \ -H "Authorization: Bearer $WIXZEL_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "blocked": true }'لكل متصل
locationتقريبي (المدينة والمنطقة والدولة، مستنتجة من عنوان IP الذي لا يُحفظ إلا كقيمة hash)، وplatform(المتصفح ونظام التشغيل والجهاز)، وpage_urlالذي اتصل منه، وما قدّمه لك، وcall_count. يجمع معرّف عشوائي يحفظه متصفحه مكالماتِ الشخص الواحد؛ ولا توجد بصمة رقمية (fingerprinting)، ويخبر الـ widget المتصلين بما يُشارك معك.المتصل المحظور لا يستطيع الاتصال بذلك الوكيل مجددًا من الـ widget أو رابط المشاركة أو التطبيق أو الهاتف. كل مكالمة موجودة أيضًا في
GET /v1/callsمع نصها المكتوب وتكلفتها، ويمكن تصفيتها حسبcaller_id.
كم يكلّف هذا البناء على Wixzel Voice؟
وقت المحرك لجلسات مدة كل منها 3 دقيقة على محرك gemini-live بسعر $0.0491 لكل دقيقة متصلة: نحو $0.15 للجلسة. لا توجد تكلفة اتصالات هاتفية، لأنه لا يوجد خط هاتفي.
| الجلسات شهريًا | الدقائق المتصلة | تكلفة المحرك شهريًا |
|---|---|---|
| 300 | 900 | $44.19 |
| 1,500 | 4,500 | $221 |
| 6,000 | 18,000 | $884 |
إنشاء الوكيل وشخصيته التعريفية من موقعك مجاني، وكذلك الـ widget. تكلف المكالمات ما تكلفه مكالمة على محرك الوكيل، بالثانية، من رصيدك المسبق الدفع، دون خط هاتف تدفع مقابله. مع الحد الافتراضي البالغ 60 دقيقة عامة في اليوم، يمكن أن ينفق الـ widget على الأكثر نحو $2.95 في اليوم على Gemini Live.
مسبق الدفع، دون اشتراك ودون خطة مجانية: أضِف رصيدًا بدءًا من $5 ويُستهلك مع الاستخدام. قدّر تكلفة استخدامك.
ما حدود Wixzel Voice التي تنطبق على هذا البناء؟
- الصوت بجودة الهاتف، G.711 µ-law بتردد 8 kHz في الاتجاهين.
- لا يبدأ الـ widget المكالمات إلا من الأصول المذكورة في
embed_origins، وحدها الأقصى 20 أصلًا. - تبقى المكالمات العامة ضمن الحدود المضبوطة على الوكيل. بعد تجاوز
daily_minutesتُرفض المكالمات حتى منتصف الليل بتوقيت UTC. - تُحتسب مكالمات الـ widget ضمن حد المكالمات المتزامنة للحساب، خمس افتراضيًا، إلى جانب المكالمات الهاتفية وجلسات التطبيقات. يمنع
max_concurrent_callsصفحةً مزدحمة من استهلاكها كلها. - تستخدم مكالمات الـ widget رصيدًا حقيقيًا. دقائق الاختبار المجانية مخصصة للتحدث إلى وكلائك من لوحة التحكم.
- لا يوجد تحويل إلى شخص من مكالمة ويب؛ فالتحويل يحتاج إلى خط هاتف.
الأسئلة الشائعة
كيف أضع شخصية تعريفية ناطقة بالذكاء الاصطناعي على موقعي؟
POST /v1/agents/generate (أو «وكيل جديد»، ثم «من موقعك الإلكتروني»، في لوحة تحكم Wixzel Voice)، وفعّل الـ widget الخاص به عبر PATCH /v1/agents/{id}/mascot مع موقعك في embed_origins، وأضف <script src="https://voice.wixzel.com/embed.js" data-mascot="m_…" async></script> إلى صفحاتك. يضغط الزوار Call ويتحدثون إليها في المتصفح.هل يعمل الـ widget مع أي أداة لبناء المواقع؟
embed_origins.هل يمكن لموقع آخر نسخ كود التضمين واستخدام رصيدي؟
POST /v1/agents/{id}/mascot/rotate-public-id يعطي الشخصية التعريفية معرّفًا جديدًا، فيتوقف كود التضمين والرابط القديمان عن العمل فورًا.هل تستطيع الشخصية التعريفية التحدث بالهندية أو المالايالامية؟
هل يمكنني تغيير شكل الشخصية التعريفية؟
spec جديدًا عبر PATCH /v1/agents/{id}/mascot: شكلًا (circle أو drop أو triangle أو cloud أو pill أو flower أو squircle أو blob أو heart)، ولونًا، ونمط عينين. أو استدعِ POST /v1/agents/{id}/mascot/generate مع موقع أو وصف للحصول على مظهر جديد. لا تتغير تعليمات الوكيل عندما يتغير مظهره.للمزيد من القراءة
- الشخصيات التعريفيةالتوثيق
المظهر، ورابط المشاركة، والـ widget، ومن يمكنه الاتصال، والحدود.
- المتصلونالتوثيق
سجلات المتصلين، والمتصل في كل مكالمة، والحظر.
- الأدواتالتوثيق
أدوات webhook وأدوات العميل، بما في ذلك على موقعك.
- قواعد المعرفةالتوثيق
ما يعرفه وكيل أُنشئ من موقع، وإضافة المستندات.
عن Wixzel Voice
Wixzel Voice هو API للذكاء الاصطناعي الصوتي لبناء وكلاء ذكاء اصطناعي يجرون مكالمات هاتفية حقيقية ويردّون عليها عبر SIP trunk الخاص بك، أو يتحدثون إلى الناس في تطبيقات الويب والجوال الخاصة بك. مفتاح API واحد ورصيد مدفوع مسبقًا واحد يغطيان كل محركات الصوت، مع فوترة بالثانية حسب الاستخدام الفعلي.
المزيد من الأدلة
Claude، في Claude Code أو claude.ai، يجري مكالمة حقيقية عبر SIP trunk الخاص بك ويقرأ لك النص المكتوب، مع طلب تأكيد قبل أي اتصال.
رقم Twilio الحالي لديك يجيب عليه موظف استقبال بالذكاء الاصطناعي يحجز المواعيد عبر الـ API، مبني بـ Node.js.
وكيلان هاتفيان، أحدهما يتحدث الهندية والآخر المالايالامية، على نماذج Sarvam المخصصة للغات الهند، يجيبان على المكالمات أو يجريانها عبر SIP trunk الخاص بك.
تطبيق Flutter يتحدث فيه المستخدمون إلى وكيلك الصوتي عبر WebSocket، مع بقاء مفتاح API على خادمك ودون أي رقم هاتف.
وكيل Gemini Live يتصل بهاتف حقيقي عبر SIP trunk الخاص بك من أربعة طلبات cURL، وسجل المكالمة مع النص المكتوب والتكلفة.
قائمة عملاء محتملين اتصل بهم وكيلك عبر SIP trunk الخاص بك، على دفعات بحجم حد التزامن لديك، مع قراءة حالة كل مكالمة ونصها المكتوب.
شاشة Flutter فيها الشخصية التعريفية لوكيلك تحرّك فمها مع صوت الوكيل أثناء مكالمة آنية، مع بقاء مفتاح API على خادمك.
ابنِ أول وكيل صوتي لك

