1. Go to this page and download the library: Download faakolore/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/ */
faakolore / ussd example snippets
$$this->addPayload('key', $this->value());
$this->payload('key');
$this->addPayload('products', $array, true);
public function options(): array
{
return $this->map('humanized', 'products');
}
namespace App\Screens;
use Faakolore\USSD\Screen;
use Faakolore\USSD\Http\Validates;
class EnterPhoneNumber extends Screen
{
use Validates;
protected function message() : string
{
return 'Enter your phone number';
}
//...
protected function execute()
{
$this->validate($this->request, 'phone');
$this->addPayload('phone', $this->value());
return (new NextScreen($this->request))->render();
}
protected function rules() : string
{
return 'numeric|regex:/(088)[0-9]{7}/';
}
}
artisan make:ussd-adapter <AggregatorName>
use Faakolore\USSD\Http\UssdRequestInterface;
class HubtelRequest implements UssdRequestInterface
{
/**
* @var array
*/
private $request;
public function __construct()
{
$this->request = json_decode(request()->getContent(), true);
}
public function getMsisdn(): string
{
return $this->request['Mobile'];
}
// ...
}
use Faakolore\USSD\Http\UssdResponseInterface;
use Faakolore\USSD\Screen;
class HubtelResponse implements UssdResponseInterface
{
public function respond(Screen $screen)
{
return $this->toJson($screen);
}
}
namespace Faakolore\USSD\Factories\RequestFactory;
class RequestFactory
{
public function make(): UssdRequestInterface
{
switch (request()->route('adapter')) {
case 'flares' :
return resolve(FlaresRequest::class);
case 'nalo':
return resolve(NaloRequest::class);
case 'hubtel':
return resolve(HubtelRequest::class);
default:
return resolve(TruRouteRequest::class);
}
}
}
namespace Faakolore\USSD\Factories\ResponseFactory;
class ResponseFactory
{
public function make(): UssdResponseInterface
{
switch (request()->route('adapter')) {
case 'flares':
return resolve(FlaresResponse::class);
case 'nalo':
return resolve(NaloRequest::class);
case 'hubtel':
return resolve(HubtelRequest::class);
default:
return resolve(TruRouteResponse::class);
}
}
}
$this->request->trail->setLocale('en');
public function message(): string
{
return __("screens.welcome_message");
}
public function execute()
{
$locale = $this->value() == 'English' ? 'en' : 'fr';
$this->request->trail->setLocale($locale);
return (new NextScreen($this->request))->render();
}
// app/Screens/Subscribe.php
namespace App\Screens;
use Faakolore\USSD\Screen;
class Subscribe extends Screen
{
public function message(): string
{
return "Please select a plan you want to subscribe to";
}
public function options(): array
{
return ['Plan 1', 'Plan 2', 'Plan 3'];
}
public function execute()
{
// save the request value to session object
// to access it in the next screen with $this->payload($key)
$this->addPayload('plan', $this->value());
return (new ConfirmSubscription($this->request))->render();
}
public function previous(): Screen
{
return new Welcome($this->request);
}
}
// app/Screens/ConfirmSubscription.php
namespace App\Screens;
use Exception;
use Faakolore\USSD\Screen;
use Faakolore\USSD\Exceptions\UssdException;
class ConfirmSubscription extends Screen
{
public function message(): string
{
return sprintf("Please confirm subscription to %s", $this->payload('plan'));
}
public function options(): array
{
return ['Confirm', 'Cancel'];
}
public function execute()
{
if ($this->value() === 'Cancel') return $this->previous()->render();
$service = new SubscriptionService($this->request->msisdn);
try {
$service->subscribe($this->payload('plan'));
return (new Subscribed($this->request))->render();
} catch (Exception $exception) {
throw new UssdException($this->request, "Subscription failed. Please try again later");
}
}
public function previous(): Screen
{
return new Subscribe($this->request);
}
}
php artisan ussd:install
php artisan make:ussd <name>
php artisan ussd:list <phone>
php artisan ussd:audit <session-id>
bash
php artisan ussd:clean-up --days=30
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.