2011-01-08 11 views
9

SMPP 인터페이스 만 제공하는 특정 모바일 운영자를 통해 메시지를 보내고받을 필요가있는 프로젝트가 있습니다. 전체 프로젝트는 호스팅 된 웹 사이트가 될 것입니다. 나는 이미 많은 것을 읽었지만, 프로토콜을 사용하기 위해 실제로 필요한 것이 무엇인지를 아직 이해하지 못했습니다.SMPP를 통한 SMS 수신

내 응용 프로그램이 smpp에 대한 지속적인 연결을 유지해야합니까? 간단히 연결하고 메시지를 보낸 다음 연결을 끊을 수 있습니까?

푸시 또는 당겨 받기를 기반으로 메시지를 받고 있습니까?

도움 주셔서 감사합니다.

+0

여기 http://blog.ektel.com 확인하실 수 있습니다 .np/2012/01/sms-messages-esme-server-and-smsc-server/ 도움이되기를 바랍니다. –

답변

4

메시지를 받으려면 적어도 bind_receiver이 필요합니다. 메시지가 언제 도착할 지 모르기 때문에 각 이벤트가 끝나면 끊기보다는 끊임없이 연결해야합니다.

"밀어 넣기 또는 당기기"에 대한 질문은 첫 번째 문제를 해결하는 방법에 따라 다릅니다. 끊임없이 연결된 솔루션을 구축 할 수 있다면 그 결과는 푸시가 될 것입니다 (이동 통신사가 메시지를받는 즉시 사용자에게 알려줍니다). 만약 (어떤 이유로) 일정한 연결을 유지할 수 없다면 결국 풀 메커니즘을 구축하게 될 것입니다. X 초 동안 이동 통신사에 연결하여 대기중인 메시지가 있는지 확인합니다.

그래도 난이 함정을 강조해야합니까 :

  1. 세계 항공사의 숫자, 저장 또는이 연결되어 있지 않은 경우에도 당신이 상호 작용하는 캐리어에 따라, 따라서 메시지를 허용하지 않는 경우 지속적인 연결을 사용해야 할 수도 있습니다.
  2. 대부분의 이동 통신사는 빠른 연결로 연결을 열고 닫을 수 없습니다. 연결을 끊으면 X 초의 시간 프레임 동안 다시 연결할 수 없습니다.

따라서 지속적인 연결은 실제로가는 길입니다. 또는 메시지가 도착할 때마다 HTTP 통화를 제공하는 Nexmo와 같은 회사를 조사 할 수 있습니다.

어떤 언어로 응용 프로그램을 개발했는지 모르겠지만 대중적인 언어 (Java, PHP, Perl)를 사용하는 경우 기본 SMPP 연결을 처리하는 모듈이 있습니다. 귀하의 언어와 "SMPP 클라이언트"에 대한 빠른 Google 검색은 참조 목록을 제공합니다.

7

SMPP는 피어 - 투 - 피어 프로토콜입니다. 즉, SMS 게이트웨이 (사용자 측)와 SMSC (이동 통신사)가 적절한 바인드/연결을 설정해야합니다. 송수신 할 SMS 나 DLR이 없을 때에도 바인드가 설정되도록하기 위해 smpp PDU (enquire_link/inquire-link_resp)를 계속해서 교환합니다. 구체적으로 말하면, enquire_link PDU를 보내면 응답이 없으면 (enquire_link_resp) 바인드가 끊어집니다. 귀하의 SMS는 배달되지 않으며 게이트웨이 저장소에 대기열에 남아있게됩니다. MO (받는 메일) 또는 DLR (배달 보고서)을받지 못합니다. 연결을 다시 설정하려면 연결을 다시 시작해야합니다.

내 대답은 SMSC에 대한 지속적인 연결이 필요하다는 것입니다.

0

모바일 운영자를 직접 연결하는 대신 SMS 수집기를 사용하는 것이 더 나은 해결책 일 수 있습니다. 그런 다음 HTTP API를 통해 쉽게 연결할 수 있습니다 (SMS 전송을위한 URL 호출, SMS 및 배달 보고서 수신을위한 URL 콜백 가져 오기).

일부 조작 (예.연결 유지 등) smpp와 거의 동일한 성능을 얻을 수 있습니다.

이것은 당신의 연산자를 지원하는 애그리 게이터 (aggregator)를 찾을 수있는 좋은 시작이다 : http://www.onehop.co/ ESME는 SMSC, 그리고 바인딩 및 바인딩 해제 작업과 작동 방법에 대한 자세한 내용은

관련 문제