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