ساخت سیستم IVR تعاملی برای دریافت شماره

آیا تا به حال به مشکلی برخورده‌اید که بخواهید از طریق IVR شماره‌ای مثل شماره همراه از کاربر دریافت کنید و اون رو در یک فایل یا پروژه دیگه استفاده کنید، اما به هر دلیلی این کار به درستی انجام نشود؟

با استفاده از ماژول زیر، می‌توانید هر مقدار مورد نیاز را از ورودی کاربر دریافت کرده و به‌آسانی در فایل های دیگر یا پروژه‌های برنامه‌نویسی خود به‌کار ببرید.

وقتی کد زیر اجرا شود، مراحل زیر به ترتیب اتفاق می‌افتد:

$result = $agi->get_data('ivr', 15000, 12);
  1. پخش فایل صوتی درخواست شماره از کاربر در مرحله اول، فایل صوتی‌ای که با نام ivr مشخص شده، برای کاربر پخش می‌شود. این فایل می‌تواند یک پیام راهنما باشد که از کاربر می‌خواهد شماره‌ای را وارد کند.
    دریافت شماره از کاربر با استفاده از تابع get_data کد برای دریافت ورودی کاربر از تابع get_data استفاده می‌کند. این تابع سه پارامتر دریافت می‌کند:
  • نام فایل صوتی (ivr): فایل صوتی که هنگام درخواست شماره از کاربر پخش می‌شود.اگر بخواهید این فایل را تغییر دهید، کافی است نام فایل صوتی که در سرور در پوشه صوت های استریسک در مسیر زیر /var/lib/asterisk/sounds را در کد عوض کنید.
  • زمان انتظار (15000): این زمان به میلی‌ثانیه است و نشان می‌دهد سیستم برای دریافت ورودی تا 15 ثانیه صبر می‌کند.
  • حداکثر تعداد ارقام (12): این پارامتر تعیین می‌کند که کاربر می‌تواند حداکثر تا 12 رقم وارد کند.

در مرحله بعد، ورودی کاربر که در $result['result'] ذخیره شده، به متغیر $number اختصاص داده می‌شود. سپس بررسی‌هایی انجام می‌گیرد تا اطمینان حاصل شود که شماره وارد شده شرایط مورد نظر را دارد:

  1. چک کردن پایان ورودی با کاراکتر #
    کد بررسی می‌کند که آیا کاربر ورودی خود را با کاراکتر # به پایان رسانده است یا خیر. این کار به سیستم کمک می‌کند تا متوجه شود ورودی به پایان رسیده و می‌تواند آن را پردازش کند.
  2. بررسی تعداد ارقام ورودی
    سپس تعداد ارقام ورودی چک می‌شود تا مطمئن شویم شماره‌ای که کاربر وارد کرده، به طول مورد نظر (مثلاً 11 رقم) رسیده است. اگر طول شماره کمتر از مقدار مشخص شده باشد، کد به کاربر اعلام می‌کند که شماره معتبر نیست و دوباره از او درخواست ورودی می‌کند.
  3. پخش پیام تشکر
    در صورتی که تمام شرایط بالا رعایت شده باشد و شماره به درستی دریافت شود، یک پیام صوتی تشکر برای کاربر پخش می‌شود:
$agi->exec('Playback', 'pr/thank-you-for-calling');

این پیام می‌تواند به دلخواه شما تغییر کند. در پایان، تماس به طور خودکار خاتمه داده می‌شود تا فرآیند به پایان برسد.

2 پسندیده