wiki:BluePrint/Messaging/Parsing

Version 12 (modified by Fran Boon, 13 years ago) ( diff )

--

Inbound Message Parsing

Introduction

This is a project proposal for GSoC 2012. We need to parse inbound messages, with an initial focus being SMS.

We can test this with Clickatell or a local phone (the Clickatell Inbound SMS fucntionality needs to be developed, which could be in-scope for this project).

Where should the code live?

Currently message parsing is done in the core code: modules/s3/s3msg.py

We want to be able to make this a deployment-specific set of options.

We are still working on developing our Profile Layer for having deployment-specific files separated from core code, so we can start by just making this a deployment-template like 000_config.py copying the file to modules/s3/s3parsing.py for easy import into S3MSG.

How does the code get run?

The Inbound Message receiving tasks should be run via the Scheduler:

Before exiting those threads, it should trigger a new Schduled task (once, now) to do the parsing.

Tropo, however, is different, since that receives inbound connections to it's controller.

All Parser Workflows should be defined in tasks.py.

The Configuration links these Tasks to Inbound Sources, along with any other args, in a new msg_workflow table.

Parsing

We want to be able to process OpenGeoSMS

If we need to have complex parsing, then we can make use of pyparsing

Parser

Routing

We want to be able to direct the message to the appropriate module to handle the data.

This could be done either by launching a real REST request or else simulating one via the API.

resource = s3mgr.define_resource("module", "resourcename")

tbc

Use Cases

This will be used by at least CERT & Tzu Chi.

They wish to process responses to deployment notifications where the recipients send back at least 'Accepted' / 'Reject'.

Additional information that it would be useful to capture are:

  • Current Location
  • ETA to deployment location
  • Questions/Comments (free text)
Note: See TracWiki for help on using the wiki.