Lập trình cho AGI script

Một phần của tài liệu Hệ thống Asterisk và các dịch vụ mở rộng dùng ngôn ngữ PHPAGI (Trang 37 - 40)

Chương 7: Các dịch vụ thực hiện dựa trên AG

7.2.3 Lập trình cho AGI script

 Code dưới đây được sử dụng cho dịch vụ báo thức này:

#!/usr/bin/php5 -q <?php

require 'phpagịphp'; $agi = new AGI();

// Nơi file wakeup call tạm thời được tạo $parm_temp_dir = '/tmp';

// Nơi file wakeup call sau khi tạo xong được sử dụng để gọi lại $parm_call_dir = '/var/spool/asterisk/outgoing';

// Số lần gọi lại

$parm_maxretries = 3;

// thời gian rung cho mỗi lần gọi $parm_waittime = 60;

// Thời gian giữa các lần gọi $parm_retrytime = 60;

// Caller ID hiển thị trên máy được báo thức $parm_wakeupcallerid = 'bao thuc';

//Sử dụng playback để phát file nhạc báo thức $parm_application = 'playback';

//file nhạc báo thức $parm_data = 'baothuc0'; $agi->answer();

$agi->stream_file("baothuc0");

// Nhập số điện thoại cần được báo thức Do { $sdt = $agi->get_datắbeep',3000, 4); $cidn=$sdt['result']; } While($cidn==0); // Nhập giờ báo thức $agi->stream_file("baothuc1"); $rc = $agi->get_datắbeep',3000, 4); $wtime = $rc['result']; while($wtime<=0 || $wtime >=2359) { $agi->stream_file("baothuc2"); $rc = $agi->get_datắbeep',3000, 4); $wtime = $rc['result'];

}

//phát lại thông tin: số điện thoại và giờ báo thức $agi->stream_file("baothuc3"); $agi->say_digits($cidn); $agi->stream_file("baothuc4"); $h = substr( $wtime, 0, 2 ); $h1 = substr( $wtime, 0, 1 ); $h2 = substr( $wtime, 1, 1 ); $m = substr( $wtime, 2, 2 ); $m1 = substr( $wtime, 2, 1); $m2 = substr( $wtime, 3, 1); if ( $h1 == 0 ) $agi->say_number($h2); else $agi->say_number($h); $agi->stream_file("baothuc5"); if ( $m1 == 0 ) $agi->say_number($m2); else $agi->say_number($m); $agi->stream_file("baothuc6"); $agi->stream_file("baothuc7");

// Tạo file wakeup và thêm thông tin vào

$wakefile = "$parm_temp_dir/$wtimẹext.$cidn.call"; $callfile = "$parm_call_dir/$wtimẹext.$cidn.call";

$wuc = fopen( $wakefile, 'w');

fputs( $wuc, "channel: Local/$cidn@local\n" ); fputs( $wuc, "maxretries: $parm_maxretries\n"); fputs( $wuc, "retrytime: $parm_retrytime\n"); fputs( $wuc, "waittime: $parm_waittime\n"); fputs( $wuc, "callerid: $parm_wakeupcallerid\n"); fputs( $wuc, "application: $parm_application\n"); fputs( $wuc, "data: $parm_data\n");

// Gán thời gian báo thức vào biến $time_wakeup $w = getdate();

$w['hours'] = substr( $wtime, 0, 2 ); $w['minutes'] = substr( $wtime, 2, 2 );

$time_wakeup = mktime( substr( $wtime, 0, 2 ), substr( $wtime, 2, 2 ), 0, $w['mon'], $w['mdaý], $w['year'] );

//Xác định thời gian hiện tại, nếu lớn hơn thời gian báo thức thì cộng thêm 1 ngày vào $time_wakeup

$time_now = time( );

if ( $time_wakeup <= $time_now ) $time_wakeup += 86400;

touch( $wakefile, $time_wakeup, $time_wakeup ); rename( $wakefile, $callfile );

?>

Một phần của tài liệu Hệ thống Asterisk và các dịch vụ mở rộng dùng ngôn ngữ PHPAGI (Trang 37 - 40)

Tải bản đầy đủ (DOCX)

(86 trang)
w