2011-01-08 64 views
9

Tôi có một dự án sắp tới nơi tôi cần gửi và nhận tin nhắn thông qua một nhà khai thác mạng di động cụ thể, chỉ cung cấp giao diện SMPP. Toàn bộ dự án sẽ là một trang web được lưu trữ. Tôi đã đọc khá nhiều, nhưng tôi vẫn chưa hiểu những gì thực sự cần thiết từ phía tôi để sử dụng giao thức.Nhận SMS qua SMPP

Ứng dụng của tôi có nên cố gắng duy trì kết nối liên tục với smpp không? Tôi có thể kết nối, gửi tin nhắn và ngắt kết nối không?

Đang nhận tin nhắn dựa trên push hoặc pull?

Cảm ơn sự giúp đỡ.

+0

Để biết thông tin về cách làm việc với Esme SMSC, và ràng buộc và hoạt động unbind bạn có thể kiểm tra ở đây http://blog.ektel.com .np/2012/01/sms-messages-giữa-esme-server-và-smsc-server/ tôi hy vọng nó sẽ giúp –

Trả lời

4

Bạn đang nói rằng bạn muốn nhận tin nhắn, do đó ít nhất cần có bind_receiver. Bởi vì bạn không biết khi nào thư sẽ đến, bạn sẽ phải liên tục kết nối, thay vì ngắt kết nối sau mỗi sự kiện.

Liên quan đến câu hỏi của bạn về "đẩy hoặc kéo" tùy thuộc vào cách bạn giải quyết vấn đề đầu tiên. Nếu bạn có thể xây dựng một giải pháp được kết nối liên tục, kết quả sẽ là một cú đẩy (người vận chuyển sẽ đẩy nó đến bạn ngay sau khi họ nhận được tin nhắn). Nếu (vì một lý do nào đó) bạn không thể duy trì kết nối liên tục, bạn sẽ kết thúc việc xây dựng một cơ chế kéo. Bạn sẽ kết nối với nhà cung cấp dịch vụ bao giờ hết X giây để xem họ có tin nhắn đang chờ bạn hay không.

tôi cần phải làm nổi bật 2 cạm bẫy mặc dù:

  1. Một số hãng trên thế giới, không lưu trữ hoặc thậm chí chấp nhận tin nhắn nếu bạn không kết nối, do đó, tùy thuộc vào nhà cung cấp bạn tương tác với bạn có thể buộc phải sử dụng kết nối liên tục.
  2. Hầu hết các nhà cung cấp dịch vụ không cho phép bạn mở và đóng các kết nối liên tiếp nhanh chóng. Khi bạn ngắt kết nối, bạn không thể kết nối lại trong một khung thời gian của X giây.

Do đó, kết nối liên tục thực sự là cách để thực hiện. Ngoài ra, bạn có thể xem xét một công ty như Nexmo, công cụ này sẽ cung cấp cho bạn một Cuộc gọi HTTP mỗi khi có tin nhắn đến.

Tôi không biết ngôn ngữ nào bạn đang phát triển ứng dụng, nhưng nếu bạn sử dụng bất kỳ ngôn ngữ phổ biến nào (Java, PHP, Perl), có các mô-đun ngoài đó xử lý kết nối SMPP cơ bản cho bạn. Tìm kiếm nhanh trên google cho ngôn ngữ của bạn và "Ứng dụng khách SMPP" sẽ cung cấp cho bạn danh sách các tham chiếu.

7

SMPP là giao thức ngang hàng. Điều đó có nghĩa là SMS Gateway (phía bạn) và SMSC (nhà khai thác di động của bạn) cần phải có một kết nối/kết nối phù hợp được thiết lập. Ngay cả khi không có tin nhắn SMS hoặc DLR để gửi/nhận, có một trao đổi liên tục của smpp PDU (enquire_link/inquire-link_resp) đảm bảo rằng ràng buộc được thiết lập. Cụ thể, nếu bạn gửi một PDU enquire_link và bạn không nhận được phản hồi (enquire_link_resp) thì ràng buộc bị hỏng. Tin nhắn của bạn sẽ không được gửi đi (sẽ vẫn được lưu trữ trong cửa hàng cổng của bạn) và bạn sẽ không nhận được MO (sms đến) hoặc DLR (báo cáo gửi). Để thiết lập lại kết nối, bạn nên khởi tạo lại kết nối.

Vì vậy, câu trả lời của tôi là bạn cần kết nối liên tục với SMSC.

0

Có thể đó là giải pháp tốt hơn để sử dụng trình tổng hợp SMS thay vì kết nối trực tiếp với nhà điều hành di động của bạn. Sau đó, bạn có thể kết nối dễ dàng thông qua API HTTP với điều này (thực hiện cuộc gọi URL để gửi SMS, nhận cuộc gọi lại URL tới Máy chủ của bạn để nhận báo cáo SMS và báo cáo gửi).

Với một số chỉnh sửa (ví dụ:kết nối liên tục vv) bạn có thể đạt được hiệu suất gần giống như smpp.

Đây là một khởi đầu tốt để tìm một aggregator người hỗ trợ điều hành của bạn: http://www.onehop.co/