ami icon indicating copy to clipboard operation
ami copied to clipboard

integration asterisk manager interface (AMI) in laravel

Build Status StyleCI

Enniel\Ami

Easy control via asterisk manager interface (AMI).

Installation and configuration

To install as a composer package to be used with Laravel 5, simply run:

composer require "enniel/ami"

Once it's installed, you can register the service provider in config/app.php in the providers array:

'providers' => [
  \Enniel\Ami\Providers\AmiServiceProvider::class,
]

Then publish assets with php artisan vendor:publish. This will add the file config/ami.php.

Usage

Connection options

You are can specify connection parameters for each command.

Option Description
--host Asterisk AMI server host
--port Asterisk AMI server port
--username Asterisk AMI server username
--secret Asterisk AMI server secret

Listen ami events

php artisan ami:listen
Artisan::call('ami:listen');

If would you like to see event log in the console use monitor option

php artisan ami:listen --monitor

Send ami action

php artisan ami:action <action> --arguments=<key>:<value> --arguments=<key>:<value> ...
Artisan::call('ami:action', [
    'action'      => <action>,
    '--arguments' => [
        <key> => <value>
        ...
    ]
]);

Send sms messages using chan dongle

php artisan ami:dongle:sms <phone> <message> <device?>
Artisan::call('ami:dongle:sms', [
    'phone'   => <phone>,
    'message' => <message>,
    'device'  => <device?>,
]);

For sending long messages use pdu mode.

php artisan ami:dongle:sms <phone> <message> <device?> --pdu
Artisan::call('ami:dongle:sms', [
    'phone'   => <phone>,
    'message' => <message>,
    'device'  => <device?>,
    '--pdu'   => true,
]);

Argument device is not required.

Send ussd commands using chan dongle

php artisan ami:dongle:ussd <device> <ussd>
Artisan::call('ami:dongle:ussd', [
    'device' => <device>,
    'ussd'   => <ussd>,
]);

Send ami commands

This command started cli interface for ami. Command attribute is optional.

php artisan ami:cli [command]

Close cli interface after sending command.

php artisan ami:cli [command] --autoclose
Artisan::call('ami:cli', [
    'command'     => [command],
    '--autoclose' => true,
]);

Without Laravel

php ./vendor/bin/ami ami:listen --host=127.0.0.1 --port=5038 --username=username --secret=secret --monitor