اتصال ایزابل و استریسک به منشی تلفنی هوشمند

به‌روزرسانی:

منشی هوشمند جای مرکز تلفن شما را نمی‌گیرد؛ یک مقصد جدید در همان ایزابل یا استریسک است. خط شهری، داخلی‌ها و صف‌های فعلی دست نمی‌خورند و فقط تعیین می‌کنید کدام تماس‌ها (مثلاً خارج از ساعت کاری یا وقتی همه داخلی‌ها اشغال‌اند) به آوا برود.

اول: نسخه استریسک را ببینید

ایزابل یک مرکز تلفن متن‌باز بر پایه استریسک است. راه اتصال به نسخه استریسک بستگی دارد. در کنسول استریسک (asterisk -r) دستور زیر نسخه را نشان می‌دهد.

core show version

راه ۱: AudioSocket (استریسک ۱۸ و بالاتر)

طبق مستندات رسمی استریسک، برنامه دیال‌پلن AudioSocket از نسخه ۱۸.۰.۰ وجود دارد. این برنامه به یک سرور TCP وصل می‌شود و صدای تماس را به صورت PCM شانزده‌بیتی ۸ کیلوهرتز تک‌کاناله می‌فرستد و صدای برگشتی را پخش می‌کند. پروتکل آن ساده است: هر بسته یک بایت نوع، دو بایت طول و سپس داده دارد.

AudioSocket تماس را خودش جواب نمی‌دهد؛ طبق همان مستندات باید قبل از آن Answer() بیاید. هر تماس یک شناسه UUID می‌گیرد.

[ava-agent]
exten => s,1,Answer()
 same => n,Set(CALLID=${SHELL(uuidgen | tr -d '\n')})
 same => n,AudioSocket(${CALLID},ava-bridge.local:9092)
 same => n,Hangup()

راه ۲: EAGI (نسخه‌های قدیمی‌تر)

برنامه EAGI در همه نسخه‌های رایج استریسک هست. مثل AGI کار می‌کند و صدای ورودی تماس را روی file descriptor شماره ۳ به اسکریپت می‌دهد. برای ایزابل‌هایی که استریسک قدیمی‌تر از ۱۸ دارند این راه بدون ارتقای مرکز تلفن کار می‌کند، ولی پیاده‌سازی پخش صدا و تشخیص پایان جمله با اسکریپت است.

راه ۳: یک داخلی یا ترانک SIP

آوا را مثل یک داخلی یا ترانک SIP تعریف می‌کنید و تماس را به آن می‌فرستید. ساده‌ترین راه برای مرکز تلفنی است که دسترسی به دیال‌پلن آن محدود است. انتقال تماس به اپراتور در این حالت با انتقال SIP انجام می‌شود.

کدام تماس‌ها به آوا برود؟

  • فقط خارج از ساعت کاری: با شرط زمانی (Time Condition) در ایزابل، مقصد «خارج از ساعت» را مسیر آوا بگذارید.
  • وقتی همه داخلی‌ها اشغال‌اند یا جواب نمی‌دهند: مقصد «بدون پاسخ» صف یا گروه زنگ را آوا بگذارید.
  • همه تماس‌ها: آوا اول جواب می‌دهد و هر کس اپراتور بخواهد را در ساعت کاری به داخلی تعیین‌شده وصل می‌کند.

قرارداد API تماس آوا

سرویس پل (AudioSocket، EAGI یا SIP) صدا را به متن تبدیل می‌کند و هر جمله تماس‌گیرنده را به API آوا می‌فرستد. جواب، متنی است که پل به صدا تبدیل و پخش می‌کند، به همراه دستور ادامه، انتقال یا قطع. کلید خط از بخش تنظیمات پنل گرفته می‌شود و هر تماس با آن از کیف پول حساب می‌شود.

سرویس پل صوتی آوا (گفتار به متن و متن به گفتار فارسی) در مرحله آزمایش است. منطق گفتگو، نوبت‌دهی، پنل و این API همین حالا کار می‌کنند و در «تماس آزمایشی» پنل به صورت متنی امتحان می‌شوند.

POST /api/avaagent/calls/start      X-Line-Key: <کلید خط>   {"caller": "09121234567"}
→ {"call_id": 42, "reply": "سلام، اینجا ...", "action": "continue"}

POST /api/avaagent/calls/42/turn   {"text": "فردا ساعت ۱۰ نوبت دارید؟"}
→ {"reply": "نزدیک‌ترین وقت خالی ...", "action": "continue" | "transfer" | "hangup", "transfer_to": "101"}

POST /api/avaagent/calls/42/end    {"duration_sec": 95, "recording_url": "https://..."}
→ {"outcome": "booked", "summary": "...", "cost": ...}

اعلام ضبط مکالمه

جمله سلام آوا به صورت پیش‌فرض اعلام می‌کند که تماس ضبط می‌شود. اگر جمله سلام را در پنل عوض می‌کنید، این اعلام را نگه دارید.

سوالات متداول

برای وصل کردن آوا باید ایزابل را عوض کنیم؟

نه. آوا یک مقصد جدید در همان مرکز تلفن است. در استریسک ۱۸ و بالاتر با AudioSocket، در نسخه‌های قدیمی‌تر با EAGI یا به صورت داخلی یا ترانک SIP وصل می‌شود.

خط شهری یا شماره ما عوض می‌شود؟

نه. تماس روی همان خط و شماره می‌آید و فقط مسیر آن در مرکز تلفن تعیین می‌کند کدام تماس به آوا برود.

AudioSocket چه صدایی می‌فرستد؟

طبق مستندات استریسک، صدای PCM شانزده‌بیتی ۸ کیلوهرتز تک‌کاناله روی یک اتصال TCP؛ از طریق درایور کانال، کدک‌های دیگر هم ممکن است.

منابع

منطق گفتگو و نوبت‌دهی آوا را همین حالا امتحان کنید. دموی کلینیک نمونه در صفحه اصلی است و با دانش خودتان در «تماس آزمایشی» پنل.

دموی زندهورود به پنل

راهنماهای دیگر