The Kipokezi App Framework
     February 27, 2012


                  John Carroll
                  Director of Technology
                  ForgetMeNot Software


                 Internet messaging on every mobile
Who am I
• Me: John Carroll (kipapps@fmnsoft.com)
• Director of Technology
  – ForgetMeNot Africa
• Working Programmer for 18 years
• Blog: http://blogs.zdnet.com/carroll
• Twitter:
  – @FmnJohn
  – @FMNA / #KIPAPPS

                            Internet messaging on every mobile
ForgetMeNot Africa
• Subsidiary of ForgetMeNot Software
• Extensible Messaging Platform (eTXT)
  – Plugins for
     •   Email
     •   IM (Live Messenger, Facebook, GTalk)
     •   Facebook posts and comments
     •   Custom tools (CV Tool, #BUZZ, Spinner)
• Lives in our data center
• Licensed to Carriers

                                   Internet messaging on every mobile
Kipokezi
•   Why do you care?
•   Our brand in Kenya
•   On Safaricom network
•   Safaricom.com email
    – Google-hosted account


            http://www.kipokezi.com


                              Internet messaging on every mobile
Kipokezi Concept
• Let’s any phone get on
  Facebook                 GTalk
  Live Messenger           More..
  Email


• Uses SMS
  – Send to virtual number “contact”
• Price per message: 0.25Ksh


                                    Internet messaging on every mobile
How it works
• Command and control: 223
  – Online / offline
  – Who Online
  – Find
  – Contact creation
• Chat interactions: virtual numbers
  – IM / new contact “invites”
• Coming soon: USSD, Dasuba Messenger

                                 Internet messaging on every mobile
Internet messaging on every mobile
Internet messaging on every mobile
Internet messaging on every mobile
Extensibility API
• Let’s third parties leverage our connection
• Creates a new “trigger” on 223
• Creates a 2-way channel to your server
  – Session based on “virtual number”
  – 60 minutes timeout - sliding
• Session maintained
  – Per Session
  – Per Customer

                              Internet messaging on every mobile
Register your app
1. Visit:
  a) www.forgetmenotafrica.com/developers
2. Register as a developer
3. Go to:
  a) www.safaricom.net/Registration
4. Click “Register as a Developer”



                             Internet messaging on every mobile
Internet messaging on every mobile
Internet messaging on every mobile
Internet messaging on every mobile
Internet messaging on every mobile
Writing your app
• Simple call to your server
  – Will announce a hosting partner soon
• Support these protocols (all HTTP)
  – SOAP / XML
  – JSON
  – HTTP POST (form encoding)
• Specify a “trigger” command
• Test with your dev “short code”

                               Internet messaging on every mobile
Internet messaging on every mobile
Internet messaging on every mobile
Application State
• Session State
  – Passed with each subsequent call
  – Lives as long as the “virtual number”
• Customer State
  – Crosses session boundary
  – Associated with a Kipokezi account
  – Passed with each call
• Both are unstructured strings

                               Internet messaging on every mobile
JSON Request
POST http://127.0.0.1:60047/SomeService.php HTTP/1.1
Content-Type: application/json; charset=utf-8
Host: 127.0.0.1:60047
Content-Length: 105
Expect: 100-continue

{
        "customerstate":null,
        "id":"09883dc9-a90c-4bb6-b71f-73e94a56e618",
        "msg":"#calc Dave",
        "sessionstate":null
}




                                          Internet messaging on every mobile
JSON Response
HTTP/1.1 200 OK
Date: Fri, 06 Jan 2012 12:30:30 GMT
Content-Type: application/json; charset=utf-8
Content-Length: 138
Connection: Close

{
         "customerstate":null,
         "id":"09883dc9-a90c-4bb6-b71f-73e94a56e618",
         "msg":"Hi Dave. Reply with the first number to add",
         "sessionstate":“Dave“
}




                                                Internet messaging on every mobile
HTTP POST Request
POST http://127.0.0.1:60047/FormPostCalc.ashx HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Host: 127.0.0.1:60047
Content-Length: 80
Expect: 100-continue
Connection: Keep-Alive

Id=d1a7ecd6-5fe5-4d5a-9d85-
0c71aa1cbd04&Message=#c2&SessionState=&CustomerState=




                                          Internet messaging on every mobile
HTTP POST Response
HTTP/1.1 200 OK
Date: Fri, 06 Jan 2012 12:30:25 GMT
Content-Type: text/xml; charset=utf-8
Content-Length: 140
Connection: Close

<mt id="5b84f57d-0cc7-4840-adc5-f78c62a08e52">
         <msg>Reply with the first number to add</msg>
         <sessionstate />
         <customerstate />
</mt>




                                            Internet messaging on every mobile
Extensibility Roadmap
• USSD
• Push SMS to User
  – Requires user authorization
  – Daily limit
• Group Chat
  – Loop in Social Graph
• Reusable Algorithms
  – Group Chat “Chooser” wizard

                              Internet messaging on every mobile
Important Points
• Revenue share: 20% of our rev share
• Only make money from SMS-MO
• Apps MUST encourage dialogue
  – Approval relies on this
• Make your apps “sticky”
  – Things people need regularly
  – Local Content (e.g. Nairobi traffic reports)
  – Fills a need

                                Internet messaging on every mobile
Apps Challenge
•   Deadline for submission: 23rd March
•   Shortlist announced: April 2nd
•   Hackathon: 13th-15th April
•   Awards: 15th April
•   Prizes
    – Up to 3 iPads
    – $2000


                             Internet messaging on every mobile
Internet messaging on every mobile
Keep in Touch!
•   This is version 1.0
•   What do you want on the roadmap?
•   What isn’t working correctly?
•   The URLs
    – https://www.facebook.com/fmnafrica
    – https://www.facebook.com/groups/kipapps
    – http://www.forgetmenotafrica.com



                              Internet messaging on every mobile

Kipokezi app framework

  • 1.
    The Kipokezi AppFramework February 27, 2012 John Carroll Director of Technology ForgetMeNot Software Internet messaging on every mobile
  • 2.
    Who am I •Me: John Carroll (kipapps@fmnsoft.com) • Director of Technology – ForgetMeNot Africa • Working Programmer for 18 years • Blog: http://blogs.zdnet.com/carroll • Twitter: – @FmnJohn – @FMNA / #KIPAPPS Internet messaging on every mobile
  • 3.
    ForgetMeNot Africa • Subsidiaryof ForgetMeNot Software • Extensible Messaging Platform (eTXT) – Plugins for • Email • IM (Live Messenger, Facebook, GTalk) • Facebook posts and comments • Custom tools (CV Tool, #BUZZ, Spinner) • Lives in our data center • Licensed to Carriers Internet messaging on every mobile
  • 4.
    Kipokezi • Why do you care? • Our brand in Kenya • On Safaricom network • Safaricom.com email – Google-hosted account http://www.kipokezi.com Internet messaging on every mobile
  • 5.
    Kipokezi Concept • Let’sany phone get on Facebook GTalk Live Messenger More.. Email • Uses SMS – Send to virtual number “contact” • Price per message: 0.25Ksh Internet messaging on every mobile
  • 6.
    How it works •Command and control: 223 – Online / offline – Who Online – Find – Contact creation • Chat interactions: virtual numbers – IM / new contact “invites” • Coming soon: USSD, Dasuba Messenger Internet messaging on every mobile
  • 7.
  • 8.
  • 9.
  • 10.
    Extensibility API • Let’sthird parties leverage our connection • Creates a new “trigger” on 223 • Creates a 2-way channel to your server – Session based on “virtual number” – 60 minutes timeout - sliding • Session maintained – Per Session – Per Customer Internet messaging on every mobile
  • 11.
    Register your app 1.Visit: a) www.forgetmenotafrica.com/developers 2. Register as a developer 3. Go to: a) www.safaricom.net/Registration 4. Click “Register as a Developer” Internet messaging on every mobile
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
    Writing your app •Simple call to your server – Will announce a hosting partner soon • Support these protocols (all HTTP) – SOAP / XML – JSON – HTTP POST (form encoding) • Specify a “trigger” command • Test with your dev “short code” Internet messaging on every mobile
  • 17.
  • 18.
  • 19.
    Application State • SessionState – Passed with each subsequent call – Lives as long as the “virtual number” • Customer State – Crosses session boundary – Associated with a Kipokezi account – Passed with each call • Both are unstructured strings Internet messaging on every mobile
  • 20.
    JSON Request POST http://127.0.0.1:60047/SomeService.phpHTTP/1.1 Content-Type: application/json; charset=utf-8 Host: 127.0.0.1:60047 Content-Length: 105 Expect: 100-continue { "customerstate":null, "id":"09883dc9-a90c-4bb6-b71f-73e94a56e618", "msg":"#calc Dave", "sessionstate":null } Internet messaging on every mobile
  • 21.
    JSON Response HTTP/1.1 200OK Date: Fri, 06 Jan 2012 12:30:30 GMT Content-Type: application/json; charset=utf-8 Content-Length: 138 Connection: Close { "customerstate":null, "id":"09883dc9-a90c-4bb6-b71f-73e94a56e618", "msg":"Hi Dave. Reply with the first number to add", "sessionstate":“Dave“ } Internet messaging on every mobile
  • 22.
    HTTP POST Request POSThttp://127.0.0.1:60047/FormPostCalc.ashx HTTP/1.1 Content-Type: application/x-www-form-urlencoded Host: 127.0.0.1:60047 Content-Length: 80 Expect: 100-continue Connection: Keep-Alive Id=d1a7ecd6-5fe5-4d5a-9d85- 0c71aa1cbd04&Message=#c2&SessionState=&CustomerState= Internet messaging on every mobile
  • 23.
    HTTP POST Response HTTP/1.1200 OK Date: Fri, 06 Jan 2012 12:30:25 GMT Content-Type: text/xml; charset=utf-8 Content-Length: 140 Connection: Close <mt id="5b84f57d-0cc7-4840-adc5-f78c62a08e52"> <msg>Reply with the first number to add</msg> <sessionstate /> <customerstate /> </mt> Internet messaging on every mobile
  • 24.
    Extensibility Roadmap • USSD •Push SMS to User – Requires user authorization – Daily limit • Group Chat – Loop in Social Graph • Reusable Algorithms – Group Chat “Chooser” wizard Internet messaging on every mobile
  • 25.
    Important Points • Revenueshare: 20% of our rev share • Only make money from SMS-MO • Apps MUST encourage dialogue – Approval relies on this • Make your apps “sticky” – Things people need regularly – Local Content (e.g. Nairobi traffic reports) – Fills a need Internet messaging on every mobile
  • 26.
    Apps Challenge • Deadline for submission: 23rd March • Shortlist announced: April 2nd • Hackathon: 13th-15th April • Awards: 15th April • Prizes – Up to 3 iPads – $2000 Internet messaging on every mobile
  • 27.
  • 28.
    Keep in Touch! • This is version 1.0 • What do you want on the roadmap? • What isn’t working correctly? • The URLs – https://www.facebook.com/fmnafrica – https://www.facebook.com/groups/kipapps – http://www.forgetmenotafrica.com Internet messaging on every mobile