37
CFMX7: SMS Applications Made Easy Damon Cooper Director of Engineering, ColdFusion

CFMX7: SMS Applications Made Easy Damon Cooper Director of Engineering, ColdFusion

Embed Size (px)

Citation preview

Page 1: CFMX7: SMS Applications Made Easy Damon Cooper Director of Engineering, ColdFusion

CFMX7: SMS Applications Made Easy

Damon CooperDirector of Engineering, ColdFusion

Page 2: CFMX7: SMS Applications Made Easy Damon Cooper Director of Engineering, ColdFusion

Session Overview• Introduction to SMS & ColdFusion (10 min)• SMS App Development & Deployment (5 min)• ColdFusion Event Gateways (5 min)• ColdFusion SMS Gateway (5 min)• ColdFusion SMS Development Tools (5 min)• Setup, Binding and Message Handling (15 min)• Advanced Message Options (5 min)

• Delivery & “Disposition Status” Receipts • Security, Authentication and Encryption

• Tips & Next Steps (5 min)

Page 3: CFMX7: SMS Applications Made Easy Damon Cooper Director of Engineering, ColdFusion

Introduction to SMS & ColdFusion About Short Message Service (SMS):

• Designed for sending and receiving text messages to/from mobile phones and devices.

• Part of GSM cellular standard (1991)• SMS usage is extensive worldwide and increasing

pervasive in US:• China: 550 Billion SMS messages in 2004, 1.4 Trillion

by 2006. (CHINA COMMS Network) • UK: 23-25 Billion SMS messages for 2004 (MDA)• Used by over 70% of mobile phone users worldwide• Most messages delivered in <10 seconds

• SMS US and Canadian carriers include: AT&T Wireless, Verizon, Sprint, Cingular, Nextel, T-Mobile, Bell Mobility, Rogers/AT&T, Telus Mobility and Microcell, etc.

• Secure, reliable, virtually everywhere and basically works the same regardless of handset or carrier.

Page 4: CFMX7: SMS Applications Made Easy Damon Cooper Director of Engineering, ColdFusion

Introduction to SMS & ColdFusion Benefits

• Fully mobile: available anywhere, anytime w/store-and-forward

• Secure: GSM has built-in authentication and encryption• Everywhere: No special hardware or software required for

users• Push or Pull: excellent for timely alerts, alerts with simple

responses, simple textual menus, info lookup, etc Limitations

• Limited message length (160 chars)• Device keypad interfaces make typing lengthy messages

cumbersome• Response time can vary and can impact app usability

and design

Page 5: CFMX7: SMS Applications Made Easy Damon Cooper Director of Engineering, ColdFusion

Introduction to SMS & ColdFusion Key SMS Terminology

• SMSC: Short Message Service Center (carrier or aggregator). These provision SMPP accounts and interface with mobile network.

• SMPP: • “Short Message Peer to Peer” protocol. • ColdFusion uses this to talk to SMSC’s. • Industry standard protocol simplifies integration of

custom applications with wireless mobile networks. Widely deployed in mobile telecom industry.

• v3.4 is most widely in use currently but next version, v5.0 is in draft.

• MO: Mobile Originated. Messages sent from a device.• MT: Mobile Terminated. Messages sent to a device.• ESME: External Short Message Entity (your application)• Aggregator: Company providing a single interface (ie

SMPP account) to access multiple cellular provider networks.

Page 6: CFMX7: SMS Applications Made Easy Damon Cooper Director of Engineering, ColdFusion

Introduction to SMS & ColdFusion Technical Use Case Scenarios

• PersonPerson (2-way chat)• AppPerson (1-way Push)• AppPerson (2-way interactive, Push)• PersonApp (2-way interactive, Pull)• AppApp (2-way interactive, Push or Pull)

SMS Application Examples• Airline 2-way flight change notification and rebooking• SMS Banking, ABC News, UPS Tracking, American Idol • Mass media & mobile apps (voting, contests, 411 lookups,

customer feedback, etc)• Stock & Weather Alerts (1- or 2-way Push or Pull)• Any mobile GSM device (transmit GPS & telemetry, remote

device monitoring, vending machines, gas pumps, even Coke cans (Coca Cola US summer contest), etc.

• YOUR ENTERPRISE APPS (PO approvals, critical notifications, phone directory lookup, CEO dashboard & alerts, meeting reminders, cancellations, SMS-Email bridging, etc)

Page 7: CFMX7: SMS Applications Made Easy Damon Cooper Director of Engineering, ColdFusion

Introduction to SMS & ColdFusion

Page 8: CFMX7: SMS Applications Made Easy Damon Cooper Director of Engineering, ColdFusion

Introduction to SMS & ColdFusion SMS Basic Operation:

• Messages can be 160 chars (Latin) or 70 chars (non-Latin, such as Arabic and Chinese)

• Messages are sent from device to an SMSC• SMSC interacts with mobile network to figure out

user availability and location• SMS uses the GSM control channel (rather

than the voice channel) • End user can receive an SMS whether or

not a voice call is in progress - the phone need only be turned on

Page 9: CFMX7: SMS Applications Made Easy Damon Cooper Director of Engineering, ColdFusion

Introduction to SMS & ColdFusion SMS Basic Operation (Cont’d):

• If device is off, the SMSC holds message for “Validity Period” (usually default of 72 hours) and delivers message to device when turned on

• If desired, message status receipts (“delivered”, “undeliverable for validity period”, etc) are sent to originator

• With SMS the sender generally pays some per-message fee (bulk packages usually available) • Big difference between SMS and email

(SPAM)

Page 10: CFMX7: SMS Applications Made Easy Damon Cooper Director of Engineering, ColdFusion

Introduction to SMS & ColdFusion Building Mobile SMS-Enabled Applications

• SMS is compelling as a pervasive platform for many types of mobile applications, BUT

• Building & deploying SMS mobile-enabled apps today can be complex and costly

• Menu-based or simple responses

• Need session management

• Need scalable, failsafe, throttling, metering, monitoring, logging and auto-rebind capabilities

Page 11: CFMX7: SMS Applications Made Easy Damon Cooper Director of Engineering, ColdFusion

Introduction to SMS & ColdFusion Building Mobile SMS-Enabled Applications

• ColdFusion MX 7 and SMS:• Create new mobile applications or mobile-

enable existing apps• Build and test with integrated SMS

development & testing tools• Deploy on standard Java J2EE servers

quickly and simply• Do all this in as little as 5 minutes with

ColdFusion MX 7• Enterprise-Ready: (ie AT&T Wireless

Certified)

Page 12: CFMX7: SMS Applications Made Easy Damon Cooper Director of Engineering, ColdFusion

Introduction to SMS & ColdFusion

Page 13: CFMX7: SMS Applications Made Easy Damon Cooper Director of Engineering, ColdFusion

SMS App Development & Deployment Overview

Development Process:1. Design your application2. Develop your ColdFusion CFCs, CFM pages, and any

other application elements3. Test your application using built-in SMSC Test Server, pre-

configured Test SMS Gateway instance and mobile device client simulator

Deployment Process:1. Establish an SMPP account with SMSC provider /

aggregator2. Configure a new SMS Gateway instance to use your

SMSC’s SMPP Server. Configure the gateway using the information provided by your provider

3. Test your application using the telecommunication provider’s SMSC and target mobile devices and when ready, go live!

Page 14: CFMX7: SMS Applications Made Easy Damon Cooper Director of Engineering, ColdFusion

ColdFusion Event Gateway Overview ColdFusion Event Gateways:

• Pluggable protocol-specific elements which allow ColdFusion applications to respond and interact with the outside world

• Generate external events or messages from ColdFusion applications

• Pass along external events or messages to ColdFusion applications

• Some of the Gateways provided with ColdFusion MX 7:• SMS Gateway• XMPP/Jabber IM Gateway• IBM/Lotus Sametime IM Gateway• JMS Gateway• Asynchronous CFML Gateway• TCP/IP Socket Gateway• Directory Watcher Gateway• Example Gateway (with source)

Page 15: CFMX7: SMS Applications Made Easy Damon Cooper Director of Engineering, ColdFusion

ColdFusion Event Gateway Overview Event Gateway Architecture Features:

• Published Gateway API for 3rd parties who wish to create new ColdFusion MX 7 Gateways

• Multithreaded, asynchronous message and event handling and logging

• Gateway Type and Instance Administrative interface & API• Allow Coldfusion MX 7 Gateway applications to be written using

just CFCs to listen for and respond directly to external events• Can be used to Gateway-enable .NET, J2EE or legacy apps• Require NO Java or threading knowledge to create Gateway

applications• Full Gateway apps can be packaged and deployed as pure J2EE

EAR/WAR files on standard J2EE servers• Provides automatic “Session” and persistent “Client” variable

scope management and logging facilities• Highly tuned, scalable and lightweight for maximum performance• Full textual menu-driven app framework included

Page 16: CFMX7: SMS Applications Made Easy Damon Cooper Director of Engineering, ColdFusion

ColdFusion Event Gateway Overview

Page 17: CFMX7: SMS Applications Made Easy Damon Cooper Director of Engineering, ColdFusion

The ColdFusion SMS Gateway SMS Gateway Overview

• Establishes a two-way SMPP-over-TCP/IP connection to SMSC provider

• SMPP provider provides an address (telephone number or Short Code), TCP/IP connection and SMPP configuration setting information for account

• Must associate SMS Gateway “instances” with configuration files. Default starting CFG files in {cfusion}\gateway\config\*.cfg

• SMS Gateway conforms to SMPP 3.4 (most commonly deployed currently), available from SMS Forum at http://www.smsforum.net

Page 18: CFMX7: SMS Applications Made Easy Damon Cooper Director of Engineering, ColdFusion

The ColdFusion SMS Gateway SMS Gateway Overview (Cont’d)

• ColdFusion applications can initiate and send messages (“push”) to SMS-enabled devices with the “sendGatewayMessage()” function

• To use sendGatewayMessage(), specifiy:• Destination mobile device telephone number• SMS Gateway instance ID• Message and advanced message options

• Mobile devices send messages to a ColdFusion listener CFC by using SMS Gateway instance’s telephone number or Short Code

• Incoming messages include the originating device’s phone number, so listener CFCs can respond to messages sent by mobile devices

Page 19: CFMX7: SMS Applications Made Easy Damon Cooper Director of Engineering, ColdFusion

ColdFusion SMS Development Tools Built-in tools

• SMSC Test Server• Simulates the phone company or 3rd part aggregator’s

SMSC Server• Started in the Administrtor• Off by default on start

• Pre-configured SMSC Test Gateway Instance• Pre-configured to talk to SMSC Test Server• Not running by default• Pre-configured to point to sample gateway menuing

application in {cfroot}\gateway\cfc\examples\menu.cfc• SMSC Test Client Device

• Simulates basic cell phone with SMS “chat” mode• Run from Windows Start Menu or batch file• Pre-configured to talk to the SMSC Test Server

Page 20: CFMX7: SMS Applications Made Easy Damon Cooper Director of Engineering, ColdFusion

ColdFusion SMS Development Tools Demo

Page 21: CFMX7: SMS Applications Made Easy Damon Cooper Director of Engineering, ColdFusion

Setup, Binding and Message Handling SMS Gateway Setup:

• Create a new SMS Gateway instance and set Config and CFC files

• SMS Gateway must bind to SMSC before handling messages

• CFG file specifies all params and other key configurables

Page 22: CFMX7: SMS Applications Made Easy Damon Cooper Director of Engineering, ColdFusion

Setup, Binding and Message Handling SMS Gateway Setup:

• CFG file params include:• CFC method to be called on incoming SMSC message.

Default=“onIncomingMessage”.• Outbound message throttle rate (def=100, 0=unlimited)• Mode (synchronous/asynchronous)

– Synchronous: wait for SMSC response. SendGatewayMessage returns messageID or empty string if error.

– Asynchronous: don’t wait for SMSC response. Empty string returned.

• Retry behavior after specific types of errors.• Bind connection EnquireLink check interval (checks if

connection is OK)• Number of bind attempts before giving up (def -1 = try

forever) • Bind retry interval. How long to wait between rebind

attempts. Def=10 seconds

Page 23: CFMX7: SMS Applications Made Easy Damon Cooper Director of Engineering, ColdFusion

Setup, Binding and Message Handling Logged events and exceptions go to

{cfusion}\log\eventgateway.log Inbound Message Handling

• Specially-handled messages:• Unbind directive: SMS Gateway unbinds and

restarts and attempts to rebind• EnquireLink or status request: SMS Gateway

responds with appropriate response• Messages forwarded to your CFC can be new

incoming text messages or status notifications about previously-sent messages

• A CFEvent structure is created & loaded with short messages text, originator, recipient, etc and passed to listener CFC method

Page 24: CFMX7: SMS Applications Made Easy Damon Cooper Director of Engineering, ColdFusion

Setup, Binding and Message Handling SMS Gateway CFEvent Structure:

Example:

CFEvent Field Value

OriginatorID Contents of PDU source_addr field (address of sending device)CfcMethod Listener CFC method name. Value of configuration file cfc-method entry,

or "onIncomingMessage" if configuration file entry omittedData.MESSAGE Contents of the short_message field of the PDU.Data.sourceAddress Address of the device that sent this messageData.destAddress Address to which message was sent; an address in the range

specified by the gateway configuration file address-range setting.GatewayType “SMS”

Page 25: CFMX7: SMS Applications Made Easy Damon Cooper Director of Engineering, ColdFusion

Simple “Echo” Pull SMS App<cfcomponent> <cffunction name="onIncomingMessage"> <cfargument name="CFevent" type="struct" required="YES">

<cfscript> /* Create a return structure that contains the message. */

retValue = structNew(); retValue.command = "submit"; retValue.destAddress = arguments.CFEVENT.originatorid; retValue.shortMessage = "Echo: " & CFEvent.Data.MESSAGE; </cfscript>

<!--- send the return message ---> <cfreturn retValue>

</cffunction></cfcomponent>

Page 26: CFMX7: SMS Applications Made Easy Damon Cooper Director of Engineering, ColdFusion

Setup, Binding and Message Handling Sending Outbound Messages

• Put the command, destination and data in a structure and then either:

• “Return” it in response to an incoming message, OR

• Use the SendGatewayMessage(gatewyID, data) function

• Typical outbound data structure:Field Contents

Command Command (ie "submit" or "submitMulti")shortMessage or messagePayload

Message contents (max 254 bytes, usually max 160 for shortMessage, 64K for messagePayload if supported)

destAddress Address to which to send the message.sourceAddress Address of this application (can be omitted if specified in the CFG file)

Page 27: CFMX7: SMS Applications Made Easy Damon Cooper Director of Engineering, ColdFusion

Setup, Binding and Message Handling Slightly more evolved SMS Demo

(temperature converter):

Page 28: CFMX7: SMS Applications Made Easy Damon Cooper Director of Engineering, ColdFusion

Sending SMS from a Web App

<cfscript>

/* Create a structure that contains the message. */

msg = structNew();

msg.command = "submit";

msg.destAddress = "5551234";

msg.shortMessage = form.SMSMessage;

ret = sendGatewayMessage("SMS Menu App - 5551212", msg);

</cfscript>

Page 29: CFMX7: SMS Applications Made Easy Damon Cooper Director of Engineering, ColdFusion

Setup, Binding and Message Handling Sending SMS from a Web Page Demo:

Page 30: CFMX7: SMS Applications Made Easy Damon Cooper Director of Engineering, ColdFusion

Advanced Message Options Requesting Message Disposition Status

• Include a RegisteredDelivery field in Data parameter of sendGatewayMessage() function or return variable of CFC listener method:

• 0 = (Default) Do not return delivery information• 1 = Return a receipt if the message is not

delivered before the time out (Validity Period)• 2 = Return a receipt if the message is delivered

or fails.• Some providers support intermediate delivery

notifications (see provider’s docs)• Must use synchronous mode to get a messageID

Page 31: CFMX7: SMS Applications Made Easy Damon Cooper Director of Engineering, ColdFusion

Advanced Message Options Handling Message Disposition Status • Incoming message routine must handle these special

messages: need to parse and unload MessageID and Status fields from “Data.Message”

• Format (from Appendix B of SMPP 3.4 Spec):

“id:IIIIIIIIII sub:SSS dlvrd:DDD submit date:YYMMDDhhmm done date:YYMMDDhhmm stat:DDDDDDD err:E Text: ...”

Page 32: CFMX7: SMS Applications Made Easy Damon Cooper Director of Engineering, ColdFusion

Advanced Message Options

Handling Message Disposition Status • Can match up status MessageID with any sent

MessageID and act accordingly. – If a message expired before it was delivered, you

might send a new message to another person (ie emergency personnel) or take some other action.

• For details of the SMSC delivery receipt message structure, see Appendix B of the SMPP 3.4 specification.

Page 33: CFMX7: SMS Applications Made Easy Damon Cooper Director of Engineering, ColdFusion

Advanced Message Options Requesting Message Disposition Status

• Sample CFEvent with SMSC Disposition Status:

Page 34: CFMX7: SMS Applications Made Easy Damon Cooper Director of Engineering, ColdFusion

Advanced Message Options Security, Authentication and Encryption

• Voice and data (including SMS message traffic) between SMSC and mobile device is encrypted as part of the GSM standard.

• The mobile user's identity is authenticated first, before encrypted communication session begins.

• AT&T Wireless has a page that describes the various security aspects of GSM and SMS: http://www.attwireless.com/3G/TechnologyCenter/security/controls_station.htm

• The connection between CF and SMSC:• The SMPP standard provides for login/bind

authentication and authorization, but • No inherent SMPP support encryption of message

traffic. • Most SMSC providers require a secure hardware or

software VPN connection around the SMPP connection.• The pervasiveness, mobility and security of the SMS

platform paves the way for development of some very exciting business and m-commerce applications!

Page 35: CFMX7: SMS Applications Made Easy Damon Cooper Director of Engineering, ColdFusion

Tips & Next Steps Get ColdFusion MX 7 and get started now! Deployment considerations:

• 5-digit cross-carrier US Short-Code (like the American Idol TV show), needs to obtained via http://www.usshortcodes.com and setup SMPP aggregator/provider account (ie m-Qube, Mobileway, etc).

• Easy to setup, but takes 4-9 weeks, so allow lead time • Short Codes come in a number of varieties:

• Carrier-specific (ie 4-digit AT&T Wireless Short Code)• 5-digit US Short Code (http://www.usshortcodes.com)

$1k/month• Universal Short Code (tougher to get)

Page 36: CFMX7: SMS Applications Made Easy Damon Cooper Director of Engineering, ColdFusion

Tips & Next Steps Cont’d

• If audience on only one carrier, going carrier-specific is probably a good choice and provides lightening fast response times

• If audience is US mixed-carrier, US Short Code and 3rd party aggregator SMPP provider is good choice with very good response times

• Can have a "SIM" modem setup at an aggregator or carrier, but

response times VERY slow, capacity very limited, but for very small applications and audiences, this may suffice.  Also much cheaper.

• SMPP accounts range from $40/month for development accounts to many thousands, based on volume. US AT&T Wireless SMPP account can be had for about $500/month: http://www.attwireless.com/press/releases/2002_releases/052102.jhtml

Page 37: CFMX7: SMS Applications Made Easy Damon Cooper Director of Engineering, ColdFusion

CFMX7: SMS Applications Made Easy

Damon CooperDirector of Engineering, ColdFusion