Cấu trúc module

Một phần của tài liệu Xây dựng hệ thống dịch vụ giá trị gia tăng trên nền dịch vụ nhắn tin tức thì qua hệ thống tin nhắn tức thì (Trang 50 - 53)

Ở chương trình chính sẽ sử dụng biến xmpp là một thể hiện của XMPP, khai báo các tham số cho dùng để đăng nhập. Sau đó gọi hàm

RegisterHandler("message",controller)

Hàm này là một hàm đặc biệt của xmpp. Hàm này dùng để đăng ký hàm xử lý sự kiện khi nhận thông điệp. Ở trên là đăng ký cho hàm controller để xử lý sự kiện nhận thông

Hàm controller có cấu trúc như sau:

def controller (self,conn,mess):

Biến conn là Client, dùng để gửi thông điệp conn.send().

Biến mess là thông điệp nhận được. Dùng hàm sau để lấy ra người gửi thông điệp:

text = message.getBody() user = message.getFrom()

Hàm controller sẽ xử lý các text nhận được từ người dùng, phân tích chuỗi nhập text mà người dùng gửi đến để tìm ra dịch vụ thích hợp.

Ví dụ

/news vnexpress

Dịch vụ cần gọi là news. Khi gọi dịch vụ cần cung cấp một tham số là vnexpress.

Cũng giống như cấu trúc module Yahoo bot . Dịch vụ được viết sao cho đảm bảo tính đơn giản. Trong dịch vụ phải thực thi giao diện IMCMD, nói cách khác thì phải có hai hàm đặc biệt là hàm doit auto_run. Hàm doit nhận hai tham số chính là chuỗi tham số và nick Google Talk gửi.

def doit (args, sender):

args: chuỗi tham số do người dùng đưa vào

sender: nick Google Talk của người dùng

Hàm doit trả về một chuỗi. Controller sẽ nhận chuỗi đó sau đó gửi cho người dùng thông qua biến XMPP. Bản thân Controller không phải là một tiến trình, hoặc một thread (luồng) đặc biệt, đơn giản chỉ là một hàm bắt sự kiện nhận gói tin mesage.

Hàm doit từ dữ liệu đầu vào của người dùng, tùy mỗi loại mà có những cách xử lý khác nhau. Có thể sẽ kết nối CSDL hoặc parse các RSS trên Internet để lấy về nội dung cần trả.

Hàm auto_run là hàm được gọi từ tiến trình Autorun. Tiến trình Autorun sẽ được kích hoạt trong chương trình chính. Khi khởi động, tiến trình Autorun sẽ đọc file config.txt. Trong file config.txt này sẽ liệt kê các dịch vụ muốn thực hiện chế độ chạy tự động. Tiến trình Autorun sẽ lần lượt gọi các dịch vụ này thông qua hàm auto_run(im). (là một hàm trong giao diện IMCMD), với im là một thể hiện (instance) của XMPP. Hàm

auto_run của dịch vụ sẽ tự xử lý dữ liệu (bằng nhiều cách) sau đó gửi tin nhắn thông qua biến im.

Đa phần các dịch vụ cung cấp chế độ chạy tự động (auto_run) đều không tự động xử lý dữ liệu. Bởi vì nếu tự xử lý dữ liệu thì sẽ rất tốn tài nguyên. Vì vậy, việc xử lý và lưu trữ dữ liệu đều được thực hiện ở hệ thống bên ngoài (có thể làm một nhà cung cấp dịch vụ nào đó hoặc tự xây dựng các hàm cung cấp dịch vụ).

CHƯƠNG 4. GIAO DIỆN WEB

Một phần của tài liệu Xây dựng hệ thống dịch vụ giá trị gia tăng trên nền dịch vụ nhắn tin tức thì qua hệ thống tin nhắn tức thì (Trang 50 - 53)