Skip to content
This repository has been archived by the owner on Apr 13, 2019. It is now read-only.

xanderdin/ptsmpp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PTSMPP - Python Twisted SMPP 3.4 client library

This is a mixdown version of smpp.pdu and smpp.twisted packages found at github. It also includes enum package. The enum package was put to ptsmpp package in order to eliminate a dependency conflict: the smpp.twisted package requires pyOpenSSL package, which requires cryptography package, which requires enum34 package, which conflicts with the enum package, which is required by both smpp.pdu and smpp.twisted packages.

SMPP 3.4 Protocol Specification

http://www.nowsms.com/discus/messages/1/24856.html

Debian packages

https://github.com/xanderdin/ptsmpp-dist-debian

Usage example

import logging
from twisted.internet import reactor, defer
from ptsmpp.twisted.client import SMPPClientTransceiver, SMPPClientService
from ptsmpp.twisted.config import SMPPClientConfig

class SMPP(object):

    def __init__(self, config=None):
        if config is None:
            config = SMPPClientConfig(host='localhost', port=999,
                                      username='uname', password='pwd')
        self.config = config
    
    @defer.inlineCallbacks
    def run(self):
        try:
            #Bind
            smpp = yield SMPPClientTransceiver(
                self.config, self.handleMsg).connectAndBind()
            #Wait for disconnect
            yield smpp.getDisconnectedDeferred()
        except Exception, e:
            print "ERROR: %s" % str(e)
        finally:
            reactor.stop()

    def handleMsg(self, smpp, pdu):
        """
        NOTE: you can return a Deferred here
        """
        print "Received pdu %s" % pdu

if __name__ == '__main__':
    logging.basicConfig(level=logging.DEBUG)
    SMPP().run()
    reactor.run()