Asterisk Manager Interface (AMI) Library for Flutter & Dart
- 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.
just add the dependency into pubspec.yaml:
ami: ^0.0.1- Initialize derived classes of
BaseManager(e.g.DefaultManagerfor TCP Socket orWebSocketManagerfor 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:
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 to 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();AMI only support TCP socket. If you need use the library at web platform:
- Install and configure amiws.
- Use
WebSocketManagerto connect web socket proxy byamiws
BTW. You can use function selectByPlatform to auto select the proper manager according to
your platform.