Lập mô hình luồng dữ liệu
Phát tín hiệu gửi tặng Yêu cầu gửi quà đã được
biên tập Gửi SMS Thời gian gửi tặng Mã quà tặng SĐT Gửi
Tạo điều khiển gửi
tặng Quà đã được gửi tặng
Thời gian gửi tặng Mã quà tặng SĐT Gửi/ Nhận Tín hiệu Thông tin kích hoạt
quà tặng
Điều khiển gọi ra Báo hiệu chưa
kích hoạt quà tặng tới người gửi Thông báo có quà tặng tới người nhận Kho nhạc Phát quà tặng File lời chúc Bài hát KH nhận quà Quà tặng Mã quà tặng Mã BH Yêu cầu gửi quà đã được
biên tập KH nhận quà
64
Thuật toán xử lý:
Bắt đầu
Lấy những yêu cầu gửi tặng đã được biên tập và kích hoạt DB Vmusic
Lấy thời gian gửi tặng của những yêu cầu đó: T
{Now()+5} <= T <=
{Now()+10} {Now()-5} <= T <= {Now()} {Now()-10} <= T <= {Now()-5} Delay: 100s
S S
Gửi tin nhắn cho người nhận báo sẽ có quà trong ít phút, tin
nhắn kèm thêm lời chúc sms nếu có
Đ
Phát quà tới người nhận: - Lời chúc
- Bài hát Đ
Gửi SMS - Tới người gửi báo tình trạng
quà tặng - Tới người nhận: thông tin về
mã quà tặng Đ
S
DB Vmusic
T: Thời gian gửi tặng Now(): Thời điểm hiện tại 5,10 à theo phút DB: Database
Hình 26: Sơ đồ giải thuật đáp ứng yêu cầu gửi tặng trong hệ thống quà tặng âm nhạc
Trong sơ đồ khối trên mô tả một service chạy 24/24 dạng While (1) {
; xử lý }
đƣợc tạo ra để quét cơ sở dữ liệu yêu cầu gửi tặng, so khớp thời gian hiện tại với thời gian của các yêu cầu cần đáp ứng, nếu phù hợp sẽ lấy các yêu cầu đó, tạo file .call đẩy vào thƣ mục /var/spool/asterisk/outgoing/. Sau đó, asterisk sẽ phân tích file
65
.call và tiến hành gọi ra cho số điện thoại ngƣời nhận, sau khi ngƣời nhận nhấc máy, hệ thống sẽ phát kịch bản thoại ở file extensions.conf tại địa chỉ (Context:Extension:Priority) có trong file .call nhƣ phân tích ở 2.2.4.
Hình 27: Mô hình file .call sử dụng trong hệ thống quà tặng âm nhạc
Kịch bản thoại phát cho ngƣời nhận đƣợc xây dựng tại script php:
AGI(/var/lib/asterisk/agi-bin/phatquatang.php,${id}) ;// id là mã quà tặng âm nhạc Kịch bản thoại này đƣợc xây dựng theo sơ đồ khối nhƣ dƣới:
Bắt đầu Lẫy mã quà tặng DB VMusic Lẫy mã bài hát
Lấy link file thu âm
Lấy link file bài hát
Phát lời chúc
+ bài hát Kết thúc
Hình 28: Sơ đồ giải thuật cho kịch bản thoại phát quà tặng
Việc xây dựng kịch bản thoại này cũng sử dụng thƣ viện phpagi và kết nối với cơ sở dữ liệu mysql giống nhƣ kịch bản thoại cho tổng đài tiếp nhận yêu cầu gửi tặng.
66
Trong trƣờng hợp không kết nối đƣợc tới ngƣời nhận quà, trƣờng thời gian gọi ra đáp ứng của yêu cầu đó sẽ đƣợc cộng thêm 3 phút (3 lần đầu và 3 lần sau) hoặc 15 phút giữa lần thứ 3 và thứ 4, đồng thời mỗi lần gọi ra, sẽ cập nhật vào 1 trƣờng lƣu số lần gọi ra với yêu cầu đó. Sẽ có tổng cộng 6 lần gọi ra cho ngƣời nhận nếu ngƣời nhận không nhấc máy. Kết thúc 6 lần, hệ thống sẽ không cộng thêm thời gian gọi ra cho yêu cầu đó nữa. Kết thúc việc xử lý tự động yêu cầu đó.
Trong trƣờng hợp số lƣợng file call tại một thời điểm nhiều hơn 1, mỗi lần quét cơ sở dữ liệu sẽ giới hạn số lƣợng file .call đồng thời là 30 file đồng thời. Việc này sẽ dẫn đến những yêu cầu gửi tặng tại cùng thời điểm đó từ vị trí thứ 31 trở đi sẽ bị trễ. Thời gian trễ là thời gian hệ thống gọi ra quét cơ sỡ dữ liệu ờ lần tiếp theo. Việc xử lý này dẫn đến 2 vấn đề:
Tại thời điểm quét cơ sở dữ liệu để lấy yêu cầu, số lƣợng yêu cầu gọi ra vƣợt quá số line rảnh.
Việc xử lý với các yêu cầu bị trễ.
Hai trƣờng hợp này sẽ đƣợc xử lý nhƣ trƣờng hợp cuộc gọi đến máy nhƣng ngƣời nhận không nhấc máy. Trong trƣờng hợp đặc biệt, khi số lƣợng yêu cầu cần đáp ứng tăng đột biến, và hệ thống đáp ứng không tốt (số lƣợng yêu cầu không đƣợc đáp ứng tăng cao), hệ thống sẽ cảnh báo sớm tới ngƣời quản trị. Trong quá trình hệ thống quà tặng âm nhạc vận hành, nếu số lƣợng yêu cầu ngày một lên cao, và hệ thống có khả năng không đáp ứng tốt, hệ thống sẽ đƣợc nâng cấp thêm đƣờng E1. Để nâng cao chất lƣợng dịch vụ, hệ thống tin nhắn cũng đƣợc sử dụng để thông báo quà tặng tới ngƣời gửi và ngƣời nhận quà.