Expand description
§Asterisk Manager Library
A modern, strongly-typed, stream-based library for integration with the Asterisk Manager Interface (AMI).
- Typed AMI messages: Actions, Events, and Responses as Rust enums/structs.
- Stream-based API: Consume events via
tokio_stream
. - Asynchronous operations: Fully based on Tokio.
§Usage Example
use asterisk_manager::{Manager, ManagerOptions, AmiAction};
use tokio_stream::StreamExt;
#[tokio::main]
async fn main() {
let options = ManagerOptions {
port: 5038,
host: "127.0.0.1".to_string(),
username: "admin".to_string(),
password: "password".to_string(),
events: true,
};
let manager = Manager::new(options);
manager.connect_and_login().await.unwrap();
let mut events = manager.all_events_stream().await;
tokio::spawn(async move {
while let Some(Ok(ev)) = events.next().await {
println!("Event: {:?}", ev);
}
});
let resp = manager.send_action(AmiAction::Ping { action_id: None }).await.unwrap();
println!("Ping response: {:?}", resp);
manager.disconnect().await.unwrap();
}
§Features
- Login/logout, sending actions, and receiving AMI events.
- Support for common events (
Newchannel
,Hangup
,PeerStatus
) and fallback for unknown events. - Detailed error handling via the
AmiError
enum.
§Requirements
- Rust 1.70+
- Tokio (async runtime)
§License
MIT