Nghiên cứu hệ thống dịch vụ gửi tin nhắn tự động GCM và áp dụng vào trang thông tin nội bộ trường Đại học Kinh tế Quốc dân

Tóm tắt: Một trong những chức năng nổi bật của Ứng dụng di động (Mobile App) là khả năng gửi thông báo tự động đến người dùng khi có thông tin mới được cập nhật của từ phía Server. GCM (Google Cloud Message) là một dịch vụ cho phép gửi các tin nhắn có dung lượng nhỏ từ Server tới tất cả các thiết bị khi kết nối mạng. Việc nghiên cứu và áp dụng GCM vào các hệ thống dịch vụ web sẵn có sẽ giúp các thiết bị di động không phải request liên tục tới Server mà sẽ tự động nhận các thông báo khi có tin mới từ phía Server. Việc nghiên cứu và áp dụng GCM vào hệ thống thông tin nội bộ của trường Đại học kinh tế quốc dân sẽ mang lại nhiều hơn nữa các giá trị và tiện ích cho người sử dụng.

pdf6 trang | Chia sẻ: thanhle95 | Lượt xem: 538 | Lượt tải: 1download
Bạn đang xem nội dung tài liệu Nghiên cứu hệ thống dịch vụ gửi tin nhắn tự động GCM và áp dụng vào trang thông tin nội bộ trường Đại học Kinh tế Quốc dân, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
ISSN 2354-0575 Journal of Science and Technology76 Khoa học & Công nghệ - Số 15/Tháng 9 - 2017 NGHIÊN CỨU HỆ THỐNG DỊCH VỤ GỬI TIN NHẮN TỰ ĐỘNG GCM VÀ ÁP DỤNG VÀO TRANG THÔNG TIN NỘI BỘ TRƯỜNG ĐẠI HỌC KINH TẾ QUỐC DÂN Tống Thị Hảo Tâm, Phạm Thảo, Hà Lâm Tùng, Cao Thị Thu Hương, Tống Thị Minh Ngọc, Phạm Minh Hoàn Viện Công nghệ thông tin kinh tế (SITE), Trường Đại học Kinh tế quốc dân Ngày tòa soạn nhận được bài báo: 20/06/2017 Ngày phản biện đánh giá và sửa chữa: 22/08/2017 Ngày bài báo được duyệt đăng: 25/08/2017 Tóm tắt: Một trong những chức năng nổi bật của Ứng dụng di động (Mobile App) là khả năng gửi thông báo tự động đến người dùng khi có thông tin mới được cập nhật của từ phía Server. GCM (Google Cloud Message) là một dịch vụ cho phép gửi các tin nhắn có dung lượng nhỏ từ Server tới tất cả các thiết bị khi kết nối mạng. Việc nghiên cứu và áp dụng GCM vào các hệ thống dịch vụ web sẵn có sẽ giúp các thiết bị di động không phải request liên tục tới Server mà sẽ tự động nhận các thông báo khi có tin mới từ phía Server. Việc nghiên cứu và áp dụng GCM vào hệ thống thông tin nội bộ của trường Đại học kinh tế quốc dân sẽ mang lại nhiều hơn nữa các giá trị và tiện ích cho người sử dụng. Từ khóa: Mobile App, Push Notifications, GCM, Trang thông tin nội bộ. 1. Đặt vấn đề Trong giai đoạn hội nhập kinh tế toàn cầu hiện nay, việc nắm bắt thông tin một cách kịp thời quyết định lớn cho sự thành công trong mọi lĩnh vực. Có thể nói, trang thông tin nội bộ trường Đại học kinh tế quốc dân (ĐHKTQD) là một trong các kênh tương tác quan trọng giữa nhà trường với đội ngũ cán bộ giảng viên và công nhân viên. Với các thông tin quan trọng và mang tính nội bộ được cập nhật với tần suất lớn như hiện nay thì việc sử dụng trang tin này đã trở nên quen thuộc và sử dụng với số lượng nhiều lần, đặc biệt là với đội ngũ quản lý nhà trường. Với các tính năng hiện có, trang thông tin nội bộ trường đã phần nào đáp ứng được nhu cầu cung cấp thông tin cho người quan tâm. Tuy nhiên, trang thông tin này với công nghệ phát triển cũ được đánh giá chưa thực sự đẹp, còn thiếu nhiều tiện ích và chưa thích ứng khi xem trên thiết bị smart phone. Bên cạnh đó, các thông tin nội bộ được cập nhật ở trạng thái tĩnh dẫn đến thực trạng quên hoặc trễ các thông tin của đối tượng theo dõi khi không truy cập vào trang để xem thông tin kịp thời và các thông tin mới khi được cập nhật vào trang thông tin nội bộ cũng không được tự động thông báo đến đối tượng sử dụng. Để đáp ứng được tốt hơn nữa nhu cầu của các cán bộ công nhân viên của trường, đồng thời có thể kịp thời theo dõi, nắm bắt thông tin từ trang nội bộ thì vấn đề cần đặt ra là các thông tin mới khi được cập nhật vào trang thông tin nội bộ cần được tự động thông báo đến đối tượng sử dụng. Bên cạnh đó, với xu hướng ngày càng phát triển của công nghệ thì việc áp dụng đồng bộ các giải pháp mới, công nghệ mới chăc chắn sẽ giúp trải nghiệm tốt hơn cho các cán bộ giảng viên khi sử dụng hệ thống. Với mục tiêu trên, chúng tôi đã tiến hành khảo sát phân tích và tiến hành thiết kế, xây dựng lại hệ thống thông tin nội bộ này nhằm đáp ứng tốt hơn những nhu cầu đặt ra ở trên. Việc nâng cấp nhắm đến cập nhật phiên bản Web thân thiện hơn với các thiết bị di động và bổ sung các tiện ích mới trên nền tảng di động nhằm tăng trải nghiệm hơn với người sử dụng. Một trong các tính năng được chúng tôi tập trung quan tâm nghiên cứu là tính năng tự động thông báo đến đối tượng sử dụng các thông tin mới được cập nhật trên trang thông tin nội bộ của trường ĐHKTQD. Trong khuôn khổ bài viết này, chúng tôi trình bày các kết quả nghiên cứu cải thiện hệ thống thông tin nội bộ của trường ĐHKTQD đặc biệt là hệ thống gửi thông báo tự động trên nền tảng công nghệ Android. 2. Cơ sở nghiên cứu 2.1. Mobile Friendly Hiện nay, việc sử dụng internet thông qua các thiết bị di động là điều tất yếu. Vì vậy, thiết kế, xây dựng website cần tương thích (Responsive) với chế độ xem di động. Khái niệm Mobile Friendly “Thân thiện với điện thoại di động”, là cụm từ xuất phát từ một thuật toán Mobile Friendly Ranking. Hiểu đơn giản đó là đánh giá việc hiển thị web trên mobile (di động) có dễ đọc, dễ nhìn, dễ tìm thông tin, dễ sử dụng hay không và ngoài ra còn đánh giá có tăng tốc độ hiển thị hay không? Có thể thấy, nhược điểm khi dùng mobile để vào web đó là mạng chậm, màn hình nhỏ. Những ISSN 2354-0575 Khoa học & Công nghệ - Số 15/Tháng 9 - 2017 Journal of Science and Technology 77 website không thân thiện với di động thường phải phóng to màn hình để xem khiến người dùng cảm giác khó chịu, phức tạp và có thể thoát ngay. Mobile Friendly sẽ giúp người dùng thoải mái hơn khi lướt Web. Khả năng tương thích của website với mọi loại di động cũng là một thách thức không nhỏ đối với những nhà phát triển. Bên cạnh việc tối ưu hóa website tương thích với các thiết bị di động đáp ứng thói quen người sử dụng, còn phải nhắc đến một lý do cực kỳ quan trọng nữa đó là tối ưu hóa cho Google - công cụ tìm kiếm lớn nhất trên thế giới hiện nay chiếm hơn 90% thị phần của người tìm kiếm. Năm 2015, Google đã cập nhật thuật toán này để đánh giá độ thân thiện của website đối với thiết bị di động. Những website có thiết kế mobile friendly sẽ dễ được Google ưu tiên tăng thứ hạng website trên công cụ tìm kiếm phiên bản mobile và có thể là cả trên desktop, tức là cải thiện khả năng hiển thị website trên Google. Một website với thiết kế mobile friendly có những yếu tố sau: - Tránh dùng những phần mềm không phổ biến trên thiết bị di động như Flash. - Cỡ chữ dễ nhìn, dễ đọc mà không phải phóng to. - Kích thước nội dung dễ nhìn, không phải phóng to, xoay ngang. - Đặt các liên kết cách nhau giúp ấn bằng tay dễ dàng mà không bị ấn đúp - Hình ảnh được tối ưu để giảm dung lượng truy cập 2.2. Mobile App 2.2.1. Giới thiệu chung về Mobile App Mobile Apps là các ứng dụng được viết trên nền tảng hệ điều hành di động để người dùng có thể tương tác ngay trên đó, đây là ứng dụng chỉ sử dụng cho thiết bị di động hay máy tính bảng, thông qua các “Cửa hàng trực tuyến” của các hãng như App Store của Apple hay Google Play của Google. Những ứng dụng này được lập trình hoặc phát triển dựa trên framework cho mỗi nền tảng. Tại thời điểm hiện tại có hai nền tảng đang dẫn đầu thị trường là iOS và Android, vì vậy các nhà phát triển cần App (ứng dụng) là phải tạo hai App trên các môi trường này. Ngoài ra còn những nền tảng khác như Windows Phone, Firefox mobile OS, RIM (blackberry OS) Thiết kế ứng dụng mobile cũng tương tự như thiết kế một trang web, có phần xây dựng giao diện (layout, icon) và phần lập trình. Việc lựa chọn tạo một Mobile App hay Mobile Web phụ thuộc vào mục tiêu của người xây dựng. Nếu để phát triển một trò chơi, hoặc một ứng dụng có tính năng thông báo hay ứng dụng nội bộ thì tương tác với một App sẽ là lựa chọn tốt nhất. Nhưng nếu mục tiêu là cung cấp nội dung thân thiện với thiết bị di động cho đối tượng rộng nhất có thể thì một Mobile Web là sự lựa chọn tốt. Trong một số trường hợp, bạn có thể quyết định cả hai Mobile App và Mobile Web. Nhưng đối với những hệ thống cung cấp tin tức thì về mặt thiết kế, người xây dựng sẽ lựa chọn xây dựng đồng thời cả hai hệ thống. Hiện tại có 2 loại App phổ biến: a) Native mobile app Đây là các loại App mà bạn sẽ tải nội dung xuống điện thoại và truy cập vào chúng khi sử dụng. Các app loại này có thể kể như các trò chơi (game), ứng dụng mạng xã hội Facebook, Twitter . Đối với các App loại này người dùng có thể sử dụng mà không cần phải có internet (một số game bắt bạn phải có internet mới chơi được đơn thuần là vì chúng cần đăng nhập, có mua bán vật phẩm bên trong hoặc vì chúng là game online). Native mobile app mang lại trải nghiệm tốt nhất cho người dùng. Các Native mobile app có thể hoạt động ngay cả khi không có mạng nếu tất cả file cần thiết đã được tải xuống điện thoại. Tuy nhiên, để phát triển cũng như bảo trì App thì tốn kém về chi phí, thời gian. Việc nâng cấp các nội dung của App cũng không dễ dàng mà bắt buộc phải nâng cấp toàn bộ ứng dụng. b) Hybrid mobile app Đây là App kết hợp những điểm đặc trưng của web app và mobile app với nhau. Các App loại này được viết bằng ngôn ngữ lập trình web (HTML5, CSS3 và Javascript), sau đó được đóng gói để trở thành giống như native mobile app và có thể tải được trên “Cửa hàng trực tuyến”. Hybrid mobile app cho trải nghiệm người dùng trên điện thoại tốt, việc phát triển ứng dụng dù không đơn giản nhưng ít phức tạp hơn native mobile app. Việc cập nhật nội dung sẽ dễ dàng hơn do nội dung được đồng bộ. [1,2,3]. Bảng 1. So sánh ưu, nhược điểm của hai loại Mobile App Mobile App Native mobile app Hybrid mobile app Mô tả Ứng dụng cài đặt trên thiết bị di động Phần chính là website được phát triển để hiển thị trên di động ISSN 2354-0575 Journal of Science and Technology78 Khoa học & Công nghệ - Số 15/Tháng 9 - 2017 Thiết lập Phát triển ứng dụng cho mỗi hệ điều hành Chỉ cần phát triển container, nội dung là từ website Chi phí phát triển và bảo trì Tốn kém Ít tốn kém hơn Cập nhật nội dung Nội dung cập nhật qua các bản nâng cấp của ứng dụng Nội dung được cập nhật tùy website Trải nghiệm người dùng Rất tốt, được phát triển hướng tới trải nghiệm người dùng di động Tốt nhưng trong một số trường hợp sẽ không thể bằng native mobile app Tốc độ Tùy thuộc cách ứng dụng được viết Tùy thuộc tốc độ internet Khả năng sử dụng Có thể sử dụng được cả khi không có mạng Không thể sử dụng khi không có mạng Kích thước ứng dụng Tùy thuộc cách lập trình ứng dụng tuy nhiên một số native mobile apps như games thường có xu hướng nặng hơn do phải tải toàn bộ nội dung về Tùy thuộc cách lập trình tuy nhiên nhìn chung hybrid mobile apps thường có khả năng nhỏ hơn vì chỉ cần tải các phần cần thiết, nội dung chủ yếu từ website Hình 1. 90% thời gian người dùng sử dụng điện thoại là tương tác với mobile app, chỉ 10% là sử dụng trình duyệt để truy cập internet [2,3,4] 2.2.2. Notification Chức năng nổi bật của Mobile App là chức năng gửi thông báo tự động khi có thông tin mới được cập nhật của App. Một notification là một thông báo có thể hiển thị tới người dùng. Thông báo này được hiển thị ở bên ngoài giao diện của ứng dụng. Khi lựa chọn cho phép hệ thống hiện thông báo Notification đầu tiên nó xuất hiện như một icon trong khu vực thông báo sau đó để thấy chi tiết về thông báo, người dùng mở Notification Drawer. Cả khu vực thông báo và drawer là các khu vực được điều khiển bởi hệ thống mà người dùng có thể quan sát bất cứ lúc nào. Các bước cơ bản tạo và gửi thông báo trên nền tảng Android: (i) Tạo Notification Builder: Tạo một Notification Builder bởi sử dụng phương thức NotificationCompat.Builder.build. Việc sử dụng Notification Builder để thiết lập các thuộc tính thông báo đa dạng như icon lớn, icon nhỏ, title, độ ưu tiên; (ii) Thiết lập thuộc tính cho thông báo. Khi đã có đối tượng Builder, có thể tiếp tục thiết lập các thuộc tính thông báo của nó bởi sử dụng đối tượng Builder tùy theo yêu cầu của của việc sử dụng App. Có rất nhiều thuộc tính có thể thiết lập cho thông báo. Các thuộc ISSN 2354-0575 Khoa học & Công nghệ - Số 15/Tháng 9 - 2017 Journal of Science and Technology 79 tính tối thiểu sau đây phải thiết lập đó là: một icon nhỏ, được thiết lập bởi setSmallIcon(), một title, được thiết lập bởi setContentTitle(), Text chi tiết, được thiết lập bởi setContentText(); (iii) Đính kèm các action: Bước này không mang tính bắt buộc, chỉ thực hiện khi người xây dựng App muốn gắn một action với thông báo. Một Action cho phép người dùng trực tiếp từ một thông báo đi tới một Activity trong ứng dụng, ở đây có thể thấy một hoặc nhiều sự kiện hoặc thực hiện công việc khác. Action được định nghĩa bởi một PendingIntent chứa một Intent mà bắt đầu một Activity trong ứng dụng. Để liên kết PendingIntent đó với một động tác, gọi phương thức thích hợp của NotificationCompat.Builder. Ví dụ, khi muốn bắt đầu Activity khi người dùng click vào phần text của Notification Drawer, cần thêm PendingIntent bằng việc gọi phương thức setContentIntent(). Một đối tượng PendingIntent giúp thực hiện một action trên ứng dụng, không quan tâm đến trạng thái đang chạy hay không của ứng dụng. Sử dụng đối tượng StackBuilder chứa một backstack cho Activity đã bắt đầu. Điều này đảm bảo rằng điều hướng từ Activity về màn hình chính; (iv) Thông báo Notification: Truyền đối tượng Notification tới hệ thống bằng việc gọi NotificationManager.notify() để gửi thông báo. Cần gọi phương thức NotificationCompat.Builder. build() trên đối tượng Builder trước khi thông báo nó. Phương thức này kết hợp tất cả tùy chọn đã được thiết lập và trả về một đối tượng Notification mới [4,5]. 3. Sử dụng GCM gửi thông báo tự động cho Mobile App GCM (Google Cloud Messageing) là một dịch vụ được Google phát triển giúp triển khai việc gửi tin nhắn từ server (máy chủ) tới Mobile (di động). Server sẽ là nơi lưu trữ thông tin đồng thời phát tán các tin thông báo. Các kiểu dữ liệu có thể là các tin nhắn dung lượng nhỏ hoặc các dữ liệu có dung lượng 4kb trở xuống. GCM xử lý dữ liệu theo kiểu hàng đợi các tin nhắn và chuyển tới các ứng dụng android dạng Push notification (đẩy lên thanh thông báo). GCM thay thế cho phiên bản cũ là beta C2DM (Cloud to Device Messaging). Đặc trưng của GCM là i) Cho phép server của các ứng dụng phía thứ 3 gửi tin nhắn đến từng ứng dụng; ii) Phía ứng dụng không cần thiết phải chạy chức năng nhận tin nhắn liên tục. GCM sẽ đánh thức các thiết bị và broadcast message; iii) Không cung cấp các giao diện hay thư viện xử lý thông tin mà đơn thuần chỉ gửi tin nhắn đến thiết bị; iv) Thích ứng với nền tảng Android phiên bản từ 2.3 chạy Google Play Store hoặc nền tảng Emulator chạy Google APIs; v) Sử dụng kết nối cho Google Service hiện có. GCM với kiến trúc bao gồm một Google connection server (GCM Server), một app server bên trong môi trường ở đó tương tác với Server thông qua giao thức HTTP hoặc XMPP, và một app client chạy trên nền tảng Android hoặc iOS,... Hệ thống gửi/nhận tin nhắn sử dụng GCM với quy trình hoạt động như sau: (1) Tạo một Project trên https://console. developers.google.com trước để có được Sender Id và Application Id. Xây dựng Server và WebService của ta với CSDL phù hợp để lưu trữ Registration Id; (2) Các thiết bị Mobile Android sẽ gửi Sender Id và Application Id lên GCM server để đăng ký (chú ý là Sender Id được cung cấp từ Google Developers); (3) Khi đăng ký thành công thì GCM Server sẽ tạo ra một mã đăng ký gọi là Registration Id và gửi ngược về cho thiết bị Android; (4) Sau khi nhận được Registration Id mà GCM Server gửi về, mỗi thiết bị Android này sẽ gửi Registration Id lên Server thông qua Web Service; (5) Sau khi Server của ta nhận được Registration Id (mỗi Android device sẽ được cung cấp Id riêng, theo từng session do GCM Server tạo ra) sẽ tiến hành lưu vào CSDL (do ta xây dựng) để sử dụng cho các lần sau này (gửi tin nhắn hàng loạt); (6) Xây dựng ứng dụng trên Server để cho phép gửi tin nhắn hàng loạt (có thể gửi tới 1000 Android device mà không tốn phí), ở bước này cũng phải lấy Sender Id và Application Id do bước 1 tạo ra. Định dạng gửi tin là chuẩn JSON, có thể gửi cả ký tự Unicode, đồng nghĩa với việc có thể gửi cả Tiếng Việt. Tin nhắn ở bước này sẽ được gửi lên GCM Server; (7) Sau khi GCM Server nhận được tin nhắn theo định dạng JSON ở bước 5, nó sẽ tiến hành gửi tới tất cả các máy trạm được đăng ký trong gói JSON này và gần như ngay lập tức các Client đều nhận được. Hình 2. Mô hình gửi/nhận tin nhắn sử dụng (GCM) ISSN 2354-0575 Journal of Science and Technology80 Khoa học & Công nghệ - Số 15/Tháng 9 - 2017 Như vậy với bước (1), (6), (7) xây dựng cho Server Side (CSDL, Webserver, WebService, Webform), bước (2), (3), (4), (5) xây dựng cho Client Side (Android Application) [6]. Sau khi thiết kế, xây dựng được Mobile App của Trang thông tin nội bộ của trường Đại học kinh tế quốc dân, App được đặt tên là Internal-NEU, chúng tôi đã sử dụng GCM xây dựng ứng dụng gửi thông báo tự động cho App Internal-NEU. Với tính năng này, người dùng/cán bộ công nhân viên của Trường (đã được cung cấp tài khoản truy cập vào trang nội bộ của Trường) chỉ cần cài đặt App Inter- nal-NEU trên điện thoại chạy hệ điều hành Android, thay bằng việc trước kia người dùng phải thường xuyên truy cập vào trang nội bộ của Trường để xem thông tin/thông báo, lịch tuần , thì App sẽ tự động thông báo cho người dùng biết mỗi khi có thông tin mới được cập nhật lên trang này. Các bước tiến hành cụ thể đã thực hiện như sau: – Tạo một Project tạo project trên developer của google: Trước tiên cần phải tạo Project trên https://console.developers.google.com trước để có được Sender Id và Application Id. Sau khi vào trang developer này và đăng nhập thì có giao diện như Hình 1, 2 và 3 (trong trường hợp google sẽ thay đổi nếu như có version mới). Chúng tôi sử dụng email của nhà phát triển để đăng ký nhận Sender Id và Application Id. Sau các bước thực hiện như trên chúng tôi đã nhận được Sender ID và Application ID. – Xây dựng CSDL phù hợp để lưu trữ Registration Id: Tạo cơ sở dữ liệu trong SQL Server với tên “dbGCM“ gồm 2 bảng, bảng TinTuc và bảng GCMRegistration. Bảng TinTuc mục đích để thêm danh sách tin tức tại máy Server, mỗi lần thêm Tin nó sẽ tự động thông báo cho toàn bộ máy Client. Bảng GCMRegistration dùng để lưu trữ các Registration Id của các thiết bị đăng ký thành công trên GCM Server. Ta cần tạo bảng này để lưu trữ lại toàn bộ Registration Id của các thiết bị để sử dụng cho việc thông báo hàng loạt ở các lần khác nhau. Thường các ID này mặc định được lưu trữ khoảng 4 tuần trên GCM Server. Bảng 2. Bảng TinTuc Tên cột Kiểu loại Ghi chú NewsID varchar(50) Mã tin tức, khóa chính Title nvarchar(1000) Tiêu đề tin tức IsDeleted int 1 là xác nhận, 0 là còn sử dụng Bảng 3. Bảng GCMRegistration Tên cột Kiểu loại Ghi chú RegNo int No (tự động tăng), khóa chính RegID nvarchar(1000) Mã Registration ID của thiết bị do GCM server gửi về DateCreate date Ngày tạo IsDeleted int 1 là xác nhận sọt rác, 0 là còn sử dụng – Tạo WebService để tương tác với 2 bảng dữ liệu trên (tạo Solution để nó chứa luôn 2 Project, Webservice và Desktop Application). Chúng tôi tạo solution có tên GCMSolution. Trong Project GCMSolution có tích hợp các trang quản trị lịch tuần, thông báo nội bộ, danh bạ điện thoại nội bộ. Chúng tôi đã thiết kế xây dựng một trang Web quản trị của trang thông tin nội bộ Trường Đại học kinh tế quốc dân đã chứa các thông báo nội bộ và lịch làm việc tuần Khi người quản trị up thông báo mới thì tiêu đề của thông báo mới sẽ được gửi lên GCM server của Google, sau đó GCM server của Google gửi trả lại các dòng tiêu đề trên nontification này cho các thiết bị di động mà đã cài đặt và đăng ký App thông tin nội Internal-NEU. 4. Kết luận Với việc nghiên cứu và triển khai GCM tích hợp vào hệ thống Mobile Apps cho hệ thống Trang thông tin nội bộ Trường đại học kinh tế Quốc dân không những chỉ mang lại nhiều tiện ích và trải nghiệm cho người dùng của hệ thống này mà còn mở ra một cách tiếp cận để áp dụng cho nhiều hệ thống ứng dụng khác. Chúng tôi đã nghiên cứu và áp dụng thành công dịch vụ GCM áp dụng cho việc xây dựng tính năng gửi tin nhắn tự động không mất phí của App chạy trên nền tảng Android. Với các giới thiệu và hướng dẫn cụ thể trong các phần trên sẽ là các gợi ý/ chỉ dẫn có ích cho việc ra quyết định hoặc triển khai xây dựng các App trang tin nội bộ của các Trường Đại học nói riêng v
Tài liệu liên quan