SMPP : Le centre attend des SMS…. Caractéristiques du travail avec le protocole. Commandes SMPP prises en charge

(Short Message Peer to Peer) est un protocole ouvert utilisé pour envoyer/recevoir des messages SMS entre pairs. Ce protocole est utilisé, comme HTTP, sur TCP/IP, mais il est binaire. En règle générale, le protocole SMPP fournit un mode de connexion permanent, sans faire de requêtes et attendre les réponses du serveur puis déconnecter la connexion. L’utilisation d’une connexion permanente augmente considérablement la vitesse d’envoi des messages.

Les fournisseurs de SMS peuvent limiter la vitesse à laquelle ils acceptent les messages afin d'optimiser et d'allouer leurs ressources. Si vous essayez d'envoyer à une vitesse plus rapide que celle autorisée par votre FAI, vous risquez de rencontrer des erreurs et des retards inattendus.

SMPP est capable de transmettre tout type de message, y compris les messages UCP/EMI. SMPP prend en charge à la fois les messages texte longs et les messages écrits en Unicode. Certains serveurs SMPP exigent que l'expéditeur envoie un seul long message, tandis que d'autres exigent que le message soit segmenté en fonction du type de message.

Il existe trois types différents de connexions qui peuvent être pris en charge par un serveur SMPP.

  • « Expéditeur » ou « envoyer uniquement » - seule la transmission des messages fonctionne et le serveur ne peut recevoir aucun message.
  • "Récepteur" ou "réception uniquement" - la connexion via la connexion de message n'est pas autorisée, le serveur ne peut recevoir que des messages. Toute tentative de réception de messages via cette connexion entraînera généralement une erreur.
  • "Émetteur-récepteur" - autorisé à envoyer et transmettre des messages via une seule connexion.

Le type de connexion que vous utilisez dépendra des préférences et des politiques de vos services SMPP.

Le protocole SMPP est extensible, permettant aux fournisseurs d'ajouter leurs propres paramètres supplémentaires, appelés paramètres TLV, ainsi nommés en raison du format de ces paramètres : tag (label), longueur, coût. Certains paramètres TLV sont définis dans la spécification, mais leur utilisation n'est pas obligatoire. D'autres paramètres sont fournis par le fournisseur.

Il est possible d'utiliser le service SMS comme serveur SMPP pour d'autres applications. D'autres clients ou applications se connectent au service SMS et à leur serveur SMPP, et le service SMS communique avec un ou plusieurs autres centres SMS pour envoyer et recevoir des messages SMS, en utilisant SMPP, ou éventuellement d'autres protocoles.

La transmission des messages entre le serveur SMS et le centre SMS du fournisseur de services GSM via la communication IP peut se faire via une ligne dédiée (passerelle) via Internet. Dans ce cas, la connexion IP entre le PC et le Centre SMS peut être protégée.

L'avantage du protocole SMPP est que le processus est beaucoup plus rapide et avec des intervalles plus courts (de une à dix secondes) que lors de l'utilisation d'un téléphone mobile. SMPP est recommandé si le nombre maximum de messages envoyés est supérieur à 100 SMS/heure. De plus, le service SMPP vous permet de saisir n'importe quelle information (11 caractères) dans la ligne du numéro de l'expéditeur. Les chiffres, les caractères latins et les signes de ponctuation sont pris en charge. Les informations saisies apparaîtront pour le destinataire dans la ligne « Message de : » et pourront être modifiées indépendamment par l'expéditeur. Ainsi, vous avez la possibilité d'utiliser votre propre centre SMS qui fonctionne selon le protocole SMPP.

SMPP (abréviation : Short message peer-to-peer protocol) traduit de l'anglais signifie « Short message peer-to-peer protocol » et permet de décrire l'interaction entre le serveur SMS et le client final. Ce protocole est l'un des plus populaires parmi les fournisseurs de SMS, qui l'utilisent pour échanger des messages texte entre centres SMS ayant des droits égaux. Pour travailler avec le protocole SMPP, vous devez disposer d'un serveur constamment allumé et d'un logiciel approprié compatible avec la passerelle SMS du fournisseur.

  • Prend en charge divers formats de texte et sms wap ;
  • Envoi de longs textes ;
  • Messagerie bidirectionnelle ;
  • Sélection de la vitesse d'envoi ;
  • Sélection de la méthode d'encodage ;
  • Extensibilité;
  • Recevez des rapports détaillés.

Le protocole est indispensable pour envoyer régulièrement un grand volume de messages sur un canal fiable et haut débit. Par conséquent, le fournisseur de SMS utilise généralement ce protocole pour échanger des messages SMS et USSD dans les systèmes VAS, pour connecter divers systèmes externes, etc. Vous pouvez en savoir plus sur le protocole SMPP et sur le déroulement des envois en contactant nos spécialistes.

  • Commandes prises en charge
  • Paramètres d'envoi de messages (SUBMIT_SM) via SMPP
  • Règles pour travailler avec la connexion smpp
  • Format du reçu de livraison
  • Codes d'erreur du protocole SMPP réservés
  • Application

La description de l'erreur peut être trouvée dans la spécification SMPP 3.4.

Attention : Vous devez envoyer une liste d'adresses IP à partir desquelles vous
connectez-vous avant de commencer à utiliser SMPP.

Paramètres de connexion via SMPP

  • system_id - nom d'utilisateur du formulaire XXXX.X enregistré dans le système
  • mot de passe - mot de passe utilisateur
  • Adresse -
  • Port - 8056

Commandes SMPP prises en charge

Les commandes non prises en charge recevront des messages GENERIC_NAK avec le code d'erreur ESME_RINVCMDID.

Paramètres d'envoi d'un message (SUBMIT_SM) via le protocole smpp

Règles pour travailler avec la connexion SMPP

Lorsqu'une connexion est établie, le client dispose de 10 secondes pour envoyer la commande BIND_TRANSMITTER ou BIND_TRANSCEIVER, sinon la connexion sera fermée.

Le client doit répondre à tous les paquets reçus via la passerelle avec un paquet resp correspondant dans un délai d'une minute, sinon la connexion sera fermée sans envoyer UNBIND.

Obtenir l'état de livraison des messages

Il existe deux options pour obtenir l'état de livraison à l'aide du protocole smpp (actif et passif). L'option passive est privilégiée.

L'option passive implique la définition de l'indicateur enregistré_delivery du package SUBMIT_SM.
Une fois que le message atteint son état final, le serveur enverra un paquet DELIVER_SM avec un message de réception de livraison. Le format du message du reçu de livraison est ci-dessous.

L'option active permet d'interroger périodiquement l'état du message en envoyant
QUERY_SM.

Format du reçu de livraison

"id :IIIIIIIII sub :SSS dlvrd :DDD date de soumission :AAMMJJhhmm date de fin :AAMMJJhhmm
stat:DDDDDDDD err:E Texte: . . . . . . . . "

Codes d'erreur réservés pour la connexion smpp

Code Description
0x0400
(1024)
Encodage non reconnu
0x0401
(1025)
Le texte du message est trop long. La longueur maximale ne doit pas dépasser 160
octet.
0x0402
(1026)
Erreur lors de l'enregistrement du message pour l'envoi. Quand cette erreur se produit
contactez l'assistance.
0x0403
(1027)
Le texte du message n'a pas été vérifié pour les mots et/ou expressions inappropriés
0x0404
(1028)
Expéditeur ou destinataire sur liste noire
0x0453
(1107)
Il y avait une restriction quant à l’envoi du même SMS au même numéro dans un court laps de temps. Contactez le support si vous souhaitez désactiver ou réduire la période.
0x043C
(1084)
Il n'y a pas de tarif disponible pour la destination demandée.
0x043F
(1087)
La contrepartie amont ne dispose pas d'un tarif adapté.
0x045A
(1114)
Politique de routage introuvable.
0x0446
(1094)
Erreur de transport. Si cette erreur se produit, veuillez contacter le service client.
soutien.
0x433
(1075)
Il n'y a pas suffisamment de fonds sur le compte.

Le protocole d'échange est défini par la spécification SMPP version 3.4.

La version 1.0 sert uniquement à envoyer des messages et à obtenir l'état de livraison.

La réception de messages n'est actuellement pas prise en charge.

La description de l'erreur se trouve dans la spécification SMPP version 3.4.

Pour augmenter le niveau de sécurité lorsque vous travaillez avec le système, vous pouvez fournir une liste d'adresses IP à partir desquelles la connexion sera établie.

Paramètres de connexion

Commandes prises en charge

  • system_id - nom d'utilisateur enregistré dans le système.
  • mot de passe - Mot de passe de l'utilisateur SMS
  • Adresse - sms.site
  • Port - 9001

Le serveur répondra aux commandes non prises en charge avec un message GENERIC_NAK avec le code d'erreur ESME_RINVCMDID.

Paramètres d'envoi de messages (SUBMIT_SM)

Règles pour travailler avec la connexion SMPP

Lorsqu'une connexion est établie, le client dispose de 10 secondes pour envoyer la commande BIND_TRANSMITTER ou BIND_TRANSCEIVER. Sinon la connexion sera fermée par le serveur.

Le client est tenu de répondre à tous les paquets envoyés par le serveur avec le paquet resp correspondant dans un délai d'une minute. Sinon, la connexion sera fermée par le serveur sans envoyer UNBIND.

Obtenir l'état de livraison des messages

Il existe deux options pour obtenir le statut de livraison (actif et passif). L'option passive est privilégiée.

L'option passive implique la définition de l'indicateur enregistré_delivery du package SUBMIT_SM. Une fois que le message atteint son état final, le serveur enverra un paquet DELIVER_SM avec un message de réception de livraison. Le format du message du reçu de livraison est ci-dessous.

L'option active permet une interrogation périodique de l'état du message en envoyant QUERY_SM.

Il existe une telle classe de services sur le réseau,
qui donnent aux utilisateurs la possibilité
appeler n'importe quelle fonction en envoyant un SMS à
numéros spéciaux et recevoir des réponses également dans
SMS Par exemple, vous pouvez vous inscrire
boîte e-mail pour laquelle vous pouvez définir
transférer le savon entrant sur votre téléphone.
Vous pouvez recevoir des nouvelles en temps réel et
participer à des discussions. Possible par SMS
commandez des images et des mélodies pour votre
mobiles. Enfin, vous pouvez participer à
vote. Certains OpSoS
soutenir un tel service lorsque pour chaque
il ne paie pas les SMS envoyés par l'utilisateur
uniquement à OpSoSu, mais aussi au propriétaire du service,
lors du paiement de services, le plus souvent
virtuel. Lorsque nous utilisons le téléphone, nous ne
Nous attachons les dépenses d'argent qui l'accompagnent
la même valeur que lors de l'utilisation de WebMoney
ou lors de paiements via SberBank.
Les capacités SMS offrent de larges possibilités
commerce électronique. Beaucoup de gens sont attirés par
la perspective tentante d’avoir des poumons
de l'argent quand tu regardes juste
processus et vous comptez l'argent, mais ils travaillent pour
vos scripts sur le serveur. je ne me fixe pas d'objectifs
créer un guide pour un nouveau type d'"entreprise"
pour une personne." Dans cet article, je
Je ne soulignerai que l'aspect technique du problème
traitement automatisé des SMS.

Différentes approches

En fonction des tâches assignées et de
montant d'argent disponible que vous pouvez choisir
une des solutions suivantes :

  • Vous ne pouvez envoyer des SMS que via des formulaires
    sur les sites OpSoSov ou sur certains
    portails. C'est gratuit. C'est possible
    mettre en œuvre l'envoi de SMS depuis votre portail,
    mais pour la mise en place d'un service payant, à partir de
    quels utilisateurs attendent une fiabilité particulière,
    ce n'est pas grave. On a déjà beaucoup écrit à leur sujet,
    donc je ne vais pas me concentrer sur eux,
    d'autant plus qu'ils sont tous actuellement
    sont protégés par le test de Turing, donc ceci
    la méthode n’est actuellement pas disponible.
  • Passerelles http-to-SMS spéciales pour les applications métiers.
    Vous payez et ils vous donnent la possibilité de faire des requêtes http
    envoyer des SMS à partir de vos scripts à n'importe qui
    point du monde, et aussi recevoir des SMS,
    envoyé à des numéros spéciaux. Donc
    il est très simple de faire un portail avec un formulaire SMS ou
    notification de nouvelles lettres.
  • Le protocole SMPP permet non seulement
    recevoir et transmettre des SMS, mais aussi recevoir
    avis de livraison envoyés
    messages, ainsi qu'annuler et remplacer
    messages. Un numéro vous est attribué ou
    toute une gamme de chiffres, vous obtenez tout
    les messages qui lui parviennent et
    envoyer des messages depuis n’importe quel numéro.
    Notification possible de réception
    messages : le centre SMS est connecté à
    IP et port prédéfinis et
    vous envoie des messages.

Dans cet article, je parlerai du SMPP en tant que
une méthode avancée de travail avec les passerelles SMS.

Avec ce protocole, vous pouvez recevoir
et envoyez des SMS via ce qu'on appelle des centres SMS.
Les centres SMS sont des passerelles entre Internet
et les réseaux cellulaires. Pour travailler avec ça
protocole il existe des solutions toutes faites,
par exemple Net::SMPP en Perl. Description du protocole et
des liens vers des produits logiciels peuvent être trouvés
sur www.smpp.org.
Dernière version du protocole à l'époque
rédiger un article - 3.4. Vous pouvez également télécharger ici
programme pour tester les logiciels clients - SMPP
Outil de test client (SCTT). Je n'ai pas encore acheté l'accès à
vrai centre SMS, vous devez le tester d'une manière ou d'une autre
vos programmes. Le seul inconvénient est que SCTT
écrit pour Linux, vous devez donc
bricoler avec Virtual PC ou coder immédiatement sous Linux.

Description du protocole

La connexion peut être initiée comme suit :
utilisateur nommé dans la description
Protocole ESME (External Short Message Entity) et centre SMS
(SMSC). Notez qu'en raison de cette possibilité
ce serait une erreur de l'appeler un centre SMS
serveur, car il peut être
client. La première option est utilisée comme
généralement lors de l'envoi de messages, et le second
dès réception, bien que personne ne l'interdise
envoyer des messages via la connexion,
installé par le centre SMS et reçu via
une connexion établie par vous-même. Tous
les données du protocole SMPP sont imbriquées dans des blocs,
appelés Protocol Data Units (PDU), qui ont
en-tête indiquant la taille du bloc et
code d'opération.

Format d'en-tête PDU :

Longueur DWORD - la longueur du bloc entier, y compris
titre
Commande DWORD
Statut DWORD - 0 dans les requêtes, le code d'erreur et les réponses
DWORD SequenceNumber - numéro de séquence.

Le numéro de série dans la réponse doit
égal au numéro indiqué dans la demande.

Tous les nombres dans SMPP sont codés de manière à ce que le plus élevé
octet à gauche. Pour cela, vous pouvez utiliser
fonction htonl(). Toutes les PDU sont divisées en requêtes et
réponses. Dans les codes requêtes, le bit de poids fort est égal à
zéro, environ une réponse. Pour chaque demande
la réponse devrait venir, sauf
notifications sur les messages reçus. Au revoir
aucune réponse reçue, l'opération est considérée
inachevé. S'il n'y a pas de réponse
jusqu'à la perte de la connexion, le participant, qu'il s'agisse de SMSC
ou ESME, doit réitérer la demande. Protocole
asynchrone, c'est-à-dire l'expéditeur de la demande peut
envoyer une autre demande sans attendre
réponse, et les réponses peuvent suivre à tout moment
séquences. Toutes les opérations également
sont divisés en ceux qui peuvent être utilisés
Les ESME pouvant être utilisés par SMSC et ceux
qui peut être utilisé par les deux
fêtes. La connexion est peut-être en
les états suivants :

— Ouvert (pas encore authentifié)
- Transfert
- Réception
— Réception et transmission
- Fermé

A l'état "Ouvert", c'est-à-dire immédiatement après
établir une connexion TCP ESME qui souhaite
envoyer des SMS, doit envoyer une demande à bind_transmitter.
Pour recevoir - bind_receiver. Pour les deux actions
immédiatement - bind_transceiver. Cette demande envoie
identifiant et mot de passe. Si la connexion est établie
SMSC, il doit alors d'abord envoyer une requête sortante
et passez-y le login et le mot de passe, car dans
Dans cette situation, vous avez déjà besoin de ses droits d'accès
vérifier. Par exemple, je vais vous montrer comment le repasser
Commande bind_transmitter :

Titre:
Longueur DWORD
Commande DWORD = BIND_TRANSMITTER
Statut DWORD = 0
Numéro de séquence DWORD

Données:
Connexion en ligne
Mot de passe de chaîne
Type de système de chaîne (par exemple, WWW ou Mail)
Version du protocole BYTE = 0x34
BYTE addr_ton (type de numéro), 0 = par défaut
BYTE addr_npi (Plan de numéro), 0 = par défaut
Chaîne Plage de nombres, chaîne vide,
si le fournisseur lui-même sait quels numéros nous
nous servons

Les chaînes sont ASCIIZ, c'est-à-dire terminées par un caractère nul.

La plupart des paramètres de cette requête
peut être des zéros ou des chaînes vides. DANS
la réponse à une telle demande viendra
qui, en plus de l'en-tête, contiendra le SystemId du centre SMS,
et le champ Statut sera nul en cas de succès. Si
une connexion de transmission est établie, alors nous
nous avons le droit d'envoyer des demandes submit_sm, et si
la connexion pour la réception est établie, vous devez alors
attendre les requêtes Deliver_sm contenant des textes
reçu des messages et les traiter.
Une fois le travail terminé, nous envoyons le message de déconnexion et
déconnecter.

La plupart des requêtes contiennent un tas
paramètres sur lesquels vous ne pouvez pas particulièrement
prenez un bain de vapeur et annulez-les. Donc malgré
une quantité impressionnante de documentation,
un simple répondeur SMS basé sur
que vous pouvez construire
système d'aide, je l'ai compris
avec un volume de seulement 25 Ko de texte en C++, et un test pour
SCTT a montré que tout fonctionne et reste
achetez simplement l'accès à SMSC :).

À qui se connecter

Messages via le protocole SMPP pour vous-même
De nombreux OpSoS acceptent des clients, donc
pas de références spécifiques. Recherchez des informations sur
site Web de l'OpSoS que vous préférez
travail. De plus, votre propre centre SMS,
fonctionnant sur le protocole SMPP, fournit

L'un des protocoles SMS est smpp. Il décrit le processus d'interaction entre le destinataire du message, c'est-à-dire le client SMPP et le serveur SMS, à l'aide d'un système spécial de transmission de données.

En vous basant sur l'envoi de messages smpp, vous pourrez :

  • utiliser différents formats de texte, ainsi que des SMS wap push ;
  • envoyez non seulement des textes courts, mais aussi des textes longs ;
  • recevoir des rapports détaillés sur les SMS envoyés et retardés ;
  • échanger des messages dans un format bidirectionnel ;
  • sélectionnez la vitesse d’envoi.

Ainsi, protocole smpp possède de grandes capacités, qui sont cependant associées à certaines fonctionnalités d'utilisation et d'installation, que nous considérerons.

Caractéristiques du travail avec smpp

Pour travailler avec ce protocole, vous devez disposer du logiciel approprié et d'un serveur capable d'interagir avec smpp. Dans ce cas, l'équipement doit être connecté en permanence à la passerelle de l'entreprise prestataire. Afin que les SMS smpp soient envoyés rapidement et sans délai, tous les clients de notre société subissent un test de compatibilité des équipements. Cela vous permet de vous débarrasser de nombreuses difficultés techniques au stade initial.

De plus, avant d'utiliser le protocole pour les mailings, les utilisateurs peuvent tester l'envoi de sms smpp pour déterminer la vitesse de livraison souhaitée.

Les spécialistes sont toujours prêts à vous conseiller sur la façon d'utiliser, de vous connecter et de tester le service, ce qui simplifiera votre tâche.

Connexion via le protocole SMPP.

  • system_id - nom d'utilisateur du formulaire XXXX.X enregistré dans le système
  • mot de passe - mot de passe utilisateur
  • Adresse -
  • Port - 8056

Commandes SMPP prises en charge

Le serveur répondra aux commandes non prises en charge avec un message GENERIC_NAK avec le code d'erreur ESME_RINVCMDID.

Paramètres d'envoi d'un message (SUBMIT_SM) via le protocole smpp

Règles pour travailler avec la connexion SMPP

Lorsqu'une connexion est établie, le client dispose de 10 secondes pour envoyer la commande BIND_TRANSMITTER ou BIND_TRANSCEIVER. Sinon la connexion sera fermée par le serveur.

Le client est tenu de répondre à tous les paquets envoyés par le serveur avec le paquet resp correspondant dans un délai d'une minute. Sinon, la connexion sera fermée par le serveur sans envoyer UNBIND.

Obtenir l'état de livraison des messages

Il existe deux options pour obtenir l'état de livraison à l'aide du protocole smpp (actif et passif). L'option passive est privilégiée.

L'option passive implique la définition de l'indicateur enregistré_delivery du package SUBMIT_SM.
Une fois que le message atteint son état final, le serveur enverra un paquet DELIVER_SM avec un message de réception de livraison. Le format du message du reçu de livraison est ci-dessous.

L'option active permet d'interroger périodiquement l'état du message en envoyant
QUERY_SM.

Format du reçu de livraison

"id :IIIIIIIII sub :SSS dlvrd :DDD date de soumission :AAMMJJhhmm date de fin :AAMMJJhhmm
stat:DDDDDDDD err:E Texte: . . . . . . . . "

Codes d'erreur réservés pour la connexion smpp

Code Description
0x0400
(1024)
Encodage non reconnu
0x0401
(1025)
Le texte du message est trop long. La longueur maximale ne doit pas dépasser 160
octet.
0x0402
(1026)
Erreur lors de l'enregistrement du message pour l'envoi. Quand cette erreur se produit
contactez l'assistance.
0x0403
(1027)
Le texte du message n'a pas été vérifié pour les mots et/ou expressions inappropriés
0x0404
(1028)
Expéditeur ou destinataire sur liste noire
0x0453
(1107)
Il y avait une restriction quant à l’envoi du même SMS au même numéro dans un court laps de temps. Contactez le support si vous souhaitez désactiver ou réduire la période.
0x043C
(1084)
Il n'y a pas de tarif disponible pour la destination demandée.
0x043F
(1087)
La contrepartie amont ne dispose pas d'un tarif adapté.
0x045A
(1114)
Politique de routage introuvable.
0x0446
(1094)
Erreur de transport. Si cette erreur se produit, veuillez contacter le service client.
soutien.
0x433
(1075)
Il n'y a pas suffisamment de fonds sur le compte.


Des questions ?

Signaler une faute de frappe

Texte qui sera envoyé à nos rédacteurs :