Build SMS applications with Python

Related tags

Communicationrapidsms
Overview

RapidSMS

RapidSMS is a free and open source framework for building interactive SMS applications, which integrates tightly with Django to provide a rich reporting interface. It was created by the Innovation Team at UNICEF, and is under development by the RapidSMS Team.

Build Status Coverage Status Documentation

Features

  • A framework for processing text messages through a series of phases.
  • Support for sending and receiving messages from pluggable backends, including Kannel.
  • A swappable routing architecture with support for background processing with Celery.
  • Built-in commonly used apps in rapidsms.contrib, including registration.

Installation

RapidSMS is best installed via PyPI. To install the latest version, run:

$ pip install rapidsms

Dependencies

Documentation

Documentation on using RapidSMS is available on Read The Docs.

License

RapidSMS is released under the BSD License. See the LICENSE file for more details.

Contributing

If you think you've found a bug or are interested in contributing to this project, check out RapidSMS on Github. A full contributing guide can be found in the online documentation.

Comments
  • TemplateSyntaxError raised in some links (a couple of fixes I've integrated for versions of django higher than 1.4 (passed on 1.4.1))

    TemplateSyntaxError raised in some links (a couple of fixes I've integrated for versions of django higher than 1.4 (passed on 1.4.1))

    I've tested rapidsms with django 1.4.+ (including the development version), I think django deprecates the use of:

    {% url hyphenated-arguments-example %}

    When you use a hyphenated argument within a quote (single quote, for example), no error is thrown:

    <a href="{% url 'rapidsms-login' %}">Log in again</a>

    or:

    <a href='{% url "rapidsms-login" %}'>Log in again</a>

    I hope this fixes things for folks working with Edge-django.

    opened by miclovich 26
  • feature/router-setting branch

    feature/router-setting branch

    This is a pull request to track the feature/router-setting branch. This branch attempts to separate the app phase processing and legacy threading code into a BaseRouter and LegacyRouter, respectively, and introduces a RAPIDSMS_ROUTER setting, which lets you swap routers in your settings file.

    Please note: Everything in legacy.py is just a copy/paste from the old rapidSMS and will likely be deprecated or removed altogether as part of this branch, so I've made no attempt to clean up any of the existing code there.

    opened by tobiasmcnulty 16
  • patched up `conf.py` to compile docs within rapidsms folder without having to install RapidSMS first

    patched up `conf.py` to compile docs within rapidsms folder without having to install RapidSMS first

    This is especially useful for folks that directly add their rapidsms(contrib) apps to their projects without installing these apps (either in site-packages or other). Docs are a critical part especially during offline dev work; hope this makes sense.

    opened by miclovich 14
  • Python 3 support

    Python 3 support

    Mostly minor fixes to provide Python 3 support. This is built on top of #453.

    Will probably also need doc updates, but wanted to get this out there for review in the meantime.

    opened by vkurup 13
  • Core API datetimes should be naive UTC

    Core API datetimes should be naive UTC

    See discussion here: http://groups.google.com/group/rapidsms/browse_thread/thread/cfea7e3c3e58a7ed/6adc6150019f1ba3?lnk=gst&q=datetime#6adc6150019f1ba3

    core 
    opened by jwishnie 12
  • Simplify contrib.handlers loading

    Simplify contrib.handlers loading

    contrib.handlers provides several ways to include/exclude handlers via the INSTALLED_APPS, RAPIDSMS_HANDLERS_EXCLUDE_APPS, INSTALLED_HANDLERS, EXCLUDED_HANDLERS. The various combinations of these is somewhat confusing and is somewhat overly complicated for most installs.

    Some ideas:

    • Use INSTALLED_APPS by default, unless INSTALLED_HANDLERS is defined. If so, then use INSTALLED_HANDLERS as the primary reference, as it will contain an explicit list of handlers. Remove all other settings.
    • Adopt a registry similar to django.contrib.admin and use a similar admin.unregister workflow for removing unwanted handlers.
    • Only use INSTALLED_HANDLERS. Simple and explicit, but may be tedious to maintain a large list.
    contrib proposal 
    opened by copelco 11
  • Django 1.8 support

    Django 1.8 support

    This PR provides support for the master branch of Django (which will become 1.8 once released). I've combined a few different fixes in with this because they were generally reliant on each other.

    Backwards incompatibility: This drops support for Django 1.4 and 1.5. This makes it possible to use transaction.atomic, allow using the url templatetag without importing it from future, and allows us to use the latest version of Celery.

    Needed after this PR is merged: Documentation updates, especially for the switch from django-celery to plain old Celery. (Added to my todo list)

    This PR is done on top of #452 and I'll update it once that one is approved.

    opened by vkurup 10
  • Potentially switch httptester backend to new db backend

    Potentially switch httptester backend to new db backend

    I've created a simple DB backend. Is it worth moving httptester over to it for 0.13?

    https://github.com/rapidsms/rapidsms/tree/feature/bulk-messaging-api/rapidsms/backends/db

    backends contrib needs-review 
    opened by copelco 9
  • best match parser

    best match parser

    An alternative to the Keyword parser, the BestMatch parser takes a set of target strings, and matches a Source string to the targets. The match does not have to be exact, the matcher returns all targets that contain the src, or start with the source (default behavior)

    This can be used to perform a best-unique-match (similar to what 'gem' command uses to let you shorten subcommands).

    Basic usage:

    bm=BestMatch(['foo', 'bar', 'baz']) hit = bm.match('f') if len(hit)==1: print 'we found: %s' % hit[0] elif len(hit)>1: print 'which did you mean? we found: %s' % hit

    The matcher has a bunch of advanced features including:

    • aliases where each target can have multiple aliases (spellings)
    • storing of arbitrary data with the targets to make command handling simple e.g.

    bm = BestMatch([('doFoo', self.do_foo)]) hit = bm.match(src_string) if len(hit)==1: hit[0][1]()

    • ignore prefixes--prefixes that can be left out of the match e.g. bm = BestMatch(['mr. smith', 'mr. jones'], ignore_prefixes='mr.') hit = bm.match('smith') hit will be => ['mr. smith']

    For examples of usage, see: http://github.com/jwishnie/rapidsms-tostan/blob/41242c7b54d954e16ce7dcf46a0f351bdaa1e8e8/apps/smsforum/app.py

    opened by jwishnie 9
  • Linking Outgoing message in the Database Router with the Database message

    Linking Outgoing message in the Database Router with the Database message

    When using Database Router as rapidsms router, at the backend_preparation, link the database message object with the Outgoing message, making possible to retrieve the message saved using the message object.

    Now when you use:

    from rapidsms import router
    ...
    outgoing_message = router.send('Testing message', connections)
    # Now you can get the database messages and transmissions
    print outgoing_message.database_message.status
    outgoing_message.database_message.transmissions.all()
    
    opened by fredcido 8
  • Django 1.9 and Python 3.5 support

    Django 1.9 and Python 3.5 support

    This is building up on your django-19 branch @vkurup. I removed all the deprecation warnings, apart from the one thrown in django-selectable. I'm working on fixing that deprecation warning in the django-selectable repository. Also dropped support for Django 1.7 and Python 3.3, added support for Python 3.5.

    In summary:

    • Added support for Python 3.5, Django 1.9
    • Removed support for Python 3.3, Django 1.6, Django 1.7
    • Fixed the build by pinning the django-tables2 version to 1.0.*
    opened by raphaelmerx 7
  • RapidSMS - Kannel set up

    RapidSMS - Kannel set up

    This rapidsms doesnot have alot of novice-user tutorial documentation and all. Anyways, I am trying to set up a practical rapidsms SMS application to communicate over the Kannel gateway in Ubuntu -- I intend to use my smartphone as a GSM modem and another phone to send and recieve messages. I have created a rapidsms app and all the code in settings.py file looks like the tutorial 1: http://rapidsms.readthedocs.io/en/develop/tutorial/tutorial01.html#tutorial01 In other words, my application can ping and pong from the messageTester.

    Using the following tutorial: http://rapidsms.readthedocs.io/en/develop/topics/backends/kannel.html When i try to run this command from the terminal( its some form of fakesms test): /usr/lib/kannel/test/fakesmsc -m 1 "123 789 text ping-kannel" i dont get the results!?!

    Any help how to solve this issue?

    opened by Nsengiyunva 0
  • Reference to RapidPro in README?

    Reference to RapidPro in README?

    Someone asked me the difference between RapidPro and RapidSMS today, and I'm not 100% sure I gave them the right answer.

    There's no wikipedia page for RapidPro, and no mention of it on the RapidSMS page:

    https://en.wikipedia.org/wiki/RapidSMS

    I'm assuming RapidSMS is no longer under development, and that new projects should be built on RapidPro rather than SMS. Could someone update the README to reflect what RadidPro is and when to still use RapidSMS?

    Thanks.

    opened by tacman 1
  • Compatibility between django 1.9 and rapidsms 0.21.1

    Compatibility between django 1.9 and rapidsms 0.21.1 "ImportError" "Obsolete module"

    There is an import error in rapidsms 0.21.1, looks like rapidsms is using a obsolete module which has been remove in django 1.9, actually since django 1.7. The module is importlib found in django from django.utils.importlib import import_module. This was a compatibility library for python 2.6 when still supported and thus it has been obsolete since 2.7 It appears that this module has been removed also in django since django Django 1.7. In django 1.9 thus when you try to import from rapidsms.apps.base import AppBase you get this kind of error

    ImportError                               Traceback (most recent call last)
    <ipython-input-1-b7d874691b1f> in <module>()
    ----> 1 from rapidsms.apps.base import AppBase
    
    /usr/local/lib/python2.7/dist-packages/rapidsms/apps/base.py in <module>()
          4 from django.utils.encoding import python_2_unicode_compatible
          5 
    ----> 6 from ..utils.modules import try_import, get_class
          7 
          8 
    
    /usr/local/lib/python2.7/dist-packages/rapidsms/utils/modules.py in <module>()
          5 import inspect
          6 
    ----> 7 from django.utils.importlib import import_module
          8 
          9 
    
    ImportError: No module named importlib
    

    This behavior in happening in debian 8, python 2.7.9

    opened by latest-release 0
  • Document plan for the 1.0 release

    Document plan for the 1.0 release

    As mentioned multiple times on the mailing list, it's time for the next release to have some backwards-incompatible changes, in order to properly modernize RapidSMS.

    Here are the things that I think need to be done before we release 1.0.

    • [x] Document Django compatibility plan (Drop support for Django < 1.7, plan to support 1.8 with no deprecation warnings, with each subsequent point release supporting the next version of Django)
    • [x] Drop Python 2.6 support
    • [ ] Update our use of Celery (See #456)
    • [ ] Remove extensible data models
    • [x] Remove contrib.locations (a move which was supposed to happen a long time ago)
    • [ ] Update documentation
    • [ ] Review outstanding issues / PRs (They may not necessarily be addressed in this release)

    Some of this has been started in #469, which I will merge soon to begin this process. Completing the above will leave RapidSMS in a more sustainable place for further improvements.

    Comments, questions?

    opened by vkurup 2
  • Poll application not running with any of the fork version

    Poll application not running with any of the fork version

    HI,

    I have start exploring the rapidsms for one of my project and I completed the tutorials successfully but when I tried to run the poll application than didn't find any appropriate documentation for the supported version of dependency projects so poll application didn't work for me at all.

    I have tried almost all the fork versions of poll app but none of them work. I am not sure if the issue is with the django version or something else.

    I will be really thankful if someone could even give me right direction to try the correct code of poll. Thanks in advance

    opened by msalman 0
Releases(v2.0.0)
  • v2.0.0(Mar 16, 2022)

    What's Changed

    • Support Django2.2/3.2, Python3.7/8/9 by @Jdsleppy in https://github.com/rapidsms/rapidsms/pull/496
    • docs: fix a few simple typos by @tobiasmcnulty in https://github.com/rapidsms/rapidsms/pull/498
    • Support Python 3.10 + run Tox via GitHub Actions by @tobiasmcnulty in https://github.com/rapidsms/rapidsms/pull/497
    • Update documentation for 2.0 release by @tobiasmcnulty in https://github.com/rapidsms/rapidsms/pull/499

    New Contributors

    • @Jdsleppy made their first contribution in https://github.com/rapidsms/rapidsms/pull/496

    Full Changelog: https://github.com/rapidsms/rapidsms/compare/v1.1.0...v2.0.0

    Source code(tar.gz)
    Source code(zip)
  • v1.1.0(Apr 4, 2019)

  • v1.0.0(May 19, 2018)

Indico - A feature-rich event management system, made @ CERN, the place where the Web was born.

Indico Indico is: 🗓 a general-purpose event management tool; 🌍 fully web-based; 🧩 feature-rich but also extensible through the use of plugins; ⚖️ O

Indico 1.4k Dec 31, 2022
Synapse: Matrix reference homeserver

Synapse Contents Introduction About Matrix Support Synapse Installation Connecting to Synapse from a client Registering a new user from a client ACME

matrix.org 10.4k Jan 02, 2023
Zulip server and webapp - powerful open source team chat

Zulip overview Zulip is a powerful, open source group chat application that combines the immediacy of real-time chat with the productivity benefits of

Zulip 17k Jan 07, 2023
Read/sync your IMAP mailboxes (python2)

Upstream status (master branch): Upstream status (next branch): Financial contributors: Links: Official github code repository: offlineimap Website: w

OfflineIMAP 1.7k Dec 29, 2022
Main repo for Inboxen.org

Inboxen This is the complete system with everything you need to set up Inboxen. The current maintainer of this repo is Matt Molyneaux GPG keys GPG key

Inboxen 249 Nov 13, 2022
get things from one computer to another, safely

Magic Wormhole Get things from one computer to another, safely. This package provides a library and a command-line tool named wormhole, which makes it

15.4k Jan 01, 2023
A free & open modern, fast email client with user-friendly encryption and privacy features

Welcome to Mailpile! Introduction Mailpile (https://www.mailpile.is/) is a modern, fast web-mail client with user-friendly encryption and privacy feat

mailpile 8.7k Jan 04, 2023
PyZMQ: Python bindings for zeromq

PyZMQ: Python bindings for ØMQ This package contains Python bindings for ØMQ. ØMQ is a lightweight and fast messaging implementation. PyZMQ should wor

The ZeroMQ project 3.2k Jan 02, 2023
GitHub repository for the SecureDrop whistleblower platform. Do not submit tips here!

SecureDrop is an open-source whistleblower submission system that media organizations can use to securely accept documents from, and communicate with

Freedom of the Press Foundation 3.4k Jan 01, 2023
ProPublica's collaborative tip-gathering framework. Import and manage CSV, Google Sheets and Screendoor data with ease.

Collaborate This is a web application for managing and building stories based on tips solicited from the public. This project is meant to be easy to s

ProPublica 86 Oct 18, 2022
Conference planning tool: CfP, scheduling, speaker management

pretalx is a conference planning tool focused on providing the best experience for organisers, speakers, reviewers, and attendees alike. It handles th

496 Dec 31, 2022
Online translation tool

Pootle Docs | Changes | Issues | Community Support | Contributing | Development Channel Pootle is an online translation and localization tool. It work

Translate 1.4k Jan 06, 2023
Insular email distribution - mail server as Docker images

Mailu is a simple yet full-featured mail server as a set of Docker images. It is free software (both as in free beer and as in free speech), open to s

Mailu 4.2k Jan 04, 2023
Askbot is a Django/Python Q&A forum. **Contributors README**: https://github.com/ASKBOT/askbot-devel#how-to-contribute. Commercial hosting of Askbot and support are available at https://askbot.com

ATTENTION: master branch is experimental, please read below Askbot - a Django Q&A forum platform This is Askbot project - open source Q&A system, like

ASKBOT 1.5k Dec 28, 2022
the first third-party instant messaging client for Google Hangouts

hangups hangups is the first third-party instant messaging client for Google Hangouts. It includes both a Python library and a reference client with a

Tom Dryer 1.7k Dec 25, 2022
Abilian Social Business Engine - an enterprise social networking / collaboration platform.

About Abilian SBE (Social Business Engine) is a platform for social business applications, and more specifically collaborative / enterprise 2.0 busine

Abilian open source projects 63 Dec 29, 2022
Securely and anonymously share files, host websites, and chat with friends using the Tor network

OnionShare OnionShare is an open source tool that lets you securely and anonymously share files, host websites, and chat with friends using the Tor ne

Micah Lee 5.4k Jan 02, 2023
MoinMoin Wiki Development (2.0+), unstable, for production please use 1.9.x.

MoinMoin - a wiki engine in Python MoinMoin is an easy to use, full-featured and extensible wiki software package written in Python. It can fulfill a

MoinMoin Wiki Engine 240 Dec 22, 2022
GlobaLeaks is free, open source software enabling anyone to easily set up and maintain a secure whistleblowing platform.

GlobaLeaks is free, open souce software enabling anyone to easily set up and maintain a secure whistleblowing platform. Continous Integration and Test

GlobaLeaks 995 Jan 01, 2023
Easy-to-use and powerful offline translation tool

Introduction Virtaal is a graphical program for doing translation. It is meant to be easy to use and powerful at the same time. Although the initial f

Translate 271 Nov 22, 2022