Ở 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
~ 38 ~
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 điệp.
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ệpconn.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 và 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
~ 39 ~
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
~ 40 ~
CHƯƠNG 4. GIAO DIỆN WEB