ptsmpp

PTSMPP - Python Twisted SMPP 3.4 client library


Keywords
ptsmpp, smpp, twisted
License
Apache-2.0
Install
pip install ptsmpp==0.1.0

Documentation

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()