CHƯƠNG V. PHÂN TÍCH THIẾT KẾ CHƯƠNG TRÌNH ỨNG DỤNG

Một phần của tài liệu nghiên cứu giao thức smpp và phát triển các dịch vụ tin nhắn sms (Trang 72 - 81)

5.1.Giới thiệu:

Sau khi nghiên cứu hoạt động của giao thức SMPP(chương 3) và dựa trên mô tả của bài toán ứng dụng (chương 4), chúng ta sẽ đi xây dựng ứng dụng. Ứng dụng của chúng ta sẽ bao gồm hai phần:

Phần 1: Xây dựng phần mềm SMPPsim (Nguyễn Hữu Hoàng đảm nhận), phần mềm này làm các công việc sau:

-Tiếp nhận và gửi gói tin tại cổng giao tiếp SMPP(SMPP Gateway) từ/tới trung tâm dịch vụ tin ngắn (SMSC-Short Message Service Center)

-Chuyển đổi các gói tin giữa hai giao thức SMPP và TCP/IP.

Phần 2: Xây dựng phần mềm SMSapp(Nguyễn Trung Dũng đảm nhận), phần mềm này thực hiện các ứng dụng trên máy chủ ứng dụng(Application Server) bao gồm các công việc:

-Nhận gói tin yêu cầu từ cổng giao tiếp SMPP.

-Truy cập vào cơ sở dữ liệu lấy ra dữ liệu theo yêu cầu của gói tin sau đó đóng gói và gửi đến cổng giao tiếp SMPP

5.2. SMPPsim:

Một số quá trình cơ bản hoạt động từ phía SMPPsim:

5.2.1. Quá trình nhận gói tin từ SMSC :

Để nhận các message từ phía SMSC thì cổng giao tiếp cần phải khởi tạo các kết nối tới SMSC. Lúc này cổng giao tiếp đóng vai trò như là một máy khách, nó sẽ liên tục gửi các gói tin yêu cầu và đồng thời nhận các gói tin kết quả của các yêu cầu trước theo giao thức SMPP. Các gói tin này mang yêu cầu từ người dùng (mobile phone) tới SMSC rồi qua cổng giao tiếp SMPP để chuyển định dạng gói tin từ định dạng theo giao thức SMPP(phía mobile phone) và sang định dạng của giao thức TCP/IP(phía Application Server) để cho máy chủ ứng dụng xử lý..

5.2.2. Quá trình gửi gói tin đến SMSC :

Quá trình này sẽ gửi các gói tin chứa dữ liệu thỏa mãn yêu cầu của người dùng từ phía máy chủ ứng dụng qua cổng giao tiếp SMPP để làm nhiệm vụ chuyển định dạng gói dữ liệu từ “TCP/IP” sang định dạng “SMPP” rồi gửi đến SMSC để hiển thị trên máy điện thoại di động.

5.2.3. Quá trình nhận gói tin từ SMPP gateway :

Cổng giao tiếp SMPP sẽ được thiết lập để thực hiện các quá trình gửi các gói tin đến hai phía: SMSC và AppServer.

5.2.4. Quá trình gửi gói tin đến SMPP gateway:

Quá trình này sẽ được thiết lập để nhận các gói tin từ hai phía SMSC và AppServer.

Tại cổng giao tiếp SMPP các gói tin trước khi được gửi tới các phía thì đều được chuyển đổi định dạng gói tin để phù hợp với các phía nhận gói tin.

5.2.1. Quá trình nhận gói tin từ AppServer:

Là quá trình cổng giao tiếp SMPP sẽ nhận các gói tin từ máy chủ ứng dụng AppServer. Các gói tin này chính là kết quả của gói tin yêu cầu từ phía người dùng( mobile phone) đã được AppServer xử lý.

5.2.1. Quá trình gửi gói tin đến AppServer:

Là quá trình gửi các yêu cầu từ phía người dùng (mobile phone) đến AppServer thông qua cổng giao tiếp SMPP

Trên đây là một số quá trình cơ bản được xử lý trong phần mềm SMPPsim, ngoài ra còn có các quá trình khác: quá trình kiểm tra hoạt động của giao thức SMPP, TCP/IP, quá trình kiểm tra sự hoạt động của phần cứng (card mạng, dây cáp,…)

5.3. SMS application:

5.3.1. Mô tả bài toán tra cứu danh bạ điện thoại, kết quả tuyển sinh và kết quả xổ số.

Mô hình tổng quát

Hình 5.1. Mô hình tổng quát mô tả dịch vụ tra cứu danh bạ điện thoại, điểm tuyển sinh và kết quả xổ số.

Ứng dụng trong bài toán mô tả phương thức và trình tự mà các điện thoại di động soạn tin nhắn và gửi đên tổng đài tin nhắn, tổng đài tin nhắn phân tích xâu vào để so sánh với định dạng của từng loại dịch vụ đã quy định, nếu sai thì gửi help đến cho người gửi để bết định dạng đoạn tin ngắn cần gửi nếu muốn sử dụng dịch vụ này, nếu đúng thì gửi trả lại cho máy điện thoại di động kết quả tra cứu tương ứng, kết quả này được lấy ra từ trong cơ sở dữ liệu. Cụ thể trong ứng dụng có thể soạn tin nhắn để tra cứu danh bạ điện thoại, điểm tuyển sinh và kết quả xổ số. Thực ra 3 dịch vụ này hiện đã có và đang được sử dụng rộng rãi, ứng dụng chỉ chạy Demo trên một máy để mô tả

SMS Khách hàng CÁC HỆ THỐNG XỬ LÝ DỊCH VỤ SMSC CÁC BỘ PHẬN TÍNH

CƯỚC, THU CƯỚC (adsbygoogle = window.adsbygoogle || []).push({});

MẠNG THÔNG TIN DI ĐỘNG

CÁC DATA BASE

ứng dụng trên và làm thực hiện các bước tương tự như trên thực tế, từ ứng dụng này có thể mở rộng ra vô số các dịch vụ tra cứu thông tin trên net, bất cứ thứ gì trên net.

Khách hàng có thể khai thác dịch vụ bằng cách sau:

- Gửi lệnh bằng SMS theo cấu trúc đã được quy định đến số dịch vụ 991 hoặc 996 hoặc 997 của hệ thống.

- Sau khi truy cập hệ thống bằng cách gửi tin nhắn, khách hàng sẽ nhận được kết quả phản hồi từ hệ thống. Kết quả trả về sẽ là tìm thấy hay không tìm thấy các yêu cầu tra cứu của khách hàng.

- Việc xử lý các yêu cầu của khách hàng sẽ được thực hiện tự động tuỳ theo từng câu lệnh yêu cầu cần được xử lý. Các yêu cầu đã được lập trình đầy đủ sẽ được xử lý hoàn toàn tự động và đáp ứng ngay. Ví dụ khách hàng thực hiện việc tra cứu các thông tin về danh bạ điện thoại cố định tên toàn quốc, yêu cầu này của khách hàng sẽ được xử lý tự động hoàn toàn, sau đó hệ thống thông báo kết quả xử lý cho khách hàng. Một yêu cầu của khách hàng được xử lý tự động và có thể liên quan đến một hoặc nhiều gia đoạn, bộ phận tham gia trong chương trình.

5.3.2. Thiết kế cơ sở dữ liệu.

Với hệ thống thực thì cơ sở dữ liệu mà hệ thống truy cập vào để lấy dữ liệu ra nằm trên máy chủ cơ sở dữ liệu, việc tra cứu thông tin từ Internet được hệ thống lấy thông tin từ cơ sở dữ liệu của trang web mà chứa các thông tin cần tra cứu. Việc cập nhật cơ sở dữ liệu và các thông tin là do admin của website cập nhật. Chính vì thế cơ sở dữ liệu trên mạng đã có, hệ thống cung cấp dịch vụ nào thì sẽ select từ cơ sở dữ liệu trong trang web của dịch vụ đó và gửi kết quả đến cho người dùng.

Trong ứng dụng ví dụ của khóa luận, tất cả các mô hình thử nghiệm mô phỏng SMSC, SMS Gateway, Application Server và Database Server đều nằm trên cùng một máy chủ thử nghiệm, chính vì thế mà cơ sở dữ liệu chúng em sẽ tự thiết kế lấy nhưng kết quả trả về cũng tương tự như trong mô hình thật.

* Cơ sở dữ liệu mô phỏng cho dịch vụ 991: tra cứu danh bạ điện thoại

1. Bảng Location lưu danh sách các Vùng và mã vùng tương ứng

STT Tên Trường Kiểu Mô tả

1 LocationCode text Mã vùng

2 LocationName text Tên vùng

2. Bảng Directory lưu chi tiết về số điện thoại và các thông tin về tên, địa chỉ ... của số thuê bao đó

STT Tên Trường Kiểu Mô tả

2 LocationCode text Mã vùng

3 TelNumber text Số điện thoại

4 Name text Tên thuê bao

5 Address text Địa chỉ

Vì hệ thống dịch vụ tin nhắn SMS khi gửi đến tổng đài tin nhắn và gửi trả lại máy điện thoại đều là dưới dạng text nên các trường trong sơ sở dữ liệu sẽ đặt kiểu là text để không phải chuyển kiểu khi thực hiện chương trình.

* Cơ sở dữ liệu mô phỏng cho dịch vụ 997: tra cứu kết quả xổ số

1. Bảng XS_Type: Các loại xổ số khác nhau hiện có

STT Tên Trường Kiểu Mô tả

1 Code_Type text Mã loại xổ số

2 Name_Type text Tên loại xổ số

2. Bảng XSDT: lưu kết các kết quả xổ số

STT Tên Trường Kiểu Mô tả

1 id AutoNumber Số id của bản ghi (adsbygoogle = window.adsbygoogle || []).push({});

2 Code_Type text Mã kiểu xố số

3 Date text Kết quả xổ số ngày

4 Dacbiet text Giải đặc biệt

5 Nhat text Giải nhất

6 Nhi text Giải nhì

7 Ba text Giả ba

8 Tu text Giải tư

9 Nam text Giải năm

10 Sau text Giải sáu

11 Bay text Giải bảy

3. Bảng XS123 Lưu kết quả xổ số điện toán 123 vì xổ số 123 có các giải khác với kết quả xổ số truyền thống.

STT Tên Trường Kiểu Mô tả

1 id AutoNumber Số id của bản ghi

2 Date text Kết quả xổ số ngày

3 1 text Bộ số thứ nhất

4 2 text Bộ số thứ hai

5 3 text Bộ số thứ ba

* Cơ sở dữ liệu mô phỏng cho dịch vụ 996: tra cứu điểm thi tuyển sinh

1. Bảng TruongDH: Danh sách các trường đại học

STT Tên Trường Kiểu Mô tả

1 MaTruong text Mã trường ĐH (thêm cả khối thi vào cuối)

2 TenTruong text Tên trường đại học

3 Diemchuan text Điểm chuẩn khu vực 3

1. Bảng DanhSach: Danh sách các điểm của các thí sinh

STT Tên Trường Kiểu Mô tả

1 id AutoNumber Số id của bản ghi

2 SBD text Kết quả xổ số ngày

3 Hovaten text Bộ số thứ nhất

4 Ngaysinh text Bộ số thứ hai

5 Hokhau text Bộ số thứ ba (adsbygoogle = window.adsbygoogle || []).push({});

6 Mon1 text Điểm thi môn thứ nhất

7 Mon2 text Điểm thi môn thứ hai

8 Mon3 text Điểm thi môn thứ ba

* Sơ đồ quan hệ giữa các bảng

5.3.3. Mô tả các module chương trình nguồn

Hình 5.2. Mô hình hoạt động của hệ thống tin nhắn SMS

Trên hình bên mổ tả khái quát hệ thống dịch vụ tin nhắn SMS, hệ thống gồm 3 phần chính:

- Cổng giao tiếp SMS Gateway, để nhận các giói tin từ điện thoại di động từ mạng di động GSM qua giao thức SMPP, nhận các gói tin từ điện thoại di động, lưu trữ và chuyển đi đến máy chủ ứng dụng xử lý và nhận về kết quả để chuyển đến cho máy điện thoại di động.

- Máy chủ ứng dụng: nhận các gói tin đóng gói dưới dạng text qua giao thức TCP/IP, phân tích xử lý gói tin đó, nếu đúng định dạng thì truy xuất vào cơ sở dữ liệu

để lấy kết quả và trả gửi kết quả lại cho điện thoại di động cho điện thoại di động qua cổng giao tiếp SMS Gateway.

- Máy chủ cơ sở dữ liệu: tổ chức và lưu trữ cơ sở dữ liệu.

Vì ứng dụng chạy trên một máy lên xử lý phía cổng giao tiếp SMS Gateway thực hiện việc tiếp nhận và gửi gói tin tại SMS gateway từ/tới trung tâm dịch vụ tin ngắn và thực hiện chuyển đổi các gói tin giữa hai giao thức SMPP và TCP/IP do chương trình SMSSim thực hiện. Phần mềm thực hiện các ứng dụng trên máy chủ ứng dụng xử lý phía Application, là chương trình TMSApp, chương trình xử lý việc nhận các gói tin từ phía điện thoại di động qua cổng giao tiếp SMS Gateway (SMPPsim), xử lý dịnh dạng gói tin và truy xuất vào cơ sở dữ liệu lấy kết quả và gửi về phía SMPPsim để chương trình SMPPsim gửi kết quả đến cho điện thoại di động (trong ứng dụng này là một form hiển kết quả tương ứng với kết quả trên màn hình máy điện thoại di động).

Chương trình SMSApp được viết bằng ngôn ngữ lập trình Java cấu trúc như sau:

Chương trình gồm một số lớp cơ bản sau:

1. TDirectory: Lớp này chứa các hàm kết nối đến cơ sở dữ liệu, và các hàm truy suất vào cơ sở dữ liệu để lấy thông tin ra, các hàm này trả về kết quả dạng text thể hiện các kết quả trong cơ sở dữ liệu.

2. TSMSTransceiver: Đây là lớp có chức năng xử lý chính của chương trình, chứa các hàm kết nối với cổng giao tiếp SMS gateway (SMPPsim). Lớp là lớp quan trọng nhất làm nhiệm vụ kết nối với SMS Gateway, xử lý gói tin vào, nếu đùng định dạng thì gọi hàm truy xuất vào cơ sở dữ liệu trong lớp TDirectory

và gọi hàm tìm kiếm thông tin trong cơ sở dữ liệu và cuối cùng gửi gói tin chứa các thông tin cần thiết được yêu cầu về phía SMS gateway (SMSSim) xử lý để gửi về kết quả cho máy di động. Nếu định dạng gói tin nhắn từ phía gửi sai thì cũng gửi trả về help để hướng dẫn người dùng gửi đúng định dạng đã quy định. 3. TSMSDemoFrame: Lớp này làm nhiệm vụ hiển thị một giao diện Form để

Connect đến Cổng giao tiếp SMS Gate và nhận về bản tin ngắn kết quả cần tra cứu thông tin trên Internet. Nhìn chung Form này giả lập một máy điện thoại di động nhận về kết quả tra cứu. Khi ở trạng thái kết nối với mạng di động GSM (Connect tới SMSSim).

4. THook: Lớp này chứa các hàm kết nối và hủy kết nối đến cổng giao tiếp SMS Gateway (SMSSim).

5. TSMSLogger: Lớp này chứa các hàm thực hiện việc in ra kết quả tra cứu lên giao diện máy điện thoại di động (giả lập), in ra kết quả nhận được từ phía SMS Gateway (SMSSim) qua giao thức SMPP lên giao diện Form.

6. TSMSDemo: Đây là lớp chính của chương trình gọi các lớp đã nêu trên để chạy chương trình và in ra các file.log để lưu nội dung các tin nhắn đã được gửi và nhận trong khi chạy chương trinh.

Trên đây là cấu trúc sơ qua của chương trình nguồn, chi tiết các hàm và chương trình chạy trong mã nguồn kèm theo.

5.4. Kết luận

Chương trình demo đã thực hiện được các việc:

 Nhận các tin nhắn từ phía mobile phone, gửi về phía Application Server: một tin nhắn tra cứu danh bạ điện thoai, tra cứu kết quả xổ số, tra cứu điểm tuyển sinh.

 Phía Application Server đã xử lý các tin nhắn(các yêu cầu) từ phía SMPPsim và trả về kết quả: thông tin về số điện thoại đã tra cứu, thông tin về kết quả xổ số, thông tin về điểm tuyển sinh.

CHƯƠNG VI. GIỚI THIỆU CHƯƠNG TRÌNH.

Một phần của tài liệu nghiên cứu giao thức smpp và phát triển các dịch vụ tin nhắn sms (Trang 72 - 81)