Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Resources

ARI resources are managed through handle objects that bundle a resource ID with a client reference.

Handle Pattern

use asterisk_rs_ari::resources::channel::{ChannelHandle, originate, OriginateParams};

// originate a channel
let params = OriginateParams {
    endpoint: "PJSIP/100".into(),
    app: Some("my-app".into()),
    ..Default::default()
};
let channel = originate(&client, &params).await?;

// wrap in a handle for operations
let handle = ChannelHandle::new(channel.id, client.clone());
handle.answer().await?;
handle.play("sound:hello-world").await?;
handle.hangup(None).await?;

Available Handles

HandleResourceKey Operations
ChannelHandleChannelanswer, hangup, play, record, hold, mute, dtmf, dial, snoop
BridgeHandleBridgeadd/remove channel, play, record, moh, video source
PlaybackHandlePlaybackcontrol, stop
RecordingHandleRecordingstop, pause, mute

Module Functions

Each resource module also provides free functions for list/get/create:

use asterisk_rs_ari::resources::channel;
use asterisk_rs_ari::resources::bridge;

let channels = channel::list(&client).await?;
let bridges = bridge::list(&client).await?;

Asterisk System

The asterisk resource module provides system management:

use asterisk_rs_ari::resources::asterisk;

let info = asterisk::info(&client, None).await?;
let pong = asterisk::ping(&client).await?;
asterisk::reload_module(&client, "res_pjsip.so").await?;

See Reference for all operations per resource.