1. Go to this page and download the library: Download bitmarshals/instant-ussd library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
bitmarshals / instant-ussd example snippets
// Within your Controller
use Bitmarshals\InstantUssd\InstantUssd;
use Bitmarshals\InstantUssd\Response;
use InstantUssd\UssdValidator;
$instantUssdConfig = $config['instant_ussd'];
$instantUssd = new InstantUssd($instantUssdConfig, $this);
$ussdParams = $_POST;
$ussdText = $ussdParams['text'];
// package incoming data in a format instant-ussd understands
$ussdService = $instantUssd->getUssdService($ussdText);
$ussdData = $ussdService->packageUssdData($ussdParams);
// Should we EXIT early?
$isExitRequest = $ussdService->isExitRequest();
if ($isExitRequest === true) {
return $instantUssd->exitUssd([])
->send();
}
// Should we SHOW HOME Page?
$isFirstRequest = $ussdService->isFirstRequest();
$userRequestsHomePage = $ussdService->isExplicitHomepageRequest();
if ($isFirstRequest || $userRequestsHomePage) {
// set your home page
$yourHomePage = "home_instant_ussd";
return $instantUssd->showHomePage($ussdData, $yourHomePage)
->send();
}
// Should we GO BACK?
$isGoBackRequest = $ussdService->isGoBackRequest();
if ($isGoBackRequest === true) {
$resultGoBak = $instantUssd->goBack($ussdData);
if ($resultGoBak instanceof Response) {
return $resultGoBak->send();
}
// fallback to home page if previous menu missing
return $instantUssd->showHomePage($ussdData, 'home_*')
->send();
}
// get last served menu_id from database
$lastServedMenuId = $instantUssd->retrieveLastServedMenuId($ussdData);
// check we got last_served_menu
if (empty($lastServedMenuId)) {
// fallback to home page
return $instantUssd->showHomePage($ussdData, 'home_*')
->send();
}
// Get $lastServedMenuConfig. The config will used in validation trigger below
// Set $ussdData['menu_id'] to know the specific config to retreive
$ussdData['menu_id'] = $lastServedMenuId;
$lastServedMenuConfig = $instantUssd->retrieveMenuConfig($ussdData);
// check we have $lastServedMenuConfig
if (empty($lastServedMenuConfig)) {
// fallback to home page
return $instantUssd->showHomePage($ussdData, 'home_*')
->send();
}
// VALIDATE incoming data
$validator = new UssdValidator($lastServedMenuId, $lastServedMenuConfig);
$isValid = $validator->isValidResponse($ussdData);
if (!$isValid) {
// handle invalid data
$nextScreenId = $lastServedMenuId;
// essentially we're re-rendering the menu with error message
return $instantUssd->showNextScreen($ussdData, $nextScreenId)
->send();
}
// send valid data FOR PROCESSING. Save to db, etc
// this step should give us a pointer to the next screen
$nextScreenId = $instantUssd->processIncomingData(
$lastServedMenuId, $ussdData);
if (empty($nextScreenId)) {
// we couldn't find the next screen
return $instantUssd->showError($ussdData, "Error. "
. "Next screen could not be found.")
->send();
}
// we have the next screen; SHOW NEXT SCREEN
return $instantUssd->showNextScreen($ussdData, $nextScreenId)
->send();
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.