1. Go to this page and download the library: Download simotel/simotel-php-connect 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/ */
simotel / simotel-php-connect example snippets
$config = Simotel::getDefaultConfig();
$config["simotelApi"]= [
'api_auth' => 'both', // simotel api authentication: basic,token,both
'api_user' => 'apiUser',
'api_pass' => 'apiPass',
'api_token' => 'apiToken',
'server_address' => 'http://simotelServer/api/v4',
],
$simotel = new \Simotel\Simotel($config);
// The data will be sent to Simotel server as request body
$data = [
"alike"=>false,
"conditions"=>["name"=>"200"],
];
try{
// Sending request to simotel server
$res = $simotel->connect("pbx/users/search",$data);
}
catch(\Exception $e){
die($e->getMessage());
}
// Determines whether the transaction was successful or not
// In other words if the response status code is
// between 200~299 then isOk() will return true
if(!$res->isOk())
die("There is a problem");
// Or you can get response status code
$statusCode = $res->getStatusCode();
// Simotel will return a json response,
// to cast it to array use toArray() method
// it will be an array like this:
// [
// "success" => true/false,
// "message" => "Simotel Error Message"
// "data" => [response data array]
// ]
// success: determine wether transaction by simotel is ok or not
// message: this is simotel response message
// that tell us why transactoion did not completed
$res->toArray();
// Simotel Success is true or false
if(!$res->isSuccess())
// Get Simotel message if isSuccess()==false
die($res->getMessage());
// Get Simotel response data array
$users = $res->getData();
$simotel = new Simotel();
$simotel->eventApi()->addListener('Cdr', function ($simotelApiData) {
// codes to store Cdr $simotelApiData or something else
});
use \Simotel\Simotel;
$simotelEventApiData = $_POST["api_data"];
$eventName = $_POST["api_data"]["event_name"];
$simotel = new Simotel();
$simotel->eventApi()->dispatch($eventName,$simotelEventApiData);
use Simotel\SmartApi\Commands;
class PlayWelcomeMessage
{
use Commands;
public function playAnnounceApp($appData)
{
$this->cmdPlayAnnouncement("announcement file name");
return $this->okResponse();
// return: {'ok':1,'commands':'PlayAnnouncement('announcement file name')'}
}
}
class RestOfApps
{
use SmartApiCommands;
public function sayClock($appData)
{
$this->cmdSayClock("14:00");
return $this->makeOkResponse();
// return: {'ok':1,'commands':'SayClock("14:00")'}
}
public function interactiveApp($appData)
{
if($appData["data"]=="1")
return $this->makeOkResponse();
// return: {'ok':1}
if($appData["data"]=="2")
return $this->makeNokResponse();
// return: {'ok':0}
}
}
$config = Simotel::getDefaultConfig();
$config["smartApi"]["apps"] = [
'playWelcomeMessage' => PlayWelcomeMessage::class,
'*' => RestOfApps::class,
];
// place this codes where you want grab income requests
// from simotel smartApi calls
$simotel = new Simotel($config);
$appData = $_POST["app_data"];
$jsonResponse = $simotel->smartApi($appData)->toJson();
header('Content-Type: application/json; charset=utf-8');
echo $jsonResponse;
/*
if app_name='playAnnounceApp'
jsonResponse = {'ok':1,'commands':'PlayAnnouncement('announcement file name')'}
if app_name='sayClock'
jsonResponse = {'ok':1,'commands':'SayClock("14:00")'}
if app_name='interactiveApp'
if data=1
jsonResponse = {'ok':1}
if data=2
jsonResponse = {'ok':0}
*/