Xây dựng tính năng nhắn tin di động vào ứng dụng web của bạn

Học cách gửi và nhận tin nhắn từ máy chủ web

Tin nhắn di động, cụ thể là các dịch vụ tin nhắn văn bản (SMS - Short Message Service), là một kênh truyền thông quan trọng để tiếp cận người dùng. Tin nhắn cũng là một phần trọng tâm của những trải nghiệm di động người dùng. Tuy nhiên, việc thực hiện các ứng dụng nhắn tin di động là rất khó và đắt tiền do những rào cản về chi phí khi làm việc với các nhà cung cấp dịch vụ viễn thông. Bài viết này nhằm giúp nhận định lại những kiến thức cơ bản của tin nhắn di động, và cùng thảo luận về một số phương pháp tiếp cận kỹ thuật để giải quyết những khó khăn này. Sau bài viết này, bạn sẽ thấy tự tin hơn trong việc kết hợp các tin nhắn văn bản vào các ứng dụng của riêng bạn.

Michael J. Yuan, Giám đốc khoa học, Ringful Health

Ảnh của Michael YuanTiến sĩ Michael Yuan là một chuyên gia kỹ thuật nổi tiếng trong lĩnh vực công nghệ di động về điện toán doanh nghiệp và người dùng. Ông là tác giả của 5 cuốn sách về kỹ thuật phần mềm và đã xuất bản hơn 40 bài báo cho các tạp chí peer-reviewed và ngành nghề. Tiến sĩ Yuan là một người tiên phong trong lĩnh vực chăm sóc sức khỏe theo hướng người dùng. Công việc của ông tại Ringful Health đã được được phổ biến và được thừa nhận rộng rãi trên các phương tiện truyền thông quốc gia như Wall Street Journal, New York TimesLos Angeles Times.



13 06 2013

Các rào cản khi tiếp cận tin nhắn di động

Bản chất "đóng" của tin nhắn di động là một rào cản thật sự đối với các nhà phát triển. Tuy nhiên, cũng bởi vì những rào cản này mà các ứng dụng có thể nhắn tin di động lại có những lợi thế riêng biệt. Ví dụ, ban đầu Twitter chỉ là một công ty giúp người dùng chia sẻ tin nhắn—mỗi tin nhắn tweets chỉ cho phép tối đa 140 ký tự— và sau đó, dựa trên sự thành công của mình, Twitter đã xây dựng nên một nền tảng xã hội khổng lồ như ngày nay. Một ví dụ khác chính là Facebook, cũng đã ra đời sớm tính năng SMS (gửi tin nhắn đến FBOOK từ điện thoại).

Tin nhắn là một phần không thể thiếu trong các trải nghiệm di động. Chỉ trong năm 2010, chỉ tính riêng dân Mỹ, đã gửi và nhận 2.1 tỷ tin nhắn văn bản qua điện thoại di động. Còn trên toàn cầu, người ta ước tính số người sử dụng tin nhắn trên điện thoại di động đông hơn số người sử dụng email, điều này đã góp phần làm cho việc sử dụng tin nhắn trên điện thoại di động trở nên phổ biến nhất và trở thành kênh truyền thông hiệu quả nhất. Hơn nữa, so với các kênh truyền thông khác như email, thì tin nhắn trên điện thoại di động ít đi kèm với thư rác và khả năng người nhận đọc tin cao hơn so với việc phải kiểm tra email.

Tuy nhiên, không giống như email, tin nhắn trên điện thoại di động được xem như là một tiêu chuẩn Internet mở, và được chuyển qua các cơ sở hạ tầng viễn thông. Điều này khiến các dịch vụ tin nhắn di động trở nên khó khăn và tốn kém để phát triển. Trong bài này, tôi sẽ giới thiệu đến một vài kỹ thuật kết hợp khả năng nhắn tin di động vào ứng dụng của bạn nhưng với chi phí thấp, thậm chí miễn phí, mà vẫn mang lại hiệu quả.

Căn bản về nhắn tin di động

Thông báo "push" là gì

Với sự phát triển của dòng di động thông minh như iPhone và Android thì chúng có thể gửi tin nhắn trực tiếp với nhau thông qua mạng chuẩn TCP/IP và thông qua các nhà mạng. Những tin nhắn dạng này được gọi là tin nhắn push. Tin nhắn push được gửi từ các máy chủ Internet quản lý bởi Apple và Google. Những tin nhắn push được thiết kế từ bên dưới để giao tiếp với các ứng dụng. Chúng có thể gửi thông điệp, các file đa phương tiện, và dữ liệu đặc thù của ứng dụng như âm báo và dấu hiệu để hiển thị trên icon ứng dụng. Tin nhắn push là ý tưởng xuất sắc cho ứng dụng trên điện thoại thông minh, tuy nhiên chúng chưa phổ biến và sử dụng nhiều như cách nhắn tin thông qua nhà mạng di động.

SMS là kênh nhắn tin di động phổ biến nhất. Trên thực tế, tất cả các điện thoại di động đều có thể gửi và nhận tin nhắn, với tối đa 160 ký tự. Tùy theo một số "rào cản" khác nhau, tuy nhiên, giới hạn an toàn nhất cho tin nhắn di động là từ 140 ký tự.

Các dịch vụ tin nhắn đa phương tiện (MMS - Multimedia Messaging Service) là một hình thức nâng cao của tin nhắn văn bản (SMS) cho phép người dùng gửi và nhận hình ảnh, các đoạn phim ngắn, qua điện thoại. Giới hạn cho phép của dạng tin nhắn này ở mức tối đa là 300KB. Các dạng tin nhắn MMS cũng được hiển thị như là một dạng của SMS để báo hiệu cho người dùng, khi người dùng mở tin nhắn, điện thoại sẽ tự động truyền tải nội dung đa phương tiện thông qua một giao thức email chuẩn. MMS đặc biệt rất phổ biến trong giới trẻ, nhưng nhìn chung, độ thâm nhập vào thị trường vẫn còn thấp, một phần cũng là do các phương tiện truyền thông không thể tương thích được với các định dạng tải trọng khác nhau.

SMS và MMS thường được sử dụng cho các hình thức giao tiếp đồng đẳng (peer-to-peer), cho phép người sử dụng gửi tin nhắn cho nhau. Đối với các nhà phát triển ứng dụng, điều mà chúng tôi quan tâm là ở cách thức truyền tải các tin nhắn từ các ứng dụng. Trong thuật ngữ công nghiệp, cái chúng ta thường quan tâm đến là các dạng tin nhắn Mobile Terminate (MT) — là dạng tin nhắn được gửi từ một ứng dụng trực tiếp đến một thiết bị di động — và dạng tin nhắn Mobile Originated (MO) — tin nhắn sẽ được truyền tải từ một thiết bị di động đến thẳng một ứng dụng. Để thực hiện được cả 2 dạng tin nhắn loại này, các ứng dụng được chọn yêu cầu phải có sự tương thích với các máy chủ do các công ty viễn thông quản lý.


Gửi tin nhắn SMS và MMS miễn phí

Việc gửi một tin nhắn định dạng MT thông qua hình thức tin nhắn SMS hoặc MMS đến một số điện thoại nào đó thực sự rất đơn giản nếu bạn biết số điện thoại người nhận hoặc số kết nối không dây từ các nhà mạng. Hầu hết tất cả các nhà mạng không dây đều có cổng nhận email và truyền tải đến các thiết bị cầm tay dưới dạng tin nhắn MMS và SMS. Ví dụ, đối với các thuê bao của AT&T, bạn có thể thực hiện thao tác SMS bằng cách gửi email đến number@txt.att.net. AT&T sẽ tự động cắt các tin nhắn dài xuống còn đúng 140 ký tự và chuyển tiếp đến số điện thoại của người nhận.

Một tin nhắn SMS được chuyển đến từ phương thức email
Một tin nhắn SMS được chuyển đến từ phương thức email

Tương tự, các email có đính kèm hình ảnh cũng có thể được chuyển tiếp đến điện thoại dưới dạng tin nhắn MMS thông qua cổng MMS email của nhà mạng. Bảng 1 hiển thị danh sách các nhà viễn thông không dây chính ở Mỹ cho các dịch vụ SMS và MMS. Thay thế từ "number" trong địa chỉ email bằng số điện thoại 10 chữ số của người nhận (vd : 51255 51234@txt.att.net).

Bảng 1. Cổng email SMS và MMS của các nhà mạng di động tại Mỹ
Nhà mạngCổng SMSCổng MMS
AT&Tnumber@txt.att.netnumber@mms.att.net
Verizonnumber@vtext.comnumber@vzwpix.com
T-Mobilenumber@tmomail.netnumber@tmomail.net
Sprintnumber@messaging.sprintpcs.comnumber@pm.sprint.com
Virgin Mobilenumber@vmobl.comnumber@vmpix.com

Phương pháp này rất hữu ích trong việc gửi những thông điệp mang tính chất nhắc nhở, nhưng khi đối với hầu hết các trường hợp sử dụng khác, phương pháp này lại mang đến những hạn chế nhất định:

  • Tin nhắn đôi khi lại đến từ những số điện thoại ngẫu nhiên với những định dạng sai. Điều này thật không chuyên nghiệp chút nào.
  • Người nhận sẽ không thể trả lời tin nhắn hoặc gửi bất kỳ thông tin nào ngược trở lại ứng dụng của bạn. Điều này sẽ làm hạn chế rất nhiều đến các ứng dụng khác, kể cả những ứng dụng thành công nhất như Twitter và American Idol.
  • Khi tin nhắn đến từ các số điện thoại khác nhau, người sử dụng không thể đánh dấu được những số điện thoại này để liên kết chúng với các ứng dụng.
  • Bạn cần phải yêu cầu người sử dụng cung cấp thông tin về nhà mạng mà bạn đã đăng ký để có thể chọn dùng đúng cổng email.

Để có được sự tương tác một cách thuận lợi với người sử dụng, bạn cần gửi và nhận tin nhắn từ một số điện thoại nhất định mà được đăng ký dịch vụ. Vì đó chính là cách tốt nhất để hoàn chỉnh quy trình tin nhắn trên di động.


Sử dụng Shortcode

Chắc hẳn rằng bạn đã từng tiếp xúc với shortcode hàng ngày. Chúng là một dãy có 5 chữ số mà bạn nhìn thấy trong các nhà hàng, tại các sự kiện thể thao, hoặc tại các buổi rao bán bất động sản. Người ta sẽ hỏi bạn một dãy các chữ số như "text 12345" chỉ để ghi nhận thông tin đơn thuần hoặc để nhận lấy những coupon khuyến mãi, v.v.... Shortcode được quản lý bởi "các tập hợp tin nhắn" mang tính chất đại diện cho các công ty viễn thông. Các tập hợp chính ở Mỹ bao gồm mBlox, Sybase 365, và những ứng dụng khác. Bạn có thể đăng ký một shortcode trong số các tổ hợp này, và người ta sẽ cung cấp cho bạn một dịch vụ API dựa trên HTTP cho phép bạn gửi tin nhắn thông qua shortcode của bạn tới bất kỳ số điện thoại nào (MT), và cũng cho phép bạn nhận tin nhắn thông qua bất kỳ shortode nào (MO). Nghe có vẻ đơn giản, nhưng sử dụng shortcode theo cách này cũng gặp không ít rào cản:

  • Đầu tiên, Chi phí cho việc sử dụng các shortcode chuyên dụng là rất cao. Chi phí lên đến hàng ngàn đô la mỗi tháng, cộng thêm một khoản phí đăng ký và phí khi sử dụng một tin nhắn.
  • Thứ hai, Hệ thống shortcode được đặt dưới sự quản lý của Hiệp hội tiếp thị di động (MMA - Mobile Marketing Association). Hiệp hội này yêu cầu tất cả các ứng dụng trước khi đưa vào sử dụng phải được kiểm tra kỹ. Quá trình này rất tốn kém và chiếm nhiều thời gian.

Tuy nhiên, cũng rất may mắn, là hiện đã có những công ty cung cấp dịch vụ "chia sẻ shortcode", cho phép người dùng có thể tận dụng được hết các tiện ích với chi phí thấp. Đứng đầu trong dịch vụ này là nhà cung cấp TextMarks. TextMarks sở hữu số shortcode rất dễ nhớ là: 41411. Kể từ khi nó được dùng để chia sẻ cho nhiều ứng dụng, thì mỗi ứng dụng được phân biệt thông qua một từ khóa. Ví dụ, khi tôi đăng ký một từ khóa conf với TextMarks, và tạo một đường URL gọi lại cho từ khóa đó (xem Hình 2). Đường link URL có thể chứa các khuôn mẫu những thành phần của tin nhắn SMS đến. Ví dụ, \p chỉ ra số điện thoại của người gửi tin nhắn, và \0 chỉ ra nội dung tin nhắn theo từ khóa.

Đăng ký từ khóa và lời gọi URL trên TextMarks.
Đăng ký từ khóa và lời gọi URL trên TextMarks.

TextMarks sẽ chuyển tiếp các tin nhắn bắt đầu bằng CONF đến đường link URL. Ví dụ, nếu người dùng nhắn tin với nội dung "conf Michael Jack" đến số 41411 từ số điện thoại di động 51255 51234, thì đường link URL của tôi sẽ nhận một yêu cầu GET như thế này:

Liệt kê 1. Mẫu yêu cầu GET
http://app.ringful.com/conf?
    attendees=Michael+Jack&
    phonenumber=15125551234

Ứng dụng sẽ tự động kiểm soát các yêu cầu này. Nó có thể phân tích cú pháp tin nhắn, tiết kiệm thời gian thâm nhập vào hệ thống cơ sở dữ liệu, và sau đó tạo ra một phản hồi ngược trở lại người gửi tin nhắn. Nội dung phản hồi HTTP từ đường link URL sẽ gửi trả về người dùng như một dạng tin nhắn trả lời.. Điều này cũng giúp cho quy trình xây dựng các ứng dụng SMS được tiến hành dễ dàng, đáp ứng được những yêu cầu từ phía người dùng (ví dụ, người dùng có thể thực hiện việc trả lại phiếu giảm giá cho một nhà hàng hoặc thảo luận về giá bán một căn nhà).

Khi văn bản đi cùng với từ khóa, người sử dụng sẽ được đăng ký với cương vị là một thuê bao sử dụng riêng từ khóa đó. Cùng với chức năng API, TextMarks cũng cho phép người dùng gửi tin nhắn đến tất cả các thuê bao cùng một lúc tại một thời điểm hoặc bất cứ lúc nào. Các cuộc gọi được thực hiện bằng API sẽ tự động gửi một thông điệp đến các thuê bao kèm với từ khóa riêng của bạn:

Liệt kê 2. API gửi tin nhắn đến tất cả thuê bao theo từ khóa
POST TO: http://dev1.api2.textmarks.com/GroupLeader/broadcast_message/
Parameters:
    auth_user=YOUR_USERNAME
    auth_pass=YOUR_PASSWORD
    api_key=API_KEY_FROM_TEXTMARKS
    tm=YOUR_KEYWORD
    msg=The+message+to+send+out

Cuộc gọi sau đây sẽ thực hiện việc gửi một tin nhắn đến một thuê bao duy nhất theo từ khóa:

Liệt kê 3. API gửi tin nhắn đến một thuê bao theo từ khóa
POST TO: http://dev1.api2.textmarks.com/GroupLeader/send_one_message/
Parameters:
    auth_user=YOUR_USERNAME
    auth_pass=YOUR_PASSWORD
    api_key=API_KEY_FROM_TEXTMARKS
    tm=YOUR_KEYWORD
    to=RECIPIENT_PHONE_NUMBER
    msg=The+message+to+send+out

Mặc dù TextMarks rất hữu ích, nhưng vẫn còn khá xa lạ với người dùng khi phải nhớ các tiền tố của từ khóa đi kèm mỗi khi gửi tin nhắn. Ngoài ra, bạn cũng không thể nhắn các tin nhắn dạng MT cho những ai đã không nhắn tin kèm từ khóa của bạn (có nghĩa là, không phải là thuê bao). Khái niệm chung về Shortcode và từ khóa (keywords) được thiết kế cho những hệ thống gửi tin nhắn quy mô lớn, trái ngược với nhu cầu tương tác một-một có trong nhiều ứng dụng. Đối với tương tác một-một, Longcode (mã dài) có thể là lựa chọn tốt và kinh tế nhất.


Sử dụng Longcode

Thuật ngữ "long code" chỉ đến những số điện thoại có 10 chữ số. Thay vì phải thuê "shortcodes" với chi phí hàng ngàn đô la mỗi tháng, bạn có thể thuê một số điện thoại mà bạn sử dụng thường xuyên với giá chỉ 1$ cho mỗi tháng (hoặc thậm chí là miễn phí như trường hợp của Google Voice). Vì những số điện thoại này đều là những con "số ảo". Và bạn có thể thực hiện việc nhận và gửi tin nhắn trên điện thoại di động thông qua những con "số ảo" này.

Twilio không chỉ đơn thuần là tin nhắn di động

Twilio API cũng cho phép bạn thực hiện và nhận các cuộc điện thoại bằng giọng nói thông qua các số ảo; nó hỗ trợ Skype - như giao thức VoIP. Truy cập vào website cua Twilio và các dữ liệu về API để biết thêm thông tin chi tiết (Xem phần Tài nguyên để tìm đường link).

Twilio là một nhà cung cấp hàng đầu về các dịch vụ có sử dụng "long-code". Sử dụng Twilio API, bạn có thể nhận và gửi tin nhắn đến bất kỳ số điện thoại nào, kể cả số quốc tế

Twilio cung cấp một giao diện quản trị cho phép người dùng quản lý được nhiều số ảo. Chỉ từ $1 USD mỗi tháng, bạn có thể chọn lấy một ứng dụng để sử dụng mà không cần phải đòi hỏi người dùng phải sử dụng bất kỳ loại từ khóa nào để phân biệt giữa các ứng dụng. Twilio chỉ yêu cầu khoản phí là 1 cent per SMS sent or received via their APIcho mỗi tin nhắn được gửi đi hoặc nhận thông qua API.

Dịch vụ web Twilio API có giao diện đẹp và dễ sử dụng. Twilio cũng tiếp tục đơn giản hóa ứng dụng này bằng cách cung cấp SDK cho các nhà phát triển với nhiều ngôn ngữ lập trình khác nhau. Dưới đây là một vài ví dụ xây dựng trên SDK với ngôn ngữ Java. Liệt kê 4 hiển thị cách gửi tin nhắn đến một số điện thoại di động.

Liệt kê 4. Gửi tin nhắn đế số điện thoại di động bất kỳ thông qua Twilio API
public static void sendSms (String from, String to, 
        String msg) throws Exception {
    TwilioRestClient client = 
        new TwilioRestClient YOUR_API_KEY, null);
    String path = "/2010-04-01/Accounts/"+
        client.getAccountSid()+"/SMS/Messages";

    Map<String, String> vars = 
        new HashMap <String, String> ();
    vars.put("From", from);
    vars.put("To", to);
    vars.put("Body", msg);

    TwilioRestResponse tresp = 
        client.request(path, "POST", vars);
    if (tresp.isError()) {
        throw new Exception ("Twilio response error: " 
            + tresp.getResponseText());
    }
}

Đối với các tin nhắn dạng MO, Twilio cũng hoạt động giống như TextMarks: nó chuyển tiếp tin nhắn đến đường link URL đã được đăng ký trong bảng quản trị, và phản hồi nội dung dưới dạng HTTP cho người dùng từ link URL đó. Ví dụ, nếu một người dùng soạn tin "Hello World" đến số điện thoại của tôi, URL từ máy tôi sẽ nhận một lệnh GET dạng HTTP như sau:

http://my.callback.com/process?
    From=5125551234&To=3215554567&Body=Hello+World

Lưu ý rằng lời gọi Twilio có một tham số To để xác định thông điệp từ số điện thoại người nhận. Điều này là hoàn toàn cần thiết bởi vì một tài khoản Twilio duy nhất có thể được dùng để đăng ký cho nhiều số ảo. Servlet của tôi tại địa chỉ URL đều có thể tự xử lý các tin nhắn đến và xuất ra phản hồi.


Đối với các tin MMS?

Cho đến thời điểm hiện tại, ngoại trừ các cổng email MMS, còn lại tất cả các dịch vụ mà tôi đã thảo luận đều xử lý được sự tương tác với SMS. Các tin nhắn MMS vốn vẫn luôn phức tạp hơn các tin dạng SMS, bởi vì nội dung của nó cần tương thích với điện thoại trên mỗi nhà mạng. Ví dụ, mỗi điện thoại đều có độ phân giải màn hình khác nhau và định dạng video cũng khác nhau, và mỗi hệ thống mạng cũng có những kích thước tối đa cho một tin nhắn khác nhau.

Cái khó của tin nhắn MMS còn được thể hiện qua việc ngay cả Twitter cũng chỉ mới bắt đầu hỗ trợ MMS một cách giới hạn cho các nhà mạng ở Mỹ vào tháng 9/2011— vài năm sau khi định dạng tin nhắn SMS đã đạt được những thành công nhất định..

May mắn thay, có những công ty mới như Hook Mobile đang phát triển và tiếp thị các dịch vụ web mới hỗ trợ tin nhắn MMS ngoại mạng. MMS API của Hook Mobile vẫn chưa được triển khai một cách rộng rãi (bạn vẫn phải đăng ký làm đối tác), tuy nhiên, dịch vụ này cũng rất thú vị để trải nghiệm!

Đối với những người sử dụng các loại điện thoại thông minh, tin nhắn "push" lại là một thay thế hấp dẫn cho MMS, tôi sẽ đề cập đến loại dịch vụ "push" này ở một bài viết khác.

Tài nguyên

Học tập

  • CTIA là một tổ chức có thẩm quyền quyết định việc sử dụng tin nhắn điện thoại di động và số liệu thống kê.
  • Các nguyên tắc quảng cáo di động MMA là phương châm của ngành công nghiệp về các phương pháp và quy trình được cho phép để thu hút khách hàng thông qua các chiến dịch tin nhắn di động.
  • TextMarks là nhà cung cấp hàng đầu các giải pháp tin nhắn SMS chi phí thấp dựa trên shortcode của họ 41.411.
  • Hook Mobile là nhà cung cấp hàng đầu các giải pháp MMS liên mạng.

Lấy sản phẩm và công nghệ

  • Twilio cung cấp các API giọng nói và SMS dựa trên Longcode thông qua API web service dễ sử dụng.

Thảo luận

Bình luận

developerWorks: Đăng nhập

Các trường được đánh dấu hoa thị là bắt buộc (*).


Bạn cần một ID của IBM?
Bạn quên định danh?


Bạn quên mật khẩu?
Đổi mật khẩu

Bằng việc nhấn Gửi, bạn đã đồng ý với các điều khoản sử dụng developerWorks Điều khoản sử dụng.

 


Ở lần bạn đăng nhập đầu tiên vào trang developerWorks, một hồ sơ cá nhân của bạn được tạo ra. Thông tin trong bản hồ sơ này (tên bạn, nước/vùng lãnh thổ, và tên cơ quan) sẽ được trưng ra cho mọi người và sẽ đi cùng các nội dung mà bạn đăng, trừ khi bạn chọn việc ẩn tên cơ quan của bạn. Bạn có thể cập nhật tài khoản trên trang IBM bất cứ khi nào.

Thông tin gửi đi được đảm bảo an toàn.

Chọn tên hiển thị của bạn



Lần đầu tiên bạn đăng nhập vào trang developerWorks, một bản trích ngang được tạo ra cho bạn, bạn cần phải chọn một tên để hiển thị. Tên hiển thị của bạn sẽ đi kèm theo các nội dung mà bạn đăng tải trên developerWorks.

Tên hiển thị cần có từ 3 đến 30 ký tự. Tên xuất hiện của bạn phải là duy nhất trên trang Cộng đồng developerWorks và vì lí do an ninh nó không phải là địa chỉ email của bạn.

Các trường được đánh dấu hoa thị là bắt buộc (*).

(Tên hiển thị cần có từ 3 đến 30 ký tự)

Bằng việc nhấn Gửi, bạn đã đồng ý với các điều khoản sử dụng developerWorks Điều khoản sử dụng.

 


Thông tin gửi đi được đảm bảo an toàn.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=70
Zone=Nguồn mở
ArticleID=933894
ArticleTitle=Xây dựng tính năng nhắn tin di động vào ứng dụng web của bạn
publish-date=06132013