180 likes | 344 Views
MIT D-Lab ICT4D. Lab 1: SMS Services. Intro to Lab Sessions. Goal: Give overview and examples to jump-start you Three Sessions SMS applications J2ME (on-the-phone apps) Advanced features (NFC, Location, MMS, etc.) But … we can’t teach everything in 3 sessions!
E N D
MIT D-Lab ICT4D Lab 1:SMS Services
Intro to Lab Sessions • Goal: Give overview and examples to jump-start you • Three Sessions • SMS applications • J2ME (on-the-phone apps) • Advanced features (NFC, Location, MMS, etc.) • But … we can’t teach everything in 3 sessions! • you’re expected to study and follow-up on your own • we’ll just give you simple educational examples – not necessarily the best or most scalable solutions • you’re welcome to use other tools and techniques not taught in class • These tools are works in progress -- You’re welcome to help!
Recap: Mobile Phone Capabilities, Apps • SMS (Text Messaging) –based services • send text commands, receive info • receive alerts and subscriptions • MMS (Multimedia Messaging) –based services • send and receive multimedia to/from server • J2ME (Java 2 Micro Edition) applications • programs running on the phone • e.g., games • Internet/Web services • via WAP (limited) and/or GPRS (dialup-speed connection) • via 3G (broadband speed connection) • Location-based services • services that make use of location of users • Micropayment applications • ability to send/transfer cellphone credits via SMS • leads to cash-less, credit-card less, electronic payment mechanisms
Example: SMS Job Finder Service • Service On-Demand • User texts FINDJOB <JOB> to 123 • e.g., FINDJOB DRIVER • Service responds (via SMS text message) with … • Agency: JobsRUs. DRIVER needed as of 2/1/08, Call (987) 654-3210 • Subscription Service • User can subscribe to alerts • e.g., FINDJOB SUBS DRIVER
Mobile “Value-Added Services (VAS)” Architecture 3rd party app providers (aka content providers, “CPs”) small 3rd party CPs Users direct connection MNO aggregator SMSC VAS gateway in-house apps private “service” via GSM modem or phone
Writing SMS Apps: Three Options • direct to Mobile Network Operator • via Aggregator • using GSM modem or phone
Open Source Kannel SMSLib Gnokii, etc. Commercial Aggregators e.g., Clickatell Libraries for Using Private Lines e.g., NowSMS, WinSMS, etc. Tools
Programming Options • Protocols • direct via language-specific API • TCP/IP-based protocols • e.g., CIMD, SMPP, etc. • HTTP-based protocols • GET, POST, XML-RPC • Languages • Java, PHP, anything … • Note: probably also need • backend database • web front-end
Legal Disclaimer • The information here is for educational purposes only • We assume your programs will be used for private/personal use only • If you want to do a commercial or high-volume application, you may have to contact a mobile operator or an aggregator in your target market
Writing an App (Easy!) publicinterface SMSApplication { public SMSMessage onSMSMessageReceived(SMSMessage incomingMsg); publicvoid setSMSSender(SMSSender sender); } publicinterface SMSSender { publicboolean sendSMSMessage(SMSMessage outgoingMsg); } IMPLEMENT THIS
How to connect your app • Via Java • via GSM modem adapter • via SMSLib • via HTTP GET adapter • connecting from Kannel or other gateways • (via email adapter) • Alternative: PHP
Other Issues • Databases • Web Interface
References • See ict4dlab.org for more info and links • This is under development, so visit often for up-to-date info
Caveats • Watch how you keep state • if you are running app from command-line, state that is not written to disk or persistent database will get lost when you run the app again • similar issues with web-based solutions
Caveats: Security • Watch for “SQL Injection” attacks!
General User-Interface Tips • Make inputs case-insensitive • Also whitespace insensitive • Avoid hard-to-type characters • Try to use keywords in T9 dictionary (or compound words composed of such words) • Reply-based interfaces • keep per-user state of last transaction • enables simpler “Reply with …” commands • e.g., “Reply NEXT to continue to get more info”