Nguyên tắc hoạt động của AGI

Một phần của tài liệu TỔNG ĐÀI DỊCH VỤ VOIP (Trang 41)

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”); ?>

Một phần của tài liệu TỔNG ĐÀI DỊCH VỤ VOIP (Trang 41)