2011-01-08 181 views
9

我有一個項目即將到來,需要通過特定的移動運營商發送和接收消息,該移動運營商只提供SMPP接口。整個項目將成爲託管網站。我已經閱讀了很多,但我還不完全理解從我這邊使​​用該協議實際需要什麼。通過SMPP接收短信

我的應用程序應該試圖保持與smpp的連接嗎? 我可以簡單地連接,發送消息然後斷開連接嗎?

正在接收基於推或拉的消息嗎?

感謝您的幫助。

+0

。有關埃斯梅與SMSC,並綁定和取消綁定操作是如何工作的,你可以點擊這裏 http://blog.ektel.com .np/2012/01/sms-messages-between-esme-server-and-smsc-server/ 我希望它有幫助 – 2012-02-02 14:25:40

回答

4

你說你想接收消息,因此至少需要一個bind_receiver。因爲你不知道什麼時候會收到消息,所以你必須經常連接,而不是在每個事件之後斷開連接。

關於「推或拉」的問題,這取決於您如何解決第一個問題。如果你可以建立一個不斷連接的解決方案,結果將是一個推動(只要他們收到消息,運營商就會立即推送給你)。如果(出於某種原因)你不能保持連接,你最終會建立一個拉機制。您將連接到運營商X秒鐘,看看他們是否有消息等着您。

我確實需要,雖然強調2個陷阱:

  1. 一些世界運營商,不存儲,甚至接受消息,如果你沒有連接,因此,這取決於你互動哪個運營商,您可能會被迫使用連續連接。
  2. 大多數運營商不允許您快速連續打開和關閉連接。斷開連接後,您將無法重新連接X秒的時間範圍。

因此,一個恆定的連接是真的要走的路。或者,您可以查看像Nexmo這樣的公司,每次收到消息時都會爲您提供HTTP調用。

我不確定在哪種語言中開發您的應用程序,但如果您使用任何流行語言(Java,PHP,Perl),那裏有模塊可以爲您處理基本的SMPP連接。快速谷歌搜索您的語言和「SMPP客戶端」會給你一個參考清單。

7

SMPP是一個點對點協議。這應該表示SMS Gateway(您的方)和SMSC(您的移動運營商)需要建立適當的綁定/連接。即使沒有SMS或DLR發送/接收,也會連續交換smpp PDU(enquire_link/inquire-link_resp),以確保綁定已建立。 詳細地說,如果你發送一個enquire_link PDU並且你沒有得到響應(enquire_link_resp),那麼綁定就會被破壞。您的短信將不會被傳送(將繼續排入您的網關存儲區),並且您將不會收到MO(傳入短信)或DLR(傳送報告)。要重新建立連接,您應該重新啓動連接。

所以,我的答案是,你需要一個連接到SMSC的連接。

0

也許這將是一個更好的解決方案,使用SMS聚合器,而不是直接連接你的移動運營商。然後你可以很容易地通過HTTP API連接到這個(做一個URL調用發送短信,獲得一個URL回調到你的服務器接收短信和發送報告)。

隨着一些調整(例如,堅持連接等),你可以達到幾乎與smpp相同的性能。

這是一個良好的開端找到誰支持你的運營商匯聚:http://www.onehop.co/