Slide 1

Slide 1 text

Reaching Beyond The Web Using RapidSMS to power democracy in Libya Vinod Kurup

Slide 2

Slide 2 text

Take home points 1. Why build SMS apps? SMS = Short Message Service (i.e. 'text' message) 2. RapidSMS is very simple.

Slide 3

Slide 3 text

Outline Libyan SMS Voter Registration RapidSMS

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

Government of Libya Mandates: Build an SMS Voter Registration System

Slide 6

Slide 6 text

Why SMS?

Slide 7

Slide 7 text

Why electronic? photo by Josh Thompsoncc-by-2.0

Slide 8

Slide 8 text

Why electronic? User's time Protests Expense Staff Materials Access

Slide 9

Slide 9 text

Courtesy of NASA

Slide 10

Slide 10 text

Why not the web?

Slide 11

Slide 11 text

Why not the web? Expensive! photos by and Alejandro Pinto Thomas Kohlercc-by-2.0

Slide 12

Slide 12 text

Why not the web? Developer time No HTML No JS No CSS No Fonts No Colors No Forms

Slide 13

Slide 13 text

Why not the web? User's time

Slide 14

Slide 14 text

Why not the web? The most important reason....

Slide 15

Slide 15 text

Courtesy Neal Jenningscc-by-2.0

Slide 16

Slide 16 text

Access Internet SMS Libya 16% 165% Africa 21% 80% South Africa 49% 147% United States 87% 96% World 39% 97% Sources: and Wikipedia World Bank

Slide 17

Slide 17 text

SMS Summary Widely accessible User friendly Inexpensive Libya made a wise choice!

Slide 18

Slide 18 text

The Project

Slide 19

Slide 19 text

Timeline 2012: Libya mandates HNEC to build SMS VR system Sep 2013: Caktus and partners join team Dec 2013: > 1 million registrations Feb 2014: CDA elections (60 seats) May 2014: additional 500K registrations Jun 2014: CoR elections (200 seats)

Slide 20

Slide 20 text

How do I register? 10010 is the HNEC short code Send to 10010: We respond: You are registered or with an error message 1 1 1 2 2 2 3 3 3 4 4 4 # 1 2 3 4 5

Slide 21

Slide 21 text

No content

Slide 22

Slide 22 text

Other Features

Slide 23

Slide 23 text

Voter query Send to 10010: We respond with your registration status Also available via the web at 1 1 1 2 2 2 3 3 3 4 4 4 https://libyavotes.ly

Slide 24

Slide 24 text

Translations Standard Django setup Transifex

Slide 25

Slide 25 text

Encodings Easy with Python Not easy when communicating with MNOs Thank you Praekelt!

Slide 26

Slide 26 text

Reporting Central staff needs to monitor polling centers in real-time Parallell Voting Tabulation (PVT) With 1600 centers, voice phone is not feasible Staff reports number of voters with SMS to 10050: 1 1 0 0 7 # 3 # 9 3 2

Slide 27

Slide 27 text

Analytics Fraud monitoring Status reports

Slide 28

Slide 28 text

No content

Slide 29

Slide 29 text

Help Desk

Slide 30

Slide 30 text

Bulk Outgoing SMS Remind voters to vote Inform voters of registration center changes

Slide 31

Slide 31 text

Deployment

Slide 32

Slide 32 text

No content

Slide 33

Slide 33 text

Deployment Fabric Salt scripts Caktus Django Project Template https://github.com/caktus/django-project-template/

Slide 34

Slide 34 text

Testing Automated tests HNEC staff testing ... (message 58)

Slide 35

Slide 35 text

Intro to RapidSMS

Slide 36

Slide 36 text

RapidSMS: Overview UNICEF developed in 2007 Free and Open Source (BSD) https://rapidsms.org https://github.com/rapidsms/rapidsms

Slide 37

Slide 37 text

RapidSMS: Installation p i p i n s t a l l r a p i d s m s

Slide 38

Slide 38 text

No content

Slide 39

Slide 39 text

RapidSMS: How To 1. Setup a Backend 2. Create an App 3. There is no step 3

Slide 40

Slide 40 text

RapidSMS Backends Twilio Android phone GSM Modem Vumi Others

Slide 41

Slide 41 text

1. Configuration settings 2. URL for incoming messages I N S T A L L E D _ B A C K E N D S = { " l i b y a n a " : { " E N G I N E " : " r a p i d s m s . b a c k e n d s . v u m i . V u m i B a c k e n d " , " s e n d s m s _ u r l " : ' h t t p : / / 1 2 7 . 0 . 0 . 1 / l i b y a n a ' , } , } u r l p a t t e r n s + = p a t t e r n s ( ' ' , u r l ( r " ^ b a c k e n d / v u m i - l i b y a n a / $ " , V u m i B a c k e n d V i e w . a s _ v i e w ( b a c k e n d _ n a m e = " l i b y a n a " ) ) ) RapidSMS Backend

Slide 42

Slide 42 text

Just Python! Messages are just text f r o m r a p i d s m s . a p p s . b a s e i m p o r t A p p B a s e c l a s s P i n g P o n g ( A p p B a s e ) : d e f h a n d l e ( s e l f , m s g ) : i f m s g . t e x t = = ' p i n g ' : m s g . r e s p o n d ( ' p o n g ' ) r e t u r n T r u e r e t u r n F a l s e RapidSMS Apps

Slide 43

Slide 43 text

Multiple apps Multiple phases f r o m r a p i d s m s . a p p s . b a s e i m p o r t A p p B a s e c l a s s P i n g P o n g ( A p p B a s e ) : d e f f i l t e r ( s e l f , m s g ) : p a s s d e f p a r s e ( s e l f , m s g ) : p a s s d e f h a n d l e ( s e l f , m s g ) : p a s s d e f d e f a u l t ( s e l f , m s g ) : p a s s d e f c l e a n u p ( s e l f , m s g ) : p a s s RapidSMS Apps

Slide 44

Slide 44 text

Libya Example i m p o r t r e f r o m r a p i d s m s . a p p s . b a s e i m p o r t A p p B a s e c l a s s P r e p r o c e s s A p p ( A p p B a s e ) : d e f p a r s e ( s e l f , m s g ) : N O N D I G I T S _ R E = r e . c o m p i l e ( ' [ ^ \ d ] ' , f l a g s = r e . U N I C O D E ) m s g . n u m b e r _ l i s t = [ n f o r n i n N O N D I G I T S _ R E . s p l i t ( m s g _ t e x t ) i f n ]

Slide 45

Slide 45 text

Router Handlers Connection / Contacts Message Tester Message Log Third party modules R A P I D S M S _ R O U T E R = " r a p i d s m s . r o u t e r . c e l e r y . C e l e r y R o u t e r " Other RapidSMS concepts

Slide 46

Slide 46 text

Cool RapidSMS projects - A project aimed at decreasing child mortality during the critical 1000 days after birth. - A project to provide HIV test results and tracking to to infants, their mothers, and caregivers. 1000 Days Project Mwana

Slide 47

Slide 47 text

Conclusion

Slide 48

Slide 48 text

Take home points 1. Is access important to your project? Then SMS is important to your project. Easy to add to a web app 2. RapidSMS is easy to set up RapidSMS is flexible and scalable RapidSMS is NOT the only option

Slide 49

Slide 49 text

Thanks! Caktus: Colin, Dan, Daryl, Elliott, Hao, Jeff, Michael, Nicole, Philip, Scott, Tobias, Victor Reboot: Hunter, Josh, Justin Praekelt: Ben, JP, Simon, Simon, Vincent HNEC: Ahmed, Fadia, Munir MIS: Ian, Joe UN: Ajay, Panto

Slide 50

Slide 50 text

Questions?