1. Go to this page and download the library: Download azima/laravel-esl 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/ */
use Azima\LaravelEsl\Facades\Esl;
use Azima\LaravelEsl\EslConnectionException;
try {
// Use the default connection from your config
$defaultStatus = Esl::execute('status');
// Connect to a different server for a specific command
$customStatus = Esl::connection('10.0.1.5', 8021, 'another_password')
->execute('status');
} catch (EslConnectionException $e) {
Log::error('ESL command failed: ' . $e->getMessage());
}
// Get the server status
$status = Esl::status();
// Get a list of all active channels
$channels = Esl::showChannels();
// Get a list of all active calls
$calls = Esl::showCalls();
// Get the global sofia status
$sofiaStatus = Esl::sofiaStatus();
// Get the status of a specific sofia profile
$profileStatus = Esl::sofiaStatusProfile('internal');
// For example, to get the server uptime
$uptime = Esl::execute('uptime');
use Azima\LaravelEsl\EslConnection;
use Azima\LaravelEsl\EslConnectionException;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Log;
class CallController extends Controller
{
private $esl;
public function __construct(EslConnection $esl)
{
$this->esl = $esl;
}
public function makeCall(Request $request)
{
try {
$destination = $request->input('destination', 'user/1001');
$uuid = $this->esl->execute("originate sofia/gateway/my_gateway/{$destination} &echo");
return response()->json(['message' => 'Call initiated.', 'uuid' => $uuid]);
} catch (EslConnectionException $e) {
Log::error('ESL command failed: ' . $e->getMessage());
return response()->json(['error' => 'Failed to initiate call.'], 500);
}
}
}