Ada asterisk, sekelompok operator (3-5 orang) dengan muatan besar (waktu tunggu rata-rata> 2 menit)
Tugasnya adalah untuk pelanggan dengan geografi tertentu untuk memberikan kesempatan untuk tidak menunggu sampai operator bebas, dan dengan menekan 0 mendengar "Terima kasih atas panggilan. Kami pasti akan menghubungi Anda kembali ”, putuskan sambungan dan dengan tenang menunggu panggilan dari operator, baik atau
pada orang biasa dengan Callback cerdas
Buat tabel
CREATE TABLE asterisk.callback (
id int (11) BUKAN NULL AUTO_INCREMENT,
stempel waktu dt DEFAULT CURRENT_TIMESTAMP,
cid varchar (32) DEFAULT NULL,
dst varchar (32) DEFAULT NULL,
status smallint (6) NOT NULL DEFAULT 0,
tot_calls int (11) TIDAK NULL DEFAULT 0,
last_call timestamp DEFAULT '0000-00-00 00:00:00',
stempel waktu compl_dt DEFAULT '0000-00-00 00:00:00',
uniqueid varchar (32) DEFAULT NULL,
queue varchar (255) DEFAULT NULL,
KUNCI UTAMA (ID)
)
ENGINE = INNODB
CREATE TABLE asterisk.callback_log (
id int (11) BUKAN NULL AUTO_INCREMENT,
callback_id int (11) TIDAK NULL,
stempel waktu dt DEFAULT CURRENT_TIMESTAMP PADA PEMBARUAN CURRENT_TIMESTAMP,
status varchar (32) DEFAULT NULL,
params varchar (2048) DEFAULT NULL,
KUNCI UTAMA (id),
CONSTRAINT callback_log_fk1 FOREIGN KEY (callback_id)
DAFTAR PUSTAKA asterisk.callback (id) DI DELETE CASCADE ON UPDATE CASCADE
)
ENGINE = INNODB
Mengedit extensions.conf
exten => 88142590067, s, 1
same => n, GotoIf ($ ["$ {CALLERID (num): 0: 4}" = "8814"]? ekstra); jika nomornya adalah lokal, maka izinkan PANGGILAN
.... Anda dapat memasukkan lebih banyak cek di sini ...
same => n, Goto (panggilan)
same => n (ekstra), NoOp (Izinkan panggilan balik untuk $ {CALLERID (num)})
sama => n, Set (ALLOW_CALLBACK = 1)
sama => n, Set (CALLBACK_QUEUE = operator)
sama => n, Latar Belakang (vse / press0-to-callback)
same => n (panggilan), NoOp (Minta operator. GROUP_COUNT = $ {GROUP_COUNT (operator)})
sama => n, antrian (operator, tThH)
sama => n, Hangup
termasuk => main_menu_press
[main_menu_press]
exten => 0,1, NoOp ('-------------------- $ {CALLERID (num)} TOMBOL PRESS $ {EXTEN}. ALLOW_CALLBACK = $ {ALLOW_CALLBACK} ')
same => n, GotoIf ($ [$ {ALLOW_CALLBACK} = 1]? callback, s, 1: i, 1)
[panggilan balik]
exten => s, 1, NoOp (CALLBACK)
same => n, Putar ulang (terima kasih atas panggilan & vse / my-vam-perezvonim)
sama => n, Hangup
exten => h, 1, agi (callback.php, gen, 0, $ {CALLBACK_QUEUE})
[do-callback]
exten => _X., 1, NoOp (Coba panggil ke antrian ($ {CALLBACK_QUEUE}) dan panggil balik ke $ {CALLBACK_NUM})
sama => n, Set (__ DST = "?")
same => n, Set (CALLERID (num) = $ {CALLBACK_NUM})
same => n (panggilan), antrian ($ {CALLBACK_QUEUE}, tT)
same => n, NoOp (CALLBACK QUEUESTATUS = $ {QUEUESTATUS})
[makro-antrian-jawab]; Kami tiba di sini ketika operator menjawab.
exten => s, 1, NoOp (Anggota antrian menjawab uniq = $ {UNIQUEID} cid = $ {CALLERID (num)} chan = $ {CHANNEL} callback_id = $ {CALLBACK_ID} callback_num = $ {CALLBACK_NU
same => n, GotoIf ($ ["$ {CALLBACK_ID} x" = "x"]? lewati)
sama => n, Set (DST = $ {CHANNEL})
sama => n, Set (CALLERID (num) = 067)
same => n, Playback (percobaan pribadi); Operator bermain "Tunggu koneksi"
same => n, agi (callback.php, antrian, $ {CALLBACK_ID}, $ {CHANNEL}, $ {UNIQUEID})
same => n, Putar (Lokal / $ {CALLBACK_NUM} @from_office_new)
same => n, NoOp (timeout tunggu [makro-antrian-jawab])
sama => n (lewati), NoOp ()
exten => h, 1, NoOp (hang-dial dial)
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, hang--queue-answering, $ {CALLBACK_ID}, $ {CHANNEL}, $ {UNIQUEID})
sama => n (akhir), NoOp
[panggilan balik selesai]
exten => s, 1, NoOp (Callback selesai. 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})
File Queues.conf
[operator]
ringinuse = tidak
strategi = rrmemory
music = default
member => SIP / 321
member => SIP / 322
member => SIP / 323
member => SIP / 324
member => SIP / 325
anggota => Agen / 1
anggota => Agen / 2
anggota => Agen / 3
anggota => Agen / 4
anggota => Agen / 5
context = main_menu_press
batas waktu = 0
Umumkan-posisi = ya
mengumumkan frekuensi = 60
periodic-announce-frequency = 30
queue-youarenext = antrian-youarenext
membermacro = antrian-jawab
Sebenarnya skrip (PHP terdeteksi)
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
Dan kami menempatkan satu file callback-regen.php lagi untuk regenerasi file panggilan dalam mahkota setiap 5 menit antara pukul 8 pagi dan 8 malam.
Dengan setiap upaya, waktu panggilan yang diulang bertambah 5 menit. Setelah 10 upaya untuk mengejek operator, berhenti