Skip to main content

Naz is an SMPP client.

Project description

naz
---

.. raw:: html

<p align="left">

.. raw:: html

</p>

| naz is an SMPP client.
| It’s name is derived from Kenyan hip hop artiste, Nazizi.

SMPP is a protocol designed for the transfer of short message data
between External Short Messaging Entities(ESMEs), Routing
Entities(REs) and Short Message Service Center(SMSC). -
`Wikipedia <https://en.wikipedia.org/wiki/Short_Message_Peer-to-Peer>`__

| naz currently only supports SMPP version 3.4.
| naz has no third-party dependencies and it requires python version
3.6+

| naz is in active development and it’s API may change in backward
incompatible ways.
| https://pypi.python.org/pypi/naz

Installation
------------

.. code:: shell

pip install naz

Usage
-----

1. As a library
^^^^^^^^^^^^^^^

.. code:: python

import asyncio
import naz

loop = asyncio.get_event_loop()
outboundqueue = naz.q.DefaultOutboundQueue(maxsize=1000, loop=loop)
cli = naz.Client(
async_loop=loop,
smsc_host="127.0.0.1",
smsc_port=2775,
system_id="smppclient1",
password="password",
outboundqueue=outboundqueue,
)

# queue messages to send
for i in range(0, 4):
print("submit_sm round:", i)
item_to_enqueue = {
"event": "submit_sm",
"short_message": "Hello World-{0}".format(str(i)),
"correlation_id": "myid12345",
"source_addr": "254722111111",
"destination_addr": "254722999999",
}
loop.run_until_complete(outboundqueue.enqueue(item_to_enqueue))

# connect to the SMSC host
reader, writer = loop.run_until_complete(cli.connect())
# bind to SMSC as a tranceiver
loop.run_until_complete(cli.tranceiver_bind())

try:
# read any data from SMSC, send any queued messages to SMSC and continually check the state of the SMSC
gathering = asyncio.gather(cli.send_forever(), cli.receive_data(), cli.enquire_link())
loop.run_until_complete(gathering)
loop.run_forever()
except Exception as e:
print("exception occured. error={0}".format(str(e)))
finally:
loop.run_until_complete(cli.unbind())
loop.close()

2. As a cli app
^^^^^^^^^^^^^^^

| naz also ships with a commandline interface app called ``naz-cli``.
| create a json config file, eg;
| ``/tmp/my_config.json``

::

{
"smsc_host": "127.0.0.1",
"smsc_port": 2775,
"system_id": "smppclient1",
"password": "password",
"outboundqueue": "myfile.ExampleQueue",
}

and a python file, ``myfile.py`` (in the current working directory) with
the contents:

.. code:: python

import asyncio
import naz

class ExampleQueue(naz.q.BaseOutboundQueue):
def __init__(self):
loop = asyncio.get_event_loop()
self.queue = asyncio.Queue(maxsize=1000, loop=loop)
async def enqueue(self, item):
self.queue.put_nowait(item)
async def dequeue(self):
return await self.queue.get()

| then run:
| ``naz-cli --config /tmp/my_config.json``

.. code:: shell

Naz: the SMPP client.

submit_sm_enqueue. correlation_id=myid12345. source_addr=254722111111. destination_addr=254722999999. log_metadata={'smsc_host': '127.0.0.1', 'system_id': 'smppclient1'}
submit_sm_enqueued. event=submit_sm. correlation_id=myid12345. source_addr=254722111111. destination_addr=254722999999. log_metadata={'smsc_host': '127.0.0.1', 'system_id': 'smppclient1'}
network_connecting. log_metadata={'smsc_host': '127.0.0.1', 'system_id': 'smppclient1'}
network_connected. log_metadata={'smsc_host': '127.0.0.1', 'system_id': 'smppclient1'}

| For more information about the ``naz`` config file, consult the
`documentation
here <https://github.com/komuw/naz/blob/master/docs/config.md>`__
| To see help:

``naz-cli --help``

.. code:: shell

usage: naz [-h] [--version] [--loglevel {DEBUG,INFO,WARNING,ERROR,CRITICAL}]
--config CONFIG

naz is an SMPP client. example usage: naz-cli --config /path/to/my_config.json

optional arguments:
-h, --help show this help message and exit
--version The currently installed naz version.
--loglevel {DEBUG,INFO,WARNING,ERROR,CRITICAL}
The log level to output log messages at. eg:
--loglevel DEBUG
--config CONFIG The config file to use. eg: --config
/path/to/my_config.json

## Features
-----------

-
- Well written(if I have to say so myself):

- `Good test coverage <https://codecov.io/gh/komuw/naz>`__
- `Passing continous
integration <https://circleci.com/gh/komuw/naz>`__
- `High grade statically analyzed
code <https://www.codacy.com/app/komuw/naz/dashboard>`__

Development setup
-----------------

- see `documentation on
contributing <https://github.com/komuw/naz/blob/master/.github/CONTRIBUTING.md>`__
- **NB:** I make no commitment of accepting your pull requests.

## TODO
-------


Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

naz-0.0.0.4.tar.gz (20.6 kB view hashes)

Uploaded Source

Built Distribution

naz-0.0.0.4-py3-none-any.whl (21.2 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page