ami_flutter 0.0.4 ami_flutter: ^0.0.4 copied to clipboard
Asterisk Manager Interface (AMI) Library for Flutter. Providers a cross-platform AMI API, a cross-platform implementation of the API communicating with Asterisk Server.
ami_flutter #
Asterisk Manager Interface (AMI) Library for Flutter
Features #
- support Android,iOS,Desktop and Web.
- support listen events from stream.
- support async/await for ami events.
- functions organized by module, developers can combine them for other purpose.
- easy to develop new actions or connection methods.
Installation #
just add dependency into pubspec.yaml
:
ami_flutter: ^0.0.2
Usage #
- initialize derived classes of
BaseManager
(e.g.DefaultManager
for TCP Socket orWebSocketManager
for WebSocket at web platform) and connect:
final manager = DefaultManager();
// web platform need set prefix for send actions, like this: manager.prefix = 'prefix';
manager.init();
await manager.connect('127.0.0.1', 5038);
- login ami:
final loginResult = await manager.login('user', 'pass');
- send actions and receive responses:
final statusResult = await manager.sendAction('Status');
final originateResult = await manager.sendAction(
'Originate',
id: 'actionId',
args: {
'Channel': 'sip/12345',
'Exten': '1234',
'Context': 'default',
'Async': 'yes',
},
);
- listen events:
manager.registerEvent('DongleSMSStatus').listen(
(event) {
print('receive event ${event.name} ${event.baseMsg.headers}');
},
);
or read events like response:
final bootedEvent = await manager.readEvent('FullyBooted');
final events = await manager.readAllEventsUntil(
'DongleDeviceEntry',
'DongleShowDevicesComplete',
);
- logoff and dispose resource:
await manager.logoff();
manager.dispose();
Web Platform Need Know #
AMI only support TCP socket. If you need use the library at web platform:
- Install and configure amiws.
- Use
WebSocketManager
to connect web socket proxy byamiws
BTW. You can use function selectByPlatform
to auto select the proper manager according to
your platform.