هناك علامة النجمة ، مجموعة من المشغلين (3-5 أشخاص) مع حمولة كبيرة (متوسط وقت الانتظار> دقيقتان)
تتمثل المهمة للمشتركين الذين لديهم جغرافيا معينة في إعطاء الفرصة لعدم الانتظار حتى يصبح المشغل مجانيًا ، والضغط على 0 يسمع "شكرًا لك على المكالمة. سنعاود الاتصال بك بالتأكيد "، قطع الاتصال والانتظار بهدوء لمكالمة من المشغل ، جيدًا أو
من عامة الناس عبر Callback الذكي
إنشاء الجداول
إنشاء جدول asterisk.callback (
المعرف int (11) NOT NULL AUTO_INCREMENT ،
dt الطابع الزمني DEFAULT CURRENT_TIMESTAMP ،
cid varchar (32) DEFAULT NULL ،
التوقيت الصيفي (32) DEFAULT NULL ،
حالة صغيرة (6) غير فارغة 0 ،
tot_calls int (11) NOT NULL DEFAULT 0،
الطابع الزمني last_call DEFAULT "0000-00-00 00:00:00" ،
compl_dt الطابع الزمني DEFAULT "0000-00-00 00:00:00" ،
uniqueid varchar (32) DEFAULT NULL ،
قائمة الانتظار varchar (255) DEFAULT NULL ،
مفتاح أساسي (ID)
)
المحرك = INNODB
إنشاء جدول asterisk.callback_log (
المعرف int (11) NOT NULL AUTO_INCREMENT ،
callback_id int (11) ليس فارغًا ،
الطابع الزمني dt DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ،
varchar الحالة (32) DEFAULT NULL ،
params varchar (2048) DEFAULT NULL ،
مفتاح رئيسي (معرف) ،
CONSTRAINT callback_log_fk1 FOREIGN KEY (callback_id)
المراجع asterisk.callback (id) على DELETE CASCADE ON UPDATE CASCADE
)
المحرك = INNODB
تحرير extensions.conf
exten => 88142590067، s، 1
same => n، GotoIf ($ ["$ {CALLERID (num): 0: 4}" = "8814"]؟ extra)؛ إذا كان الرقم محليًا ، فاسمح بـ CALLBACK
.... يمكنك إدراج المزيد من الشيكات هنا ...
same => n، Goto (call)
same => n (إضافي) ، NoOp (السماح باستدعاء $ {CALLERID (num)})
same => n ، تعيين (ALLOW_CALLBACK = 1)
same => n ، تعيين (CALLBACK_QUEUE = العوامل)
same => n ، الخلفية (vse / press0-to-callback)
same => n (استدعاء) ، NoOp (اسأل عن المشغلين. GROUP_COUNT = $ {GROUP_COUNT (عوامل تشغيل)})
نفسه => n ، قائمة الانتظار (العوامل ، tThH)
نفسه => ن ، Hangup
تشمل => main_menu_press
[Main_menu_press]
exten => 0.1 ، NoOp ('-------------------- $ {CALLERID (num)} PRESS BUTTON $ {EXTEN}. ALLOW_CALLBACK = $ {ALLOW_CALLBACK} ')
same => n ، GotoIf ($ [$ {ALLOW_CALLBACK} = 1]؟ رد اتصال ، s ، 1: i ، 1)
[استدعاء]
exten => s، 1، NoOp (CALLBACK)
same => n ، تشغيل (شكرا لك على الاتصال & vse / my-vam-perezvonim)
نفسه => ن ، Hangup
exten => h، 1، agi (callback.php، gen، 0، $ {CALLBACK_QUEUE})
[إفعل رد]
exten => _X. ، 1 ، NoOp (حاول الاتصال بقائمة الانتظار ($ {CALLBACK_QUEUE}) وإعادة الاتصال بـ $ {CALLBACK_NUM})
same => n ، Set (__ DST = "؟")
same => n ، Set (CALLERID (num) = $ {CALLBACK_NUM})
same => n (call) ، قائمة الانتظار ($ {CALLBACK_QUEUE} ، tT)
same => n ، NoOp (CALLBACK QUEUESTATUS = $ {QUEUESTATUS})
[ماكرو-طابور answ]. وصلنا إلى هنا عندما أجاب المشغل.
exten => s ، 1 ، NoOp (أجاب عضو قائمة الانتظار uniq = $ {UNIQUEID} cid = $ {CALLERID (num)} chan = $ {CHANNEL} callback_id = $ {CALLBACK_ID} callback_num = $ {CALLBACK_NU
same => n، GotoIf ($ ["$ {CALLBACK_ID} x" = "x"]؟ skip)
same => n ، Set (DST = $ {CHANNEL})
same => n ، Set (CALLERID (num) = 067)
same => n ، التشغيل (تجربة خاصة) ؛ تشغيل المشغل "انتظر الاتصال"
same => n ، agi (callback.php ، قائمة انتظار الإجابة ، $ {CALLBACK_ID} ، $ {CHANNEL} ، $ {UNIQUEID})
same => n ، Dial (Local / $ {CALLBACK_NUM}from_office_new)
same => n ، NoOp ([مهلة قائمة انتظار الماكرو - إجابة] مهلة الطلب)
same => n (تخطي) ، NoOp ()
exten => h، 1، NoOp ([طلب قائمة انتظار الماكرو])
same => n، GotoIf ($ ["$ {CALLBACK_ID} x" = "x"]؟ end)
same => n ، NoOp (dialstatus = $ {DIALSTATUS} hangupcause = $ {HANGUPCAUSE} queuestatus = $ {QUEUESTATUS})
same => n ، NoOp (my_dialstatus = $ {MY_DIALSTATUS} my_hangupcause = $ {MY_HANGUPCAUSE})
same => n، agi (callback.php، hangup-queue-answering، $ {CALLBACK_ID}، $ {CHANNEL}، $ {UNIQUEID})
نفسه => ن (النهاية) ، NoOp
[استدعاء-كاملة]
exten => s ، 1 ، NoOp (رد الاتصال مكتمل. CALLBACK_ID = $ {CALLBACK_ID} ، uniq = $ {UNIQUEID} ، dst = $ {DST} chan = $ {CHANNEL})
same => n ، NoOp (dialstatus = $ {DIALSTATUS} hangupcause = $ {HANGUPCAUSE} queuestatus = $ {QUEUESTATUS})
same => n ، NoOp (my_dialstatus = $ {MY_DIALSTATUS} my_hangupcause = $ {MY_HANGUPCAUSE})
ملف Queues.conf
[مشغلي]
ringinuse = لا
استراتيجية = rrmemory
الموسيقى = الافتراضي
عضو => SIP / 321
عضو => SIP / 322
عضو => SIP / 323
عضو => SIP / 324
عضو => SIP / 325
عضو => وكيل / 1
عضو => وكيل / 2
عضو => وكيل / 3
عضو => وكيل / 4
عضو => وكيل / 5
السياق = main_menu_press
مهلة = 0
أعلن موقف = نعم
يعلن تردد = 60
إعلان دوري التردد = 30
قائمة الانتظار - youarenext = قائمة الانتظار - youarenext
membermacro = قائمة انتظار الإجابة
حسنًا ، البرامج النصية (تم اكتشاف PHP)
ملف config.php
<?php ob_implicit_flush(true); set_time_limit(6); date_default_timezone_set('Europe/Moscow'); mysql_connect("localhost","asterisk","***") or die('Mysql connect error'); mysql_select_db("asterisk");
callback.php
ونضع ملف callback-regen.php واحدًا لتجديد ملفات الاتصال في تيجان كل 5 دقائق بين 8 صباحًا و 8 مساءً.
مع كل محاولة ، يتم زيادة وقت المكالمة المتكررة بنسبة 5 دقائق. بعد 10 محاولات للسخرية من المشغل ، توقف