Overview
USSD (Unstructured Supplementary Service Data) integration provides an interactive menu system for managing contracts without requiring internet connectivity or a smartphone. Users dial a short code to access VoicePact features.No Internet Required
Works on any phone without data or WiFi connection
Interactive Menus
Navigate through hierarchical menus with number inputs
Real-Time Updates
Check contract status and confirm deliveries instantly
Session Management
Maintains context across menu navigation
How It Works
Navigate Menus
User selects options by entering numbers, navigating through contract lists and details
Main Menu
When users dial the USSD code, they see:Menu Structure
View My Contracts
Displays active contracts for the user’s phone number:Confirm Delivery
Options for delivery confirmation:Check Payments
Help & Support
USSD Handler Implementation
The main USSD endpoint handles all menu interactions:Session Management
USSD sessions maintain state across menu navigation:Session Creation
Response Format
USSD responses use specific prefixes:- CON: Continue session - show menu and wait for input
- END: End session - show message and close
Menu Navigation
Menu handlers process user input based on current menu:Contract Queries
Retrieve contracts for a phone number:Status Updates
Update contract status from USSD:Testing USSD Menus
Test menu generation without dialing:Test Response
Status Emojis
Contracts display status indicators:Menu Templates
Generate contract detail menus:Error Handling
Gracefully handle errors in USSD flow:Best Practices
Keep Menus Short
Keep Menus Short
Maintain Context
Maintain Context
- Store selected items in session
- Allow back navigation
- Provide breadcrumbs
- Clear session on exit
Handle Timeouts
Handle Timeouts
- Set 5-minute session expiry
- Save progress automatically
- Allow resume from last position
- Clear expired sessions
Provide Feedback
Provide Feedback
- Confirm actions immediately
- Show clear success/error messages
- Notify other parties automatically
- Send SMS confirmation
Integration with Africa’s Talking
VoicePact uses Africa’s Talking USSD API:- Service Code: Configured in config.py
- Handler Endpoint: POST /api/v1/ussd/
- Session Management: Automatic via Africa’s Talking
- Response Format: CON/END prefixed text
Database Models
USSD session model:Common Use Cases
Delivery Confirmation
- Farmer delivers goods
- Dials USSD code
- Selects “Confirm Delivery”
- Enters contract ID or selects from list
- Confirms full delivery
- Buyer notified via SMS
- Payment released automatically
Status Check
- User dials USSD code
- Selects “View My Contracts”
- Sees list of active contracts
- Selects contract for details
- Views current status and amount
Issue Reporting
- User discovers problem
- Dials USSD code
- Navigates to contract
- Selects “Report Issue”
- Contract marked as disputed
- Support team notified
Next Steps
SMS Verification
Learn about SMS confirmations
Voice Contracts
Create contracts from voice
Mobile Money
Integrate payments
Digital Signatures
Understand signatures