a) Giao tiếp AGI chuẩn
Khi AGI khởi động, Asterisk sẽ gửi một danh sách các biến và giá trị của những biến đó tới AGI scripts, Những biến đó có thể dưới dạng:
agi_request: test.php agi_channel: SIP/101 agi_language: en agi_callerid: 101 agi_context: default agi_extension: 123 agi_priority: 1
Sau khi gửi đi những giá trị này, Asterisk gửi một dòng rỗng. Đây là tín hiệu cho thấy Asterisk đã gửi xong các biến và là lúc để AGI scripts kiểm soát dialplan.
Lúc này AGI script gửi các dòng lệnh tới Asterisk qua việc ghi vào STOUT. Sau đó, mỗi dòng lệnh tương ứng với một kịch bản sẽ được Asterik gửi lại trả lời để AGI đọc. Những việc này có thể liên tục diễn ra trong suốt khoảng thời gian tồn tại của AGI scripts.
b) Gọi AGI script từ dialplan
Để làm việc đúng đắn, AGI script cần phải thực hiện. Để sử dụng 1 AGI script trong dialplan, chỉ đơn giản dùng hàm gọi AGI(name_of_application) như sau:
exten => 123,1,Answer()
same => n,AGI(test.php) same => n,Hangup()
Và đương nhiên là file test.php đươc lưu theo đường dẫn /var/lip/asterisk/agi-bin. c) Tạo AGI script với ngôn ngữ PHP
Trong phần này ta lấy ví dụ về việc viết AGI script để thực hiện đọc một số điện thoại được Asterisk đưa vào và sau đó phát một bài nhạc.
/* Đầu tiên khai báo cho hệ thống biết chúng ta dùng trình biên dịch PHP để chạy kịch bản này*/ #!/usr/bin/php -q
<?php
include("phpagi.php"); $agi = new AGI(); $agi->answer();
// nhận một giá trị số điện thoại được đưa vào AGI lưu trong biến $number $number = $argv[1];
// Đọc số điện thoại nhận được $agi -> Say_digits(“$number”); // phát một bản nhạc
$agi -> exec(“BackGround”,”file/Anh”); ?>