Xây dựng hệ thống dịch vụ giá trị gia tăng trên nền tảng tin nhắn tức thì

MỤC LỤC

Giao thức Yahoo Messenger với module Yahoo Bot và Giao thức Google Talk với module Gtalk Bot

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 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

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.

Phân tích, thiết kế các dịch vụ đã cung cấp của TCat

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. 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.

CSDL CSDL

Phân tích thiết kế

    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. 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.

    Hình 2. 3 CSDL của TCat
    Hình 2. 3 CSDL của TCat

    GIAO DIỆN IM

    • Tổng quan giao thức Yahoo Messenger (YMSG)

      Ví dụ với giao thức phiên bản 9 có trường phiên bản giao thức (version dài 4 byte) trong khi ở giao thức phiên bản 12 thì trường version này chỉ có độ dài là 2 byte. Vì ban đầu chúng tôi quyết định viết chương trình với giao thức YMSG phiên bản 15 (trên mạng vẫn chưa có miêu tả cụ thể về giao thức YMSG phiên bản 15).

      Hình 3. 2: Cấu trúc gói tin YMSG phiên bản 12
      Hình 3. 2: Cấu trúc gói tin YMSG phiên bản 12

      DATA 0 - 65535

      • Mô tả chi tiết giao thức YMSG

        Sau khá nhiều lần bắt gói tin và phân tích , chúng tôi mới đưa ra kết luận về cấu trúc của gói tin YMSG phiên bản 15. Trong trường hợp là hồi đáp của Server, trường status báo cho Client biết yêu cầu là thành công hay thất bại,. Khi Client gửi gói tin đầu tiên thì `là 0, Server hồi đáp với session id được sử dụng bởi client và Server trong tất cả các gói sau này.

        Server sẽ gửi lại danh sách bạn bè, danh sách định danh, danh sách ignore và một danh sách cookies tới client. Trong trạng thái messaging, Client có thể gửi/ nhận các tin nhắn (messages), tham gia vào các cuộc thảo luận, gửi/nhận các file, thay đổi trạng thái,…. Tuy có thay đổi theo phiên bản giao thức, nhưng thứ tự thực hiện trong giao thức YMSG vẫn được giữ nguyên (từ phiên bản 9 đến phiên bản 15) theo Hình 3.

        Hình 3. 6: Giao thức YMSG
        Hình 3. 6: Giao thức YMSG

        1:yahoo id

        Gửi /nhận tin nhắn

        Thực chất của việc hai người chat với nhau đó chính là người thứ nhất gửi tin nhắn đến server, server gửi lại tin nhắn đó đến người thứ hai và ngược lại. Vì thế gói tin khi nhận tin nhắn không khác gì lắm so với gói tin lúc gửi tin nhắn (chỉ khác ở trường mã trạng thái).

        TYPING

        • Phân tích thiết kế module Yahoo bot
          • Tổng quan giao thức Google Talk

            Trong chương trình Yahoo bot không quan tâm lắm đến gói tin mà server trả về (trong trường hợp này) chỉ quan tâm đến các gói tin có service code là 0x0006 (những gói tin message). Python là một ngôn ngữ lập trình hướng đối tượng, chạy được trên nhiều hệ điều hành phổ biến hiện nay như Windows, Linux, Unix, Mac, đơn giản như các shellscript nhưng thực sự là ngôn ngữ để phát triển ngôn ngữ bậc rất cao (very-high-level-language). Đây là một ngôn ngữ dạng thông dịch (interpreter language), do vậy không phải tốn thời gian để biên dịch, liên kết.., mà chỉ viết và chạy.

            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ụ). 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. 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ụ).

            Hình 3. 20: Ảnh chụp gói tin Logoff
            Hình 3. 20: Ảnh chụp gói tin Logoff

            GIAO DIỆN WEB

              Do được tối ưu hóa cho các ứng dụng web, tốc độ nhanh, nhỏ gọn, cú pháp giống C và Java, dễ học và thời gian xây dựng sản phẩm tương đối ngắn hơn so với các ngôn ngữ khác nên PHP đã nhanh chóng trở thành một ngôn ngữ lập trình web phổ biến nhất thế giới. Như đã nói ở phần đầu chương hai, Phần WEB là một trong những phần khá quan trọng, làm nên kết cấu của TCat do các phần IM, hoặc SMS đều có các dịch vụ liên kết với cơ sở dữ liệu thông qua WEB. JSON là viết tắt của từ JavaScript Object Notation, đó là là một kiểu định dạng dữ liệu chuyển đổi nhẹ cho máy tính, có tính khả đọc vì là kiểu văn bản text-based, dùng để biểu diễn các kiểu dữ liệu.

              Trong những ngôn ngữ khác nhau, đây được coi như là một đối tượng (object), bản ghi (record), cấu trúc (struct), từ điển (dictionary), bảng băm (hash table), danh sách khoá (keyed list), hay mảng liên hợp. Hầu như tất cả các ngôn ngữ lập trình hiện đại đều hổ trợ trong một hình thức nào đó, tạo nên ý nghĩa của một định dạng hoán vị dữ liệu với các ngôn ngữ lập trình cũng đã được cơ sở hoá trên cấu trúc này. JSON cung cấp các API cho hầu hết các ngôn ngữ và đã nằm trong thư viện chuẩn của Python từ phiên bản Python 2.6 (phiên bản Python 2.5 chưa hỗ trợ JSON nên chúng tôi phải dùng một thư viện ngoài là PyJSON), đồng thời cũng được PHP hỗ trợ từ phiên bản PHP5.x.

              Hình 4. 1 Mối liên hệ giữa các bảng trong CSDL
              Hình 4. 1 Mối liên hệ giữa các bảng trong CSDL

              GIAO DIỆN SMS

              • Tổng quan về SMS
                • Gửi tin SMS từ máy tính đến điện thoại di động
                  • Module SMS

                    Mọi người không chỉ có thể trao đổi SMS với những người sử dụng di động cùng mạng mà còn có thể trao đổi SMS với những người sử dụng di động của các nhà cung cấp dịch vụ khác trên toàn thế giới. SMS Gateway đóng vai trò là cổng kết nối giữa hệ thống dịch vụ với mạng di động, thực hiện đóng gói nội dung và chuyển giao thức mạng, xử lý các kết nối với SMSC sử dụng một số giao thức của SMSC như SMPP, CIMD. Để gửi và nhận tin nhắn SMS hoặc các tin nhắn văn bản trên điện thoại di động hoặc các thiết bị GSM / GPR chỉ cần biết làm thế nào để giao tiếp với SMS Gateway mà không cần phải biết bất cứ điều gì về các lệnh AT.

                    NowSMS có thể dễ dàng cài đặt thành SMS Gateway, MMS Gateway, WAP Push Proxy Gateway và trung tâm tin nhắn đa phương tiện MMSC (Multimedia Messaging Center) cho hệ điều hành Window 2000, XP, Vista hoặc Window Server 2003, 2008. 2 Mô hình gửi tin SMS với SMS Gateway kết nối với SMSC thông qua GSM Modem: SMS Gateway kết nối với GSM Modem (là điện thoại di động có chức năng GSM Modem, có gắn sim của một nhà cung cấp dịch vụ di động) qua cáp kết nối. Ngôn ngữ sử dụng để viết module SMS cũng giống như ngôn ngữ viết hai module Yahoobot và Gtalk bot, chúng tôi quyết định chọn là Python, là một ngôn ngữ dạng thông dịch (interpreter language), không phải tốn thời gian để biên dịch, liên kết.., chỉ cần viết và chạy.

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

                    MODULE SMS

                    Tiến trình thực hiện

                    Chương trình chính khi khởi động sẽ tự động Import sms từ đối tượng SMS và truyền biến này cho Auto_run. 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 dịch vụ này thông qua hàm autorun(sms).

                    Đa phần các dịch vụ cung cấp chế độ chạy tự động (autorun) đều không tự động xử lý dữ liệu.

                    CÁC DỊCH VỤ CUNG CẤP

                    • Dịch vụ Chấp nhận/ Từ chối
                      • Dịch vụ Người dùng tự định nghĩa
                        • Dịch vụ Nhắc việc

                          Dịch vụ bên phía Web sẽ kiểm tra CSDL, nếu có bản ghi thỏa mãn (trường accept_y, accept_g, accept_m tương ứng với ba dịch vụ là Yahoo, GoogleTalk hoặc di động bằng -1) thì lấy nick tương ứng ra, đưa vào một danh sách. Thực chất của dịch vụ này là việc lấy thông tin từ trang web do người dùng cung cấp, vì thế khi sử dụng dịch vụ này, yêu cầu với người sử dụng là cần có một ít kiến thức lập trình web. Con bot gọi dịch vụ Phiên dịch lên, truyền tham số bao gồm: ngôn ngữ hiện tại là Tiếng Anh (có mã là en), ngôn ngữ muốn chuyển là tiếng Việt (có mã là vi), đoạn văn bản là hello world.

                          Dịch vụ nhắc việc là 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ó thay đổi,…. Không chỉ có thể nhắn tin cho mình, người sử dụng có thể nhắn tin cho bất kỳ một ai đó ví dụ như bạn bè, người thân hoặc đồng nghiệp,…Để có thể nhắn tin cho người khác, có thể là một hoặc nhiều người với nhiều nick Yahoo, GoogleTalk hoặc số điện thoại, người sử dụng phải nhập những thông tin cần thiết cho chúng tôi. Khi người sử dụng tạo một tiến trình nhắc việc trên web, tùy theo người sử dụng chọn, có thể đó là tiến trình nhắc việc theo sự thay đổi của trang web hoặc nhắc việc theo thời gian cụ thể nào đó hoặc cả hai.

                          Hình 6. 3: Mối quan hệ CSDL trong dịch vụ nhắc việc theo thời gian
                          Hình 6. 3: Mối quan hệ CSDL trong dịch vụ nhắc việc theo thời gian