Crate asterisk_manager

Source
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

Structs§

AmiResponse
HangupEventData
Manager
ManagerOptions
NewchannelEventData
PeerStatusEventData

Enums§

AmiAction
AmiError
AmiEvent