Tải bản đầy đủ (.pdf) (91 trang)

LUẬN VĂN: 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Ì docx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.5 MB, 91 trang )




ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

Trương Lê Thành

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Ì

KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY
Ngành: Công Nghệ Thông Tin
Cán bộ hướng dẫn: ThS Đào Minh Thư





HÀ NỘI - 2009



LỜI CẢM ƠN
Lời đầu tiên, chúng tôi xin chân thành cảm ơn quý thầy cô giáo khoa Công nghệ thông
tin đã dạy dỗ chúng tôi suốt bốn năm học vừa qua và tạo điều kiện cho phép chúng tôi
được thực hiện khoá luận tốt nghiệp này.
Đặc biệt, chúng tôi xin được bày tỏ lòng kính trọng và biết ơn sâu sắc tới cô giáo
hướng dẫn: ThS Đào Minh Thư và thầy giáo ThS Hồ Đắc Phương đã tận tình hướng
dẫn và giúp đỡ chúng tôi trong quá trình hoàn thành công trình này.


Xin chân thành cảm ơn tới công ty ViettelMedia đã giúp đỡ chúng tôi hoàn thành tốt
khóa luận.
Xin cảm ơn gia đình và bạn bè đã giúp đỡ, động viên tôi trong thời gian thực hiện đề
tài.
Cảm ơn bạn Nguyễn Thị Thu Thảo đã cùng tôi hoàn thành khóa luận này.
Với trình độ và kiến văn còn hạn chế của người viết, khoá luận chắc chắn không tránh
khỏi khiếm khuyết. Chúng tôi hy vọng sẽ nhận được những ý kiến nhận xét, góp ý của
các nhà khoa học, các thầy cô giáo và bạn bè về những vấn đề được triển khai trong
khoá luận. Xin trân trọng cảm ơn!

Hà Nội, tháng 5 năm 2009
Sinh viên
Trương Lê Thành



TÓM TẮT NỘI DUNG
Khóa luận của chúng tôi trình bày tổng quan về một chương trình mà chúng tôi gọi là
TCat. Đây là một chương trình có thể gửi tin nhắn cho điện thoại di động cũng như
cho một số mạng nhắn tin tức thì (Yahoo, Google). Ngoài khả năng gửi tin nhắn,
TCat còn cho phép viết thêm một số dịch vụ khác cắm vào mà không cần thay đổi
toàn bộ code. Vì thế TCat có tính mở rộng cao. Các dịch vụ viết thêm vào có khả
năng tương tác trực tiếp với người sử dụng. Ngoài ra chúng tôi còn cung cấp thêm giao
diện Web giúp người sử dụng giao tiếp với hệ thống dễ dàng.
Do hạn chế về thời gian cho nên trong phạm vi khóa luận này chúng tôi chỉ xây dựng
các tính năng cơ bản và một số dịch vụ.





MỤC LỤC
LỜI MỞ ĐẦU 1
CHƯƠNG 1. ĐẶT VẤN ĐỀ 2
1.1. Cuộc sống hiện đại 2
1.1.1. Internet toàn cầu hóa 2
1.1.2. Sống gấp 3
1.2. Giải pháp 3
1.3. Nội dung của khóa luận 3
CHƯƠNG 2. TỔNG QUAN VỀ TCAT 6
2.1. Nhắn tin tức thì (IM) 7
2.2. WEB 8
2.3. SMS 10
2.4. Phân tích thiết kế 13
2.4.1 Biểu đồ ngữ cảnh 13
2.4.2. Cơ sở dữ liệu 13
CHƯƠNG 3. GIAO DIỆN IM 15
3.1. Tổng quan giao thức Yahoo Messenger (YMSG) 15
3.1.1. Sự khác nhau giữa các phiên bản 16
3.1.2. Cấu trúc một gói tin của YMSG 17
3.1.3. Dịch vụ 19



3.1.4. Status codes (mã trạng thái) 20
3.1.5. Session 21
3.2. Mô tả chi tiết giao thức YMSG 21
3.2.1. Verify 22
3.2.2. Xác thực (Authentication ) 23
3.2.3. Gửi /nhận tin nhắn 27
3.2.4. Gửi chú ý bắt đầu/dừng việc đánh máy 28

3.2.5. Logoff 29
3.2.7. Thêm bạn 30
3.2.8. Xóa nick trong danh sách bạn 31
3.3. Phân tích thiết kế module Yahoo bot 32
3.3.1. Ngôn ngữ 32
3.3.2. Cấu trúc của module 33
3.3.3. Tiến trình thực hiện 34
3.4. Tổng quan giao thức Google Talk 36
3.4.1. Các bước kết nối 37
3.4.2. Cấu trúc module 37
CHƯƠNG 4. GIAO DIỆN WEB 40
4.1. Tổng quan về Web 40
4.2. Ngôn ngữ 41
4.3. Thiết kết CSDL 41



4.4. Thiết kế module 44
CHƯƠNG 5. GIAO DIỆN SMS 50
5.1. Tổng quan về SMS 50
5.1.1. Định nghĩa SMS 50
5.1.2. Ưu điểm của SMS 51
5.2. Gửi tin SMS từ máy tính đến điện thoại di động 52
5.2.1. SMS Gateway kết nối trực tiếp tới SMSC 55
5.2.2. SMS Gateway kết nối SMSC thông qua GSM modem 57
5.3. Ngôn ngữ 58
5.4. Module SMS 59
5.4.1. Mô hình cấu trúc module 59
5.4.2. Tiến trình thực hiện 60
CHƯƠNG 6. CÁC DỊCH VỤ CUNG CẤP 62

6.1. Dịch vụ Chấp nhận/ Từ chối 62
6.1.1. Thiết kế CSDL 62
6.1.2. Hoạt động 63
6.2. Dịch vụ Người dùng tự định nghĩa 64
6.2.1. Thiết kế CSDL 65
6.2.2. Hoạt động 65
6.3. Dịch vụ Phiên dịch 67
6.4 Dịch vụ Thời tiết 68



6.5. Dịch vụ Nhắc việc 69
6.5.1. Tổng quan 69
6.5.2. Thiết kế CSDL 70
6.5.3 Hoạt động 73
CHƯƠNG 7. PHỤ LỤC 75
7.1. Cấu hình NowSMS kết nối trực tiếp tới SMSC của Viettel 76
7.2. Tạo kết nối Giữa NowSMS với GSM Modem 79
TÀI LIỆU THAM KHẢO 80



THUẬT NGỮ VIẾT TẮT
CSDL Cơ Sở Dữ Liệu Cơ sở dữ liệu
GSM
Global System for Mobile
communications
Hệ thống toàn cầu cho
truyền thông di động
HTTP Hypertext Transfer Protocol

Giao thức truyền siêu văn
bản
HTTPS Hypertext Transfer Protocol Secure

HTTP an toàn
IM Instant Messaging Tin nhắn tức thì
SMPP
Short Message Peer-to-peer
Protocol
Giao thức tin nhắn ngắn
ngang hàng
SMS Short Message Service Dịch vụ tin nhắn ngắn
SMSC Short Message Service Center Trung tâm tin nhắn
TCP/IP
Transmission Control Protocol /
Internet Protocol
Giao thức truyền tin tin cậy
trên nền Internet



DANH SÁCH HÌNH VẼ
Hình 2. 1: Mô hình tổng quan 11
Hình 2. 2 Biểu đồ ngữ cảnh hệ thống 1
Hình 2. 3 CSDL của TCat 14

Hình 3. 1: Ảnh chụp màn hình chương trình Wireshark 16
Hình 3. 2: Cấu trúc gói tin YMSG phiên bản 12 16
Hình 3. 3: Cấu trúc gói tin YMSG phiên bản 9 17
Hình 3. 4: Cấu trúc gói tin YMSG phiên bản 15 1

Hình 3. 5: Cấu trúc trường Data 1
Hình 3. 6: Giao thức YMSG 22
Hình 3. 7: Cấu trúc gói tin Verify 1
Hình 3. 8: Gói tin Verify hồi đáp từ Server 1
Hình 3. 10: Ảnh chụp gói tin Authentication 24
Hình 3. 9: Gói tin Authentication 1
Hình 3. 12: Ảnh chụp gói tin Authentication ACK 25
Hình 3. 11: Gói tin trả lời Authenticaion ACK 1
Hình 3. 14: Ảnh chụp gói tin Authentication Response 26
Hình 3. 13: Gói tin Authentication Response 1
Hình 3. 15: Gói tin Message 1
Hình 3. 16: Ảnh chụp gói tin Message 28
Hình 3. 17: Cấu trúc gói tin Notify 1
Hình 3. 18: Ảnh chụp gói tin Notify 1
Hình 3. 20: Ảnh chụp gói tin Logoff 30
Hình 3. 19: Gói tin Logoff 1
Hình 3. 21: Cấu trúc gói tin Add Buddy 1



Hình 3. 22: Ảnh chụp gói tin Add Buddy 31
Hình 3. 23: Cấu túc gói tin Remove Buddy 1
Hình 3. 24: Ảnh chụp gói tin Remove Buddy 32
Hình 3. 25: Cấu trúc module Yahoo Bot 1
Hình 3. 26 Cấu trúc module Gtalk bot 36

Hình 4. 1 Mối liên hệ giữa các bảng trong CSDL 43
Hình 4. 2 Sơ đồ cấu trúc module WEB 1

Hình 5. 1 SMS Gateway kết nối trực tiếp với SMSC 1

Hình 5. 2 Mô hình gửi tin SMS với SMS Gateway kết nối với SMSC thông qua GSM
Modem 1
Hình 5. 3 Kết nối của Module SMS với SMS Gateway 59

Hình 6. 1: Mối quan hệ Friend - User 63
Hình 6. 2: Mối quan hệ User và Udef 65
Hình 6. 3: Mối quan hệ CSDL trong dịch vụ nhắc việc theo thời gian 71
Hình 6. 4: Mối quan hệ CSDL trong dịch vụ nhắc việc theo sự thay đổi của trang web
72

Hình 7. 1 Giao diện của NowSMS 75
Hình 7. 2 Lựa chọn kết nối tới SMSC 76
Hình 7. 3 Cấu hình kết nối 77
Hình 7. 4 Chạy dịch vụ 78
Hình 7. 5 Kết nối tới modem 79
Hình 7. 6 Lựa chọn thiết bị GSM để kết nối 79

~ 1 ~

LỜI MỞ ĐẦU

Internet đang ngày càng phát triển nhằm đáp ứng nhu cầu của con người. Nhờ sự tiến
bộ của khoa học nói chung và công nghệ thông tin nói riêng, diện mạo của Internet
đang ngày càng rõ rệt và "có hình hài". Internet là kết quả tất yếu của nhu cầu cần
được đáp ứng của con người, đó là tập hợp các nhu cầu cực kỳ phong phú và đa dạng
của mọi người khắp nơi trên thế giới. Điều đó tạo nên sự phức tạp, sức hấp dẫn và
cuốn hút của Internet.
Ngày nay, Internet được sử dụng rộng rãi trên toàn thế giới. Những ứng dụng trên
Internet đã có bước phát triển bùng nổ, với nhiều loại hình dịch vụ mới như thương
mại điện tử, giải trí trực tuyến, đào tạo trực tuyến,…Sự ra đời của các dịch vụ trên

Internet đã giúp ích rất nhiều cho cuộc sống của mọi người thuận tiện, thoải mái, tốt
đẹp hơn.
Vì những lý do trên chúng tôi đã nảy ra ý định xây dựng lên chương trình có thể nhắn
tin tự động, trả lời tự động đến nick Yahoo, GoogleTalk hay số điện thoại của người
sử dụng với những nội dung đã được đăng ký với chúng tôi như giá chứng khoán, giá
ngoại tệ, thời tiết,…
Chương trình của chúng tôi xây dựng được gọi là TCat.
TCat có tính ứng dụng thực tiễn cao. Chúng tôi đã đưa vào thực tiễn một số dịch vụ
của TCat như dịch vụ Phiên dịch, Nhắc việc. Dịch vụ Phiên dịch là dịch vụ giúp
người sử dụng dịch một đoạn văn bản, một từ hoặc thậm chí cả một tài liệu. Dịch vụ
này của chúng tôi sử dụng lại dịch vụ miễn phí của Google là Google Translate. Dịch
vụ Nhắc việc là dịch vụ dịch vụ cho phép người sử dụng có thể đăng ký nhận tin nhắn
tự động (nhắc việc) tới chính nick Yahoo, GoogleTalk hoặc số điện thoại của mình
vào một thời điểm nào đó, hoặc khi một trang Web có sự thay đổi,…

~ 2 ~

CHƯƠNG 1. ĐẶT VẤN ĐỀ
1.1. Cuộc sống hiện đại
1.1.1. Internet toàn cầu hóa
Toàn cầu hóa (Globalization) là “một xu hướng làm các mối quan hệ trở nên ít bị ràng
buộc bởi địa lý lãnh thổ”, là khái niệm dùng để miêu tả các thay đổi trong xã hội và
trong nền kinh tế thế giới, tạo ra bởi mối liên kết và trao đổi ngày càng tăng giữa các
quốc gia, các tổ chức hay các cá nhân ở góc độ văn hoá, kinh tế, v.v. trên quy mô toàn
cầu. Về bản chất thì toàn cầu hóa là sự mở rộng thị trường ra ngoài biên giới quốc gia.
Internet đang ngày càng phát triển nhằm đáp ứng nhu cầu của con người. Nhờ sự tiến
bộ của khoa học nói chung và công nghệ thông tin nói riêng, diện mạo của Internet
đang ngày càng rõ rệt và "có hình hài". Internet là kết quả tất yếu của nhu cầu cần
được đáp ứng của con người, đó là tập hợp các nhu cầu cực kỳ phong phú và đa dạng
của mọi người khắp nơi trên thế giới. Điều đó tạo nên sự phức tạp, sức hấp dẫn và

cuốn hút của Internet.
Internet được sử dụng ngày càng rộng rãi. Và giờ đây Internet đã trở thành mạng toàn
cầu.
Và tại Việt Nam, việc sử dụng Internet ngày phổ biến. Điều này thể hiện rõ ở số lượng
người dùng gia tăng nhanh chóng, số lượng dịch vụ Internet ngày càng nhiều và thời
gian truy cập Internet trong mỗi ngày cũng dài thêm. Theo kết quả khảo sát gần đây
của công ty nghiên cứu thị trường TNS Public & Social Research Việt Nam tiến hành
ở bốn thành phố lớn của Việt Nam gồm Thành phố Hồ Chí Minh, Hà Nội, Đà Nẵng và
Cần Thơ với 1,200 người tham gia trả lời ý kiến, thì hiện nay người sử dụng Internet ở
Việt Nam đang ngày càng dành nhiều thời gian trên mạng hơn, với thời lượng trung
bình mỗi ngày là 43 phút trong năm 2008, thời lượng này gần gấp đôi so với hồi năm
2006.
[1]
Theo đó, có đến 72% số người trong độ tuổi 18 - 30 sử dụng Internet thường xuyên để
tán gẫu (chat); và 81% số người trong độ tuổi 41-50 thường xuyên đọc tin tức trên
Internet.


~ 3 ~

1.1.2. Sống gấp
Ngày nay, mọi người ai cũng bận rộn với công việc hàng ngày, với cuộc sống gia đình,
với những quan hệ xã hội. Cuộc sống có quá nhiều điều khiến con người phải lo toan,
phiền muộn. Bản thân mỗi con người bị cuốn vào vòng xoay của công việc, học tập và
những toan tính hàng ngày. Cuộc sống thật bộn bề những lo toan, suy nghĩ.
Đôi khi mọi người cảm thấy mệt mỏi khi phải suy nghĩ quá nhiều thứ trong đầu và để
sắp xếp mọi thứ cho tốt đẹp.
Và thời gian rảnh trong cuộc sống giúp cho con người thư thái, giải trí cũng ít đi.

1.2. Giải pháp

Hiện nay, có những người truy cập hàng giờ trên Internet chỉ để xem giá chứng khoán
thay đổi, xem bài viết của mình trên diễn đàn đã được trả lời chưa, xem đã có thông tin
mới thật lãng phí thời gian. Hay việc không để ý đến thời tiết hàng ngày làm ai đó bị
sốt, bị ốm, làm hại cho sức khỏe. Hay một việc gì đó quan trọng bị lãng quên,… làm
ảnh hưởng không tốt đến công việc cuộc sống của mọi người.
Từ những lý do trên chúng tôi đã nảy ra ý định xây dựng lên chương trình có thể nhắn
tin tự động, trả lời tự động đến nick Yahoo, GoogleTalk hay số điện thoại của người
sử dụng với những nội dung đã được đăng ký với chúng tôi như giá chứng khoán, giá
ngoại tệ, thời tiết,…sẽ giúp ích một phần cho cuộc sống.
Chương trình của chúng tôi xây dựng được gọi là TCat.
TCat là một chương trình mở, không chỉ có các dịch vụ đã cung cấp mà còn cho phép
người sử dụng thêm các dịch vụ vào.

1.3. Nội dung của khóa luận
Khóa luận của chúng tôi gồm có bảy chương cụ thể sau:
Chương 1. Đặt vấn đề và cách giải quyết
Chương này nhằm nói tới nguyên nhân khách quan, mục đích khi xây dựng TCat,
tính ứng dụng thực tiễn, những lợi ích của TCat và những nội dung chính của khóa
luận.

~ 4 ~

Chương 2. Tổng quan về TCat, các giao diện của TCat và thiết kế cơ sở dữ liệu của
TCat
Nội dung chủ yếu của chương này là nói về tổng quan TCat. TCat gồm có ba module
chính đó là IM, Web và SMS với một số dịch vụ như Phiên dịch, Nhắc việc,…Module
IM là module giúp người sử dụng giao tiếp với hệ thống thông qua các dịch vụ tin
nhắn tức thì miễn phí. Người sử dụng chỉ cần đăng ký một nick chat miễn phí từ nhà
cung cấp dịch vụ chat, sau đó dùng nick chat của mình (có thể là nick Yahoo,
GoogleTalk, Skype ) yêu cầu một dịch vụ từ TCat. Module Web đảm nhận công

việc là giao diện giao tiếp với người sử dụng, đọc cơ sở dữ liệu nếu như các module
hay dịch vụ khác yêu cầu và trả về kết quả. Module SMS là module gửi tin nhắn từ
máy tính tới số điện thoại của người sử dụng mà đã đăng ký với TCat.
Chương 3. Giao thức Yahoo Messenger với module Yahoo Bot và Giao thức Google
Talk với module Gtalk Bot
Trong chương này gồm có hai phần:
Phân tích, mô tả giao thức của Yahoo Messenger, phân tích thiết kế và xây dựng
module Yahoo Bot.
Tổng quan về giao thức của Google Talk, phân tích thiết kế và xây dựng module Gtalk
Bot.
Chương 4. Tổng quan giao diện Web của TCat
Nội dung của chương viết về tổng quan, phân tích thiết kế giao diện Web. Web là
module cung cấp cho người dùng những tính năng nâng cao, giúp TCat quản lý người
dùng một cách dễ dàng hơn.
Chương 5. Module SMS với các mô hình kết nối để gửi tin nhắn từ máy tính tới điện
thoại di động
Chương này với nội dung trình bày về các cách kết nối để có thể gửi tin nhắn từ máy
tính tới điện thoại di động và phân tích thiết kế, cấu trúc module SMS.
Có hai cách kết nối được đề cập trong chương này:
Cách thứ nhất là kết nối trực tiếp SMS Gateway tới SMSC của nhà cung cấp dịch vụ
Viettel.

~ 5 ~

Cách thứ hai là kết nối tới SMS Gateway với GSM Modem và sau đó GSM Modem sẽ
giao tiếp với SMSC trên mạng di động.
Chương 6. Phân tích, thiết kế các dịch vụ đã cung cấp của TCat
Trong chương này chúng tôi trình bày một số dịch vụ đã cung cấp của TCat.
Các dịch vụ của chúng tôi gồm có: Phiên dịch, Chấp nhận/từ chối, Nhắc việc, Thời tiết
và dịch vụ người dùng tự định nghĩa.

Trong đó dịch vụ Phiên dịch là dịch vụ khi người dùng gõ lệnh theo cú pháp mặc định.
TCat sẽ trả về cho người dùng nghĩa của từ mà người dùng muốn tra.
Dịch vụ Chấp nhận/Từ chối được kích hoạt khi một người sử dụng thêm một ai đó vào
danh sách bạn bè (Friend). Dịch vụ này có ý nghĩa đơn giản là khi một người nhận
được những tin nhắn của một người sử dụng TCat của chúng tôi để gửi tin thì người
nhận đó có thể chấp nhận hoặc là từ chối nhận các tin nhắn sau.
Dịch vụ Thời tiết cũng giống như dịch vụ Phiên dịch. Khi muốn biết thời tiết của một
vùng nào đó trong nước Việt Nam thì người sử dụng sẽ gõ một câu lệnh theo cú pháp
mặc định sau đó dịch vụ sẽ gửi lại thông tin thời tiết về vùng nhận được.
Dịch vụ người dùng tự định nghĩa là dịch vụ cho phép một người sử dụng dễ dàng
thêm các dịch vụ vào TCat.
Chương 7. Phụ lục kèm theo
Chương này với nội dung về cách cấu hình SMS Gateway theo hai cách kết nối được
trình bày ở chương 5.


Trong khóa luận này tôi đã phân tích và xây dựng module IM, phân tích thiết kế
module Web, xây dựng các dịch vụ: Phiên dịch, Người dùng tự định nghĩa, Chấp nhận
từ chối, Nhắc việc khi có trang web thay đổi.
Còn bạn Thảo đã phân tích xây dựng module SMS, xây dựng module Web, xây dựng
các dịch vụ: Nhắc việc theo thời gian, thời tiết.

~ 6 ~

CHƯƠNG 2. TỔNG QUAN VỀ TCAT

TCat là sự kết hợp của các module IM, SMS, WEB. Mỗi module đảm nhiệm một
chức vụ khác nhau trong toàn bộ hệ thống. TCat cung cấp cho người dùng các dịch
vụ dựa trên việc nhắn tin qua nick Yahoo, GoogleTalk hoặc Mobile.
Các module ghép lại đảm nhiệm vị trí khung chương trình (framework). Bộ khung

chương trình này chịu trách nhiệm gửi và nhận tin nhắn qua Yahoo, GoogleTalk hoặc
Mobile. TCat được thiết kế là chương trình mở. Điều này có nghĩa là TCat được
thiết kế sao cho việc thêm các dịch vụ là hoàn toàn đơn giản. Vì có khung chương
trình rồi lập trình viên hoặc bất kì một người sử dụng nào cũng có thể thêm vào các
dịch vụ khác. Đối với những dịch vụ phức tạp thì ngưởi sử dụng cần nghiên cứu các
hàm, giao diện do khung chương trình cung cấp.
Chúng tôi đưa vào hai loại dịch vụ.
Loại dịch vụ thứ nhất: dịch vụ gửi tin nhắn thụ động. Điều này có nghĩa là dịch vụ chỉ
được kích hoạt khi nào có yêu cầu. Ví dụ như các dịch vụ Phiên dịch, Nhắc việc. Dịch
vụ Phiên dịch là dịch vụ giúp người sử dụng dịch một đoạn văn bản, một từ hoặc thậm
chí cả một tài liệu. Dịch vụ này của chúng tôi sử dụng lại dịch vụ miễn phí của Google
là Google Translate. Dịch vụ Nhắc việc là dịch vụ dịch vụ cho phép người sử dụng có
thể đăng ký nhận tin nhắn tự động (nhắc việc) tới chính nick Yahoo, GoogleTalk hoặc
số điện thoại của mình vào một thời điểm nào đó, hoặc khi một trang Web có sự thay
đổi,…Mỗi khi yêu cầu dịch vụ, người sử dụng chỉ cần viết lệnh và gửi cho một nick
Yahoo hoặc Google Talk tự động của chúng tôi . Khi khung chương trình nhận được
thông điệp sau đó sẽ gọi dịch vụ tương ứng, phân tích các tham số truyền vào, sau đó
lấy kết quả trả về cho người sử dụng.
Loại dịch vụ thứ hai: dịch vụ gửi tin nhắn chủ động (hay còn gọi là dịch vụ tự động).
Dịch vụ được kích hoạt khi có một sự kiện nào đó xảy ra. Sự kiện này được người
dùng đăng ký trước, có thể là gửi một nội dung tin nhắn vào một thời điểm nào đó,
thông báo sự thay đổi của một trang web (giá vàng, chứng khoán thay đổi, có bài trả
lời trong diễn đàn). Tất nhiên để chống lại tình trạng spam tin nhắn, người sử dụng
phải xác nhận mình cho phép TCat gửi tin nhắn cho mình. Thực chất của dịch vụ này

~ 7 ~

là một tiến trình tự động chạy. Cứ mỗi có sự kiện xảy ra tiến trình sẽ lấy các nick cần
liên lạc thông qua truy vấn vào cơ sở dữ liệu, sau đó gửi thông điệp cho họ.
Đối với việc thêm dịch vụ của bên thứ ba. Chúng tôi đưa ra hai phương án giải quyết.

Thứ nhất: dịch vụ bên thứ ba cung cấp khá phức tạp và có liên quan một phần đến hệ
thống. Với loại dịch vụ như thế này thì chỉ có cách duy nhất cần những người biết về
chuyên môn (ví dụ như lập trình viên) viết các dịch vụ tương ứng rồi đưa vào hệ
thống.
Thứ hai: đối với các dịch vụ đơn giản và không liên quan đến TCat. Bên thứ ba có thể
sử dụng một dịch vụ gọi là “Dịch vụ người dùng tự định nghĩa”. Dịch vụ này mỗi lần
có yêu cầu sẽ kết nối đến một liên kết, lấy các thông tin cần thiết về, sau đó đưa trả lại
cho người sử dụng. Các thông tin trả về phải được đưa theo một chuẩn đã thống nhất
trước.
Người sử dụng cũng như bên thứ ba cần phải đăng ký một tài khoản để sử dụng hoặc
tạo ra các dịch vụ.
Ngoài việc cung cấp khung chương trình của TCat, chúng tôi còn cung cấp thêm một
số dịch vụ kèm theo, chi tiết các dịch vụ được mô tả ở chương 6.
Trong luận văn này, chúng tôi đưa vào thuật ngữ bot với ý nghĩa là một chương trình
máy tính, thực hiện một số nhiệm vụ tự động. Thuật ngữ WEB để chỉ một trong những
module của chúng tôi (khác với web).

2.1. Nhắn tin tức thì (IM)
Module này giúp người sử dụng giao tiếp với TCat thông qua các dịch vụ IM miễn
phí. Người sử dụng chỉ cần đăng ký một nick chat miễn phí từ nhà cung cấp dịch vụ
chat, sau đó dùng nick chat của mình (có thể là nick Yahoo, GoogleTalk, Skype ) yêu
cầu một dịch vụ từ TCat. Quá trình này có thể tưởng tượng như sau:
Người sử dụng dùng nick chat của mình chat với nick Yahoo hoặc nick Google Talk
trả lời tự động của chúng tôi (các nick trả lời tự động thực ra là một chương trình
chúng tôi tạm gọi là con bot) yêu cầu nhắc việc, tra từ điển, xem tỷ giá chứng khoán,
xem tin tức, xem dự báo thời tiết, gửi tin cho điện thoại di động, thu thập ý kiến …
Con bot sẽ đưa ra các hồi đáp ứng với yêu cầu của người sử dụng.

~ 8 ~


Nhìn chung về phía IM thì người sử dụng giao tiếp khá hạn chế với con bot. Người sử
dụng chỉ có thể yêu cầu dịch vụ bằng cách gửi tin đến con bot theo một cú pháp nhất
định nào đó (Chẳng hạn muốn xem dự báo thời tiết thì gõ /weather HANOI ). Vì thế
một số tính năng nâng cao sẽ rất khó sử dụng hoặc không được cài đặt vì khá phức tạp.
Ví dụ với dịch vụ nhắc việc cho một danh sách dài. Nhắc việc vào lúc 8h của thứ sáu
hàng tuần. Nội dung của nhắc việc là tin dự báo thời tiết. Với một yêu cầu khá phức
tạp như vậy thì cấu trúc lệnh sẽ rất phức tạp, người sử dụng sẽ rất lúng túng khi sử
dụng dịch vụ vì không thể nhớ hết cấu trúc lệnh.
Ngoài ra, chúng tôi còn cung cấp các dịch vụ do người dùng tự định nghĩa. Tất nhiên,
để sử dụng dịch vụ này, người sử dụng phải tuân thủ một số chuẩn do chúng tôi đề ra.
Và sẽ khá phức tạp cho người sử dụng nếu chỉ có duy nhất một cổng giao tiếp qua IM.
Người sử dụng cấu hình dịch vụ của họ rất khó khăn qua dòng lệnh (không có giao
diện đồ họa), tính bảo mật của phương thức này cũng không cao.
Để đảm bảo công việc không bị tắc nghẽn, và tiện cho quá trình mở rộng sau này.
Chúng tôi thiết kế sao cho module IM có thể có nhiều thể hiện (instance). Nói một
cách khác, nếu coi module IM như một chương trình thì có thể chạy nhiều chương
trình như thế. Trong tương lai, để phục vụ nhiều người thì một nick (Yahoo, Gtalk) là
không đủ cần phải mở rộng ra nhiều nick. Có thể thuê những máy khách hàng nếu máy
chủ không đủ tài nguyên để chạy các ứng dụng IM (có băng thông mạng cao, máy cấu
hình mạnh). Khách hàng khi chạy ứng dụng IM cần có Username và Password, mỗi
lần chạy sẽ được tính thời gian online sau đó qui đổi ra tiền (hoặc cái gì đó có giá trị)
để tặng lại khách hàng.

2.2. WEB
Như đã nói ở phần trên, người sử dụng có thể tự mình cài đặt dịch vụ và sử dụng các
chức năng nâng cao của TCat. Nhưng việc sử dụng được chức năng nâng cao thông
qua IM sẽ rất khó khăn. Vì thế, chúng tôi đưa thêm vào module WEB. Thông qua giao
diện WEB thì chúng tôi sẽ quản lý người sử dụng dễ dàng hơn (tiện cho việc thương
mại hóa).
Người sử dụng khi muốn sử dụng các dịch vụ nâng cao trên WEB phải đăng ký cho

mình một tài khoản, việc này giúp quản lý công việc dễ dàng hơn. Ngoài ra việc đăng
ký tài khoản cũng giúp cho việc thương mại hóa TCat sau này thuận tiện hơn.

~ 9 ~

Giao diện WEB hỗ trợ một số tính năng nâng cao cho người dùng. Người dùng có thể
tự mình thêm vào một dịch vụ thông qua hai bước là: đăng ký từ khóa và cài đặt dịch
vụ. Một từ khóa cho phép chỉ đến một dịch vụ. Sau khi có từ khóa, người dùng muốn
cài đặt dịch vụ phải cấu hình các tham số cho phù hợp (thông điệp trả về, các args).
WEB dễ dàng sử dụng các dịch vụ nâng cao ví dụ như dịch vụ Nhắc việc, nếu muốn
nhắc việc theo chu kỳ, hoặc khi một sự kiện nào đó xảy ra. Việc cấu hình cho dịch vụ
trên thông qua IM sẽ phức tạp. Tuy nhiên nếu thông qua giao diện WEB thì mọi việc
rất dễ dàng.
Ngoài việc giúp quản lý người sử dụng dễ dàng và giúp người sử dụng quản lý công
việc dễ dàng hơn, module WEB còn kết nối trực tiếp đến CSDL, thực hiện các công
việc giúp giảm tải cho các module khác.
Lấy ví dụ về dịch vụ nhắc việc.
Với module IM, ý tưởng đơn giản ban đầu là module IM sẽ trực tiếp kết nối đến
CSDL, và cứ mỗi X phút (X là một số nào đó, có thể 1,2,3 ) sau đó lấy danh sách các
nick cần nhắc việc. Sẽ rất trôi chảy nếu chỉ có vài chục đến vài trăm nick. Nhưng sẽ là
thảm họa nếu có tới vài trăm đến vài nghìn nick. Thảm họa ở chỗ Yahoo sẽ khóa
(block) nick nếu trong thời gian 1-3 giây nick đó gửi đi quá nhiều tin nhắn (Không cần
biết gửi đến nhiều nick hay không, chỉ cần biết là gửi nhiều tin nhắn. Yahoo làm việc
này để ngăn chặn việc spim tin nhắn).
Ý tưởng cải tiến trong trường hợp này là sẽ đưa vào nhiều con bot làm nhiệm vụ nhắn
tin. Con bot có thể hiểu là các thể hiện (instance) của module IM. Tuy nhiên cùng với
ý tưởng trên, một bài toán khó đặt ra là vấn đề đồng bộ giữa các con bot. Làm sao cho
các con bot không lấy dữ liệu trùng nhau, phân chia công việc, giảm tải một cách có
hiệu quả nhất. Đây là một bài toán khó, liên quan đến CSDL phân tán. Tuy nhiên nếu
tư duy theo một cách khác thì sẽ tránh được bài toán khó này mà vẫn đạt được mục

tiêu như ban đầu.
Ý tưởng của chúng tôi rất đơn giản. Chúng tôi sẽ giảm tải cho module IM. Đưa vào
module WEB ở giữa module IM và CSDL. Nói cách khác, Module IM bây giờ không
thao tác trực tiếp với CSDL nữa. Mọi thao tác đều thông qua WEB. Như vậy module
IM không mất tài nguyên kết nối CSDL, cũng không cần giải quyết bài toán khó về
việc đồng bộ hóa giữa các con bot. Con bot chỉ cần yêu cầu kết nối đến WEB, WEB sẽ
xử lý hết tất cả các công việc phức tạp, sau đó đưa lại cho con bot một danh sách các

~ 10 ~

nick Yahoo cần nhắc việc. Việc xử lý đồng bộ bây giờ đưa về việc xử lý tuần tự ở
WEB. Ở phía WEB việc xử lý rất đơn giản. WEB chỉ cần thống kê số lượng các con
bot online trên mạng, sau đó chia đều công việc cho chúng. Nếu số lượng nick cần
nhắc việc quá nhiều so với số lượng đáp ứng được của mỗi con bot thì WEB chỉ trả lại
số lượng nick nhắc việc mà mỗi con bot có thể làm được.
Để bảo mật thì mỗi con bot có một chuỗi khóa bí mật. Khi lấy thông tin từ WEB thì
con bot phải cung cấp chuỗi khóa đó cho WEB kiểm tra. Mọi kết nối đến WEB đều
dựa trên giao thức HTTPS.
2.3. SMS
Không phải lúc nào mọi người cũng có thể online. Tuy nhiên nhu cầu kết nối là điều
không thể thiếu. Module SMS được đưa vào để hoàn thiện thêm cho TCat. Sử dụng
dịch vụ SMS có thể gửi tin nhắn cho số điện thoại nào đó, nạp tiền vào tài khoản (nếu
thương mại hóa).
Ví dụ sử dụng dịch vụ Nhắc việc trong việc coi thi: văn phòng khoa của nhà trường
muốn nhắc nhở các các thầy cô giáo là đúng 8h hôm nay bắt đầu coi thi học kỳ .Tất
nhiên văn phòng khoa có thể gọi điện hoặc nhắn tin đến từng thầy cô một. Tuy nhiên
sẽ là lãng phí cả về tài chính, thời gian và công sức nếu có quá nhiều. Văn phòng khoa
có thể sử dụng dịch vụ Nhắc việc thông qua giao diện WEB. Chỉ cần upload lên danh
sách các thầy cô và số điện thoại tương ứng. Sau đó là việc chọn thời gian và thông
điệp và các tin nhắn sẽ được gửi đến các số điện thoại ở trên. Vậy là mọi việc đã xong.

Thông qua dịch vụ này người sử dụng không cần phải nhớ quá nhiều lịch làm việc và
an tâm rằng mình sẽ không quên một việc gì đó.


~ 11 ~




Hình 2. 1: Mô hình tổng quan
WEB
CSDL

WService


WService


WAService




Giao
Diện
I

PyService


PyService


PyService

PyService
YahooBot
GTalkBot
SMSBot

Internet
WService

CSDL
CSDL
CSDL

~ 12 ~

Trên Hình 2. 1: Mô hình tổng quan là hình vẽ khái quát về mô hình tổng quan của
TCat. TCat gồm ba Module chính là WEB, IM, SMS.
Moudle IM gồm hai module con là Yahoo Bot và Gtalk Bot. Cả hai đều có thể có
nhiều thể hiện (instance). Module SMS cũng như vậy. Cả hai module đều kết nối với
các dịch vụ PyService thông qua giao diện I. Giao diện I giúp các module IM và
SMS kết nối với các dịch vụ dễ dàng hơn.
PyService là các dịch vụ được viết bằng Python. Các dịch vụ này được viết theo tiêu
chí càng đơn giản càng tốt, sẽ không tự xử lý dữ liệu mà chuyển sang một nơi nào đó
xử lý dữ liệu rồi nhận kết quả trả về. Trong các moudle IM, SMS có thể thấy còn có
thêm CSDL. Đây là những CSDL của riêng các module đó, các module này sử dụng
CSDL với mục đích tăng tốc, giảm chi phí về tài nguyên mạng.

Các module IM, SMS kết nối dịch vụ PyService thông qua giao diện I. Điều này có
nghĩa là các dịch vụ PyService chỉ cần viết một lần, sẽ chạy được trên cả hai moudle
IM và SMS. Muốn có được điều này thì khi viết code các dịch vụ PyService phải tuân
thủ một số chuẩn.
Các dịch vụ PyService sẽ không tự xử lý dữ liệu mà kết nối đến nơi khác để lấy kết
quả trả về. Nơi khác ở đây có thể là một nguồn từ Internet hoặc là nhưng dịch vụ do
WEB cung cấp (WService). Những dịch vụ mang tính đặc trưng (ví dụ như nhắc việc),
có liên quan đến CSDL của TCat thì PyService sẽ kết nối đến WService, còn những
dịch vụ chung chung (chẳng hạn như Thời tiết, Phiên dịch …) thì PyService sẽ kết nối
đến nguồn dữ liệu từ Internet.
Ở đây có một dịch vụ đặc biệt được cung cấp ở bên phía WEB, đó là dịch vụ cho phép
người sử dụng tự định nghĩa (WAService). Dịch vụ này cho phép người sử dụng có
thể tự mình thiết kế, tạo nên một dịch vụ. Để làm được điều này, người sử dụng cần
tuân thủ theo một số chuẩn đã đề ra trước. Thực chất của dịch vụ này rất đơn giản,
người sử dụng chỉ cần khai báo một liên kết (link) đến trang cung cấp thông tin và xử
lý dữ liệu của họ. Tiếp theo người sử dụng cần khai báo các tham số đầu vào cần thiết.
Khi một người dùng khác muốn sử dụng dịch vụ này, chỉ cần đánh đúng cú pháp thì
TCat sẽ tự động kết nối đến dịch vụ đó, lấy thông tin trả về, xuất thông tin đó ra theo
mẫu do người sử dụng thiết kế.

~ 13 ~

2.4. Phân tích thiết kế
2.4.1 Biểu đồ ngữ cảnh
Hình bên dưới là biểu đồ ngữ cảnh của TCat



Người sử dụng tương tác với TCat để sử dụng các dịch vụ. Dịch vụ đến người sử
dụng theo hai cách, chủ động và bị động.

Ở dạng chủ động, thông điệp được gửi đến người sử dụng mà người sử dụng không
cần có một tác động nào cả.
Ở dạng bị động, thông điệp đầu tiên từ người sử dụng gửi đến TCat là thông điệp yêu
cầu dịch vụ. TCat sẽ phân tích yêu cầu của người sử dụng, sau đó kiểm tra xem dịch
vụ này có cần phải liên kết đến nhà cung cấp dịch vụ để lấy kết quả không. Nếu cần thì
TCat mở một kết nối truy vấn đến nhà cung cấp dịch vụ để lấy kết quả trả về. Sau đó
TCat sẽ phân tích kết quả trả về, lấy các thông tin cần thiết sau đó trả lại cho người sử
dụng dưới dạng một hồi đáp.

2.4.2. Cơ sở dữ liệu
Cơ sở dữ liệu của TCat tập trung hầu hết ở phần WEB. Nói cách khác, chỉ có phần
WEB mới được quyền tương tác trực tiếp với CSDL, các module khác không được
phép tương tác trực tiếp với CSDL vì lý do bảo mật. CSDL sẽ được nói rõ ở phần
WEB. Ở chương hai này, chúng tôi chỉ giới thiệu tóm tắt.
Người
sử
dụng
Người
sử
dụng

TCat

Nhà
cung
cấp
dịch
vụ
Y/C dịch vụ
Hồi đáp

Thông điệp
Truy vấn
Kết quả
Hình 2.
2
Bi
ểu đồ ngữ cảnh hệ thống


~ 14 ~

CSDL được chia làm hai phần chính, phần khung chương trình và phần dịch vụ.

Hình 2. 3 CSDL của TCat
Phần khung chương trình sẽ bao gồm các bảng Friend, User, GroupACL, Service, Bot,
Group là phần lõi của chương trình. Các bảng này sẽ được xây dựng sẵn từ đầu. Mối
liên hệ giữa các bảng cũng như mô tả chi tiết sẽ được nói rõ ở phần chương bốn.
Các bảng còn lại thuộc phần dịch vụ. Các bảng thuộc phần dịch vụ được xây dựng
thêm sau này, tùy theo mỗi dịch vụ ta lại xây dựng các bảng cho phù hợp. Vì các bảng
thuộc phần dịch vụ được xây dựng sau nên chúng phải tương thích với các bảng thuộc
phần khung chương trình.

~ 15 ~

CHƯƠNG 3. GIAO DIỆN IM
3.1. Tổng quan giao thức Yahoo Messenger (YMSG)
Yahoo Messenger hiện nay là một chương trình chat khá phổ biến của người Việt Nam
cũng như trên thế giới. Theo thống kê thì có khoảng 248 triệu người đăng ký sử dụng
dịch vụ chat của Yahoo
[2]

. Ở Việt Nam thì Yahoo Messenger đã chiếm ưu thế hơn rất
nhiều so với các loại khác (Skype, GoogleTalk, AIM, Windows Live Messenger),
mặc dù trên thế giới thì tỷ lệ khá cân bằng.
Mô hình của giao thức Yahoo theo kiểu Client – Server. Theo đó Client là chương
trình Yahoo Messenger chat bình thường người sử dụng hay chạy trên máy tính.
Server là một số máy chủ của Yahoo. Khi đăng nhập Client gửi yêu cầu đến Server.
Server có quyền từ chối yêu cầu hoặc xác thực yêu cầu. Sau khi đã được Server chấp
nhận cho phép kết nối. Client sẽ lấy toàn bộ danh sách bạn bè, các tùy chọn cá nhân,
vv từ Server. Không có một kết nối trực tiếp nào được mở khi một Client muốn kết
nối để trò chuyện với một Client khác (hai người trên hai máy tính, chạy hai chương
trình Yahoo Messenger, chát với nhau) thì, mọi kết nối đề thông qua Server
[3]
. Server
sẽ đóng vài trò là người điều khiển cuộc trò chuyện này.
Giao thức của Yahoo Messenger là giao thức đóng. Chương trình chát Yahoo
Messenger là chương trình mã đóng (closed source) do vậy chúng tôi sẽ không nhận
được bất cứ sự hỗ trợ nào của Yahoo. Mọi thông tin chúng tôi có ở dưới đây đều dựa
theo tài liệu tìm kiếm được trên internet và dựa vào việc bắt các gói tin của chương
trình Yahoo Messenger. Việc bắt gói tin tôi sử dụng chương trình WireShak
[4]
. Ban
đầu tôi sử dụng chương trình WireShark phiên bản cũ (phiên bản 0.99.0) đã có hỗ trợ
giao thức YMSG nhưng chưa đầy đủ, việc bắt gói tin và lọc gói tin gặp khá nhiều khó
khăn. Tuy nhiên sang đến phiên bản mới (phiên bản hiện tại tôi đang sử dụng là phiên
bản 1.0.7) việc lọc gói tin đã đơn giản hơn khá rất nhiều.
Khi thực hiện việc lọc gói tin thì giao thức hiện tại của Yahoo là giao thức phiên bản
15 (phù hợp với Client là Yahoo Messenger phiên bản 8.13). Trên mạng có một số
miêu tả về giao thức Yahoo phiên bản 9, mới nhất là phiên bản 12. Nhìn chung hai
phiên bản có khá nhiều điểm khác biệt rõ rệt. Tuy nhiên vẫn có một số điểm chung (về
cấu trúc, một số mã dịch vụ vv ).

×