Gởi tin nhắn từ Excel (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

levanduyet

Hãy để gió cuốn đi.
Thành viên danh dự
Tham gia
30/5/06
Bài viết
1,798
Được thích
4,706
Giới tính
Nam
Chào các bạn,
Chúng ta có một người bạn, cũng "ham ham" cái VBA viết chương trình gởi tin nhắn từ Excel.
http://www.sfdp.net/my_softwares/software_library/index.html
Xin cám ơn lòng nhiệt thành của anh bạn này!

Tôi sửa lại thành Add-In gởi các bạn dùng.
Để sử dụng được Add-In này các bạn phải có tài khoản của Vinaphone (www.vinaphone.com.vn), phải có kết nối internet.

Một ngày bạn chỉ được 10 tin nhắn miễn phí mà thôi. Tiết kiệm được một ít :)


Lê Văn Duyệt
 

File đính kèm

Lần chỉnh sửa cuối:
Cũng ngộ quá ha! Thay gì vào trang Vinaphone đễ gữi (vì đàng nào cũng phải kết nối Internet).. vậy mà ko chịu đâu.. cứ bắt Excel ôm đồm nhiều thứ cho nặng thêm... hi.. hi... Cũng hay! thử xem... Dù sao cũng cám ơn ông bạn "ham ham" của anh Duyệt... Nghiên cứu thì vô cùng tận...
Ah, quên.. anh Duyệt cho hỏi: Tôi thấy trong khung đăng nhập có cho phép chọn nhà cung cấp dịch vụ là Viettel, vậy tài khoản Viêttel có xài dc ko? Và mật khẩu là cái gì? Có phải chính là mật khẩu khi ta đăng ký trên Vina portal ko?
ANH TUẤN
 
Lần chỉnh sửa cuối:
Upvote 0
Còn Mobifone thì sao, tôi đã thử thêm BaseURL(3) cho mobi (đầu số 8490*) nhưng không được, có phải do cú pháp truy vấn hệ thống CSDL Mobi khác so với Vina và VT?
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Hey, chương trình này có thể gửi tin nhắn của Vina, Viettel, còn của Mobi thì hình như bác "ham ham" chưa có tài khoản mobi nên chưa kết nối, cái này dùng rất hay
Tks bác "ham ham" đã chia sẻ
 
Upvote 0
Các bạn tham khảo tại đây:

http://www.ddth.com/showthread.php?p=844907#post844907

Paulsteigel đã viết:
Do không thể hiển thị được ảnh trên bài viết, nên các bạn có thể đến trang web của tôi tại: http://www.sfdp.net/home-187.html để đọc bài có hình ảnh minh họa.

Chúng ta đều biết hiện tại đa số các nhà cung cấp dịch vụ điện thoại di động đều cung cấp dịch vụ gửi bản tin ngắn SMS qua điện thoại di động. Vài năm gần đây, người ta còn đưa dịch vụ này lên Web và cho phép người dùng có thể gửi tin nhắn thông qua các trình duyệt.

Có lẽ sẽ không có nhiều vấn đề lắm nếu bạn là người thường xuyên truy cập Web và không ngại việc truy cập vào trang của nhà cung cấp dịch vụ và gửi tin nhắn. Với một số người, công việc bận rộn kèm theo những lý do khác, họ hiếm khi truy cập vào web để nhắn tin và thay vào đó là kỳ cạch bấm máy.

Vậy các bạn nằm trong nhóm nào?

Ngày nay, đa phần các văn phòng đều sử dụng Internet thường trực và việc có một tiện ích cho phép gửi và nhận tin nhắn bằng vài thao tác quả là thật có ý nghĩa. Chỉ mới gần đây (2005) tôi mới biết đến dịch vụ gửi tin nhắn qua trang Web của Vinaphone và thời gian đầu, cũng như các bạn thuộc nhóm 2, tôi ít khi sử dụng tính năng này. Ý tưởng về một công cụ nho nhỏ cho phép gửi tin nhắn trực tiếp từ máy tính đã nảy sinh từ một lần thiết kế chương trình tự động cập nhật địa chỉ IP của Modem ADSL tại văn phòng. Khi đó tôi phải làm việc rất nhiều với các thuật ngữ và công cụ xa lạ Winhttp, Wininet, POST, GET. Nhưng chặng đường cuối cùng đến phiên bản dầu tiên viết bằng VB cũng không quá khó khăn như tôi tưởng ban đầu.

Không ngoài mục đích chia sẻ kinh nghiệm và cách tiếp cận với các bạn, tôi mong những kiến thức nhỏ bé trong bài viết này sẽ giúp ích phần nho nhỏ nào đó cho các bạn quan tâm.

1. Cách tiếp cận

Các bạn đều hiểu rằng để gửi được tin nhắn, chúng ta phải truy nhập được vào máy chủ của Vinaphone, bạn phải gõ đúng tên và mật khẩu, nhấn nút Truy nhập và hệ thống cho phép truy cập.

Sau đó chúng ta phải chuyển sang chế độ gửi tin nhắn và gõ vào số cần gửi đến, tin nhắn, kiểu tin nhắn và nhấn nút gửi, hệ thống sau đó sẽ thông báo về kết quả (gửi thành công hay không).

Và chương trình gửi tin nhắn của tôi hoạt động theo cách đúng như vậy.

2. Phân tích vấn đề

* Module Truy nhập

Màn hình truy nhập
Màn hình truy nhập
Module này chịu trách nhiệm truy nhập vào trang web của nhà cung cấp, việc bạn cần phải làm ở đây là:

+ Tạo kết nối với máy chủ

+ Gửi các thông tin xác thực để tạo phiên làm việc.

Điều đầu tiên bạn cần nắm được đó là cách thức thực hiện qua giao diện web, chúng ta hãy xem hình bên và chỉ chú ý đến phần khai báo của người dùng trên trang chủ. Để đơn giản, tốt nhất chúng ta nên dùng trình duyệt Mozilar Firefox. Hãy chọn phải chuột và xem mã nguồn của trang Web. Bạn tìm đến đoạn có chứa mã của phần truy nhập trên bằng cách tìm đến phần có chữ “Quên mật khẩu” và di chuyển chuột lên cao để tìm đến đoạn mã <form>. Đoạn văn bản nằm giữa 2 khóa <Form> và </form> chính là mã thực hiện cho module truy nhập.
Mã nguồn trang Web
Mã nguồn trang Web

Bây giờ ta quan tâm đến lệnh thực thi và các tham số. Có 2 tham số chính người dùng cần cung cấp đó là số thuê bao và mật khẩu. Mã hành động cho động tác nhấn nút truy cập sẽ nằm sau từ Action trong thẻ Form, các hộp để gõ tham số sẽ có dạng texbox và chúng ta quan tâm đến chúng trong mã trang web dưới dạng input và tên tham số sẽ là name.

Với những đặc điểm này, ta có thể thấy tên tham số là userID và password, mã thực hiện là

https://www.vinaphone.com.vn/login.do;

jsessionid=GnjnTnsvnMQSDsSh1sGs7vkYGJB72f5QpL24KSl L6FW7GMyT2pPQ!-826937979

Đoạn https://www.vinaphone.com.vn/login.do chỉ ra địa chỉ tập tin thực thi nằm tại server. Chữ https:// để chỉ ra rằng, phiên truy cập đòi hỏi phải thực thi qua giao thức an ninh cao có mã hóa (ssl) và đoạn

“jsessionid=GnjnTnsvnMQSDsSh1sGs7vkYGJB72f5QpL24 KSlL6FW7GMyT2pPQ!-826937979”
chính là Cookie hoặc là mã của phiên làm việc mà máy chủ tạo ra cho trình duyệt của bạn.

Tôi sẽ cố gắng không đi sâu giải thích về các thuật ngữ đặc thù của ngôn ngữ web song chúng ta hãy dừng lại ở đó.

Các bạn có thể chưa biết song chúng ta hãy giải thích cơ chế một chút. Khi bạn gõ vào các thông tin như số điện thoại, mật khẩu và nhấn mũi tên để truy cập, trình duyệt của bạn sẽ gửi thông tin đó lên máy chủ, và hành động này được gọi là hành động POST. Nguyên tắc của một đoạn mã POST thường có dạng:

https://www.vinaphone.com.vn/login.d...&password=yyyy

http://[địa chỉ trang web]/[tập tin thực thi]?[tham số 1]=xxx&[tham số 2]=yyyy

Trong đó phân cách giữa các tham số được thể hiện bằng dấu &, tên tham số và giá trị tham số.

LVD
 
Upvote 0
Paulsteigel đã viết:
Các bạn sẽ rất hay thấy những dạng biểu hiện như trên trong thanh Address bar của trình duyệt. Đểu biểu diễn đoạn thông điệp truy nhập vào trang web Vinaphone, ta có thể viết lại như sau:

https://www.vinaphone.com.vn/login.do;

jsessionid=GnjnTnsvnMQSDsSh1sGs7vkYGJB72f5QpL24KSl L6FW7GMyT2pPQ!-826937979?userId=xxxxxxxx&password=yyyy

Đã truy nhập xong
Đã truy nhập xong
Bạn hãy đưa số của mình, mật khẩu truy cập để thay thế cho xxxx, yyyy và dán chúng vào thanh Address bar, nhấn Enter. Điều kỳ diệu sẽ diễn ra.

Bạn đã truy cập thành công vào Vinaphone.

Giờ chúng ta cần phải biết khi nào thì truy nhập là thành công, với giao diện web thì quá dễ vì bạn có thể thấy ngay, nhưng với một ứng dụng thứ ba, việc này khó hơn một chút.

Lô gic của tôi ở đây là: kiểm tra thông tin với yếu tố chỉ xuất hiện trong trang đã truy cập. Như vậy chữ: “Thông tin cá nhân” có vẻ là ổn nhất. Bạn cũng có thể tìm ra một chữ nào khác và phải đảm bảo chắc chắn là chúng không hiển thị tại màn hình chưa truy cập.

Trong trường hợp này tôi chọn phần mã thực hiện và cách làm cũng giống như trên. Các bạn cần chú ý đến mã thực thi của lệnh “Thông tin cá nhân” nhé”, dòng lệnh đó là:
Gửi tin nhắn
Gửi tin nhắn

/personal/myAccount.do

Phần việc với Module truy nhập đã kết thúc, bây giờ chúng ta chuyển sang phần tiếp theo.

* Module Gửi tin nhắn

Trong phần này, chúng ta cần biết những vấn đề sau:

(i) Lệnh thực thi gửi tin nhắn đi, (ii) Danh sách và thể thức các tham số và (iii) Mã xác nhận tin đã gửi đi được hay chưa.

Tương tự cách làm như trên, tôi tìm được các tham số đó như ở dưới đây (sau khi nhấn vào chế độ gửi tin nhắn)

Lệnh thực thi:

/messaging/sms/sendSms.do

Tham số:

countryCode: Mã quốc gia. bSubs: Số điện thoại cần gửi đến. message: Nội dung tin nhắn và note:Loại hình tin nhắn.

Và thể thức lệnh gửi tin nhắn là

http://www.vinaphone.com.vn/messagin...ountryCode=84& bSubs=8491xxxxxxx&message=abvdeff&note=xxx

Chú ý về tham số Note
Chú ý về tham số Note
Các tham số như mã quốc gia, số điện thoại và nội dung tin gửi thì không có vấn đề gì, riêng tham số note, nếu mở mã nguồn phần gửi tin ở hình trên ta thấy chúng có dạng như hình bên:

Đây là dạng phím radio, nên khi ta bấm nút nào, giá trị trả về cho lựa chọn sẽ là của phím đó. Vậy 2 giá trị trả về là FREE và HAS_FEE.

Vậy lệnh gửi tin nhắn trên cần có phần note=xxx phải là note=FREE hoặc note=HAS_FEE. Cần chú ý phải là chữ hoa vì trang web dùng phần mềm Java nên chữ hoa được hiểu khác chữ thường, không giống với Visual Basic.

Bây giờ bạn thử gửi một tin nhắn hợp lệ và màn hình hiển thị ngay sau khi gửi thành công sẽ như hình bên:

Tin nhắn đã được gửi
Tin nhắn đã được gửi
Sau đó màn hình chuyển ngay về chế độ gửi tin nhắn do đặc tính redirect của trình duyệt.

Vậy thông tin để xác nhận tin nhắn đã được gửi đi là

Tin nhắn đã được gửi tới số máy xxxxx

Bây giờ chúng ta đã hoàn thành phần phân tích vấn đề.

1. Thiết kế chương trình

Mã kết nối
Mã kết nối
Để có thể thao tác được các công việc đã nêu, chúng ta cần có những module giải quyết được từng nội dung nêu trên và chúng là:

(i) Module kết nối với máy chủ, (ii) Module xử lý lệnh truy cập, gửi tin nhắn

1. Module kết nối với máy chủ

Để kết nối được với máy chủ người ta có thể dùng nhiều cách, dùng điều khiển Internet Explorer hay cũng có thể dùng các hàm API hoặc điều khiển có sẵn của windows.

Trong bài này tôi xin giới thiệu cách cuối cùng đó là điều khiển của windows, và tôi chọn bộ thư viện WinHttpRequest.

Bộ điều khiển này cho phép chúng ta thiết lập kết nối với máy chủ và lấy các phản hồi của máy chủ đề xử lý.

Để tiện theo dõi các bạn theo dõi phần thủ tục như hình bên.

Tôi đặt thủ tục kết nối và xác thực kết nối bằng một lớp Class để có thể sử dụng lại cũng như duy trì phiên làm việc. Thủ tục thực hiện việc kết nối và gửi dữ liệu là GetUrlSource với tham số truyền vào là địa chỉ cần truy cập, kết quả, hàm trả về đoạn văn bản mà trang web gửi về.

1. Module xử lý lệnh truy cập và gửi tin nhắn

Nhiệm vụ của Module này là tạo ra chuỗi thông tin để gửi đi vì thế chúng khá đơn giản, bạn có thể tham khảo trong tập tin gửi kèm nhé.

Tuy nhiên, có một lưu ý về mẹo tôi đã áp dụng, cụ thể bạn có thể xem phần này

Khai báo kiểu Nhà cung cấp
Khai báo kiểu Nhà cung cấp

Khai báo kiểu
Ví dụ về Khai báo kiểu Nhà cung cấp
Ví dụ về Khai báo kiểu Nhà cung cấp

Khai báo kiểu mẫu cho Vinaphone

Và chú ý thủ tục xử lý chuỗi sau đây. Trong thủ tục này tôi sử dụng các chuỗi đặc trưng để tiện thay thế và bạn có thể sử dụng mẫu đó với các nhà cung cấp khác. Tuy nhiên, cũng có thể lưu trữ những chuỗi này trong một tập tin mẫu chẳng hạn setting.ini hoặc tôi sẽ bổ sung một thủ tục tự cập nhật, sau này mỗi khi có thể phát triển cho một nhà cung cấp mới, phần mềm sẽ tự kiểm tra và đưa về mẫu cấu hình chuẩn.

Thủ tục lọc chuỗi gửi thông điệp POST
Thủ tục lọc chuỗi gửi thông điệp POST
Đến đây chắc các bạn đã hiểu được phần nào cách tiếp cận của công cụ. Hiện tại tôi đang có 2 phiên bản VBSMS viết bằng VB và có thể sử dụng độc lập và ExcelSMS dùng trong Excel.

1. Cơ hội mở rộng

Có nhiều hướng phát triển cho phần mềm này, song chúng ta phụ thuộc rất nhiều vào nhà cung cấp. Nếu họ sẵn sàng hợp tác và cho phép chúng ta khai thác thêm các ứng dụng API khác, chắc chắn cơ hội mở rộng tính năng cho phần mềm sẽ rất rộng.

Hiện tại, nếu có thời gian chúng ta hoàn toàn có thể bổ sung được những tính năng sau:

* Bộ đếm số thông điệp miễn phí
* Bộ quản lý địa chỉ, tin nhắn, kích hoạt các tính năng khác như thêm, bớt dịch vụ.

Nếu được nhà cung cấp hợp tác, chúng ta hoàn toàn có thể biến máy tính của mình thành một chiếc máy gửi và nhận tin nhắn (hiện tại không nhận được tin nhắn).

Xin cảm ơn các bạn đã chú ý.

Lê Văn Duyệt
 
Upvote 0
Chào các bạn,
Chúng ta có một người bạn, cũng "ham ham" cái VBA viết chương trình gởi tin nhắn từ Excel.
http://www.sfdp.net/my_softwares/software_library/index.html
Xin cám ơn lòng nhiệt thành của anh bạn này!

Tôi sửa lại thành Add-In gởi các bạn dùng.
Để sử dụng được Add-In này các bạn phải có tài khoản của Vinaphone (www.vinaphone.com.vn), phải có kết nối internet.

Một ngày bạn chỉ được 10 tin nhắn miễn phí mà thôi. Tiết kiệm được một ít :)


Lê Văn Duyệt

Anh Duyệt sao em nhập số điện thoại của em thì nó không được, chỉ chọn được 2 số điện thoại của chương trình thôi
 
Upvote 0
Hôm nay đọc đến bài này thấy rất hay em nhưng các AC cho hỏi sao em sao nó báo thế này nhỉView attachment 162960
 

File đính kèm

  • Untitled.gif
    Untitled.gif
    17.1 KB · Đọc: 35
Lần chỉnh sửa cuối:
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom