2011-01-08 5 views
9

J'ai un projet à venir où je dois envoyer et recevoir des messages via un opérateur mobile spécifique, qui ne fournit qu'une interface SMPP. L'ensemble du projet sera un site web hébergé. J'ai déjà beaucoup lu, mais je ne comprends pas encore très bien ce qu'il me faut pour utiliser le protocole.Réception de SMS via SMPP

Est-ce que mon application doit essayer de maintenir une connexion constante avec le smpp? Puis-je simplement me connecter, envoyer un message, puis me déconnecter?

Les messages sont-ils reçus en mode push ou pull?

Merci pour l'aide.

+0

Pour plus d'informations sur la façon dont fonctionne Esme avec SMSC et le fonctionnement se lier et délier, vous pouvez vérifier ici http://blog.ektel.com .np/2012/01/sms-messages-entre-esme-serveur-et-smsc-server/ J'espère que ça aide –

Répondre

4

Vous indiquez que vous souhaitez recevoir des messages. Par conséquent, vous avez besoin d'au moins bind_receiver. Parce que vous ne savez pas quand les messages vont arriver, vous devrez être connecté en permanence, plutôt que de vous déconnecter après chaque événement.

En ce qui concerne votre question sur "pousser ou tirer" cela dépend de la façon dont vous résolvez le premier problème. Si vous pouvez construire une solution qui est constamment connectée, le résultat sera une poussée (le transporteur vous l'enverra dès qu'il recevra le message). Si (pour une raison quelconque) vous ne pouvez pas maintenir une connexion constante, vous finirez par construire un mécanisme de traction. Vous vous connecterez au transporteur X secondes pour voir si un message vous attend.

Je dois souligner 2 pièges si:

  1. Un certain nombre de transporteurs dans le monde, ne pas stocker ou même d'accepter des messages si vous n'êtes pas connecté, donc, selon le transporteur qui vous interagissez avec, vous pourrait être forcé d'utiliser une connexion continue.
  2. La plupart des transporteurs ne vous permettent pas d'ouvrir et de fermer les connexions rapidement. Une fois que vous vous déconnectez, vous ne pouvez pas vous reconnecter pendant une période de X secondes.

Par conséquent, une connexion constante est vraiment la voie à suivre. Alternativement, vous pouvez regarder dans une entreprise comme Nexmo, qui vous fournira un appel HTTP chaque fois qu'un message arrive. Je ne sais pas dans quelle langue vous développez votre application, mais si vous utilisez l'un des langages populaires (Java, PHP, Perl), il existe des modules qui gèrent la connectivité SMPP de base pour vous. Une recherche rapide sur google pour votre langue et "SMPP Client" vous donnera une liste de références.

7

SMPP est un protocole peer-to-peer. Cela devrait signifier que SMS Gateway (votre côté) et SMSC (votre opérateur de téléphonie mobile) doivent avoir une liaison/connexion correcte établie. Même lorsqu'il n'y a pas de SMS ou de DLR à envoyer/recevoir, il y a un échange continu de PDU smpp (enquire_link/inquire-link_resp) qui s'assure que la liaison est établie. En détail, si vous envoyez une PDU enquire_link et que vous n'obtenez pas de réponse (enquire_link_resp), la liaison est rompue. Vos sms ne seront pas livrés (resteront en file d'attente dans votre magasin passerelle), et vous ne recevrez pas de MOs (sms entrants) ou DLRs (rapport de livraison). Pour rétablir la connexion, vous devez réinitialiser la connexion. Donc, ma réponse serait que vous avez besoin d'une connexion constante à SMSC.

0

Peut-être que ce serait une meilleure solution d'utiliser un agrégateur SMS plutôt que de vous connecter directement à votre opérateur mobile. Ensuite, vous pouvez vous connecter facilement via l'API HTTP (faire un appel URL pour envoyer des SMS, obtenir un rappel d'URL sur votre serveur pour recevoir des SMS et des rapports de livraison).

Avec quelques réglages (par ex.persistance connexion etc) vous pourriez atteindre presque la même performance que smpp.

Ceci est un bon point de départ pour trouver un aggrégateur qui prend en charge votre opérateur: http://www.onehop.co/