3. Ngày giao nhiệm vụ luận văn:
4.3. QUÁ TRÌNH THỰC HIỆN KẾT NỐI ASTERISK VÀ AGI
Giao tiếp giữa Asterisk và AGI script đƣợc thực hiện dựa theo một mô hình định sẵn
Hình 4.2 Quá trình giao tiếp giữa Asterisk và AGI Script
Khi một AGI script bắt đầu, Asterisk gửi danh sách các giá trị, cùng với các thông tin cho AGI script trƣớc khi AGI script thực sự hoạt động:
Chƣơng 4: Lập trình ứng dụng dựa vào giao tiếp AGI
- 24 -
agi_request: TenFilẹagi
agi_channel: Kênh thực hiện gọi agi_language: Ngôn ngữ đƣợc cấu hình agi_type: Zap/sip hoặc iax2
agi_uniqueid: Một kí hiệu nhận dạng duy nhất cho phiên làm việc này agi_version:
agi_callerid: Số điện thoại gọi vào
agi_calleridname: Tên của điện thoại gọi vào agi_callingpres:
agi_callingani2: agi_callington:
agi_dnid: Số đƣợc gọi vào agi_rdnis:
agi_context: Ngữ cảnh gọi agi_extension: Extention gọi agi_priority: Thứ tự gọi agi_enhaced: 0.0 agi_accountcode:
Sau khi gửi các giá trị này cho AGI script, Asterisk gửi một khoảng trắng. Đây là tín hiệu cho biết Asterisk đã thực hiện xong việc gửi các giá trị, AGI script sẽ bắt đầu thực hiện công việc.
Tiếp theo, AGI sẽ gửi các lệnh cho Asterisk thông qua STDOUT. Sau mỗi lệnh, Asterisk lại gửi cho AGI một đáp ứng. Công việc này đƣợc thực hiện trong suốt quá trình của AGI script. [6][12]
Chƣơng 4: Lập trình ứng dụng dựa vào giao tiếp AGI
- 25 -
4.4. Quá trình hoạt động của AGI
Nhƣ đã đề cập ở phần trƣớc, giao tiếp giữa Asterisk và AGI script đƣợc thực hiện thông qua STDIN và STDOUT.
Hình 4.3 Quá trình hoạt động của AGI
ASC đƣợc kí hiệu cho AGI script, AST kí hiệu cho Asterisk
Hoạt động giao tiếp giữa AGI script và Asterisk đơn giản là những truy vấn và trả lời đƣợc đƣa thông qua STDIN/STDOUT.
Chƣơng 4: Lập trình ứng dụng dựa vào giao tiếp AGI
- 26 -
Hình 4.4 Hoạt động của AGI có kết nối dữ liệu bên ngoài
Mô hình ở trên mô tả một ví dụ về hoạt động của AGI trong đó bao gồm hai thành phần: truy cập vào cơ sở dữ liệu và giao tiếp với web service để sử dụng thông tin. Qua đây ta có thể thấy AGI có khả năng kết nối với nhiều nguồn thông tin và dữ liệu khác nhau mà Asterisk không có đƣợc. [6]