freeswitch_esl/lib.rs
1#![deny(missing_docs)]
2
3//! Esl Create for interacting with freeswitch
4//!
5//! # Examples
6//!
7//! ## Inbound Connection
8//!
9//!```rust,no_run
10//! use freeswitch_esl::{Esl, EslError};
11//!
12//! #[tokio::main]
13//! async fn main() -> Result<(), EslError> {
14//! let addr = "localhost:8021"; // Freeswitch host
15//! let password = "ClueCon";
16//! let inbound = Esl::inbound(addr, password).await?;
17//!
18//! let reloadxml = inbound.api("reloadxml").await?;
19//! println!("reloadxml response : {:?}", reloadxml);
20//!
21//! let reloadxml = inbound.bgapi("reloadxml").await?;
22//! println!("reloadxml response : {:?}", reloadxml);
23//!
24//! Ok(())
25//! }
26//! ```
27//! ## Outbound Connection
28//!
29//!```rust,no_run
30//! use freeswitch_esl::{Esl, EslConnection, EslError};
31//!
32//! async fn process_call(conn: EslConnection) -> Result<(), EslError> {
33//! conn.answer().await?;
34//! println!("answered call");
35//! conn.playback("ivr/ivr-welcome.wav").await?;
36//! let digit = conn
37//! .play_and_get_digits(
38//! 1,
39//! 1,
40//! 3,
41//! 3000,
42//! "#",
43//! "conference/conf-pin.wav",
44//! "conference/conf-bad-pin.wav",
45//! )
46//! .await?;
47//! println!("got digit {}", digit);
48//! conn.playback("ivr/ivr-you_entered.wav").await?;
49//! conn.playback(&format!("digits/{}.wav", digit)).await?;
50//! conn.hangup("NORMAL_CLEARING").await?;
51//! Ok(())
52//! }
53//!
54//! #[tokio::main]
55//! async fn main() -> Result<(), EslError> {
56//! let addr = "0.0.0.0:8085"; // Listening address
57//! println!("Listening on {}", addr);
58//! let listener = Esl::outbound(addr).await?;
59//!
60//! loop {
61//! let (socket, _) = listener.accept().await?;
62//! tokio::spawn(async move { process_call(socket).await });
63//! }
64//! }
65//! ```
66
67pub(crate) mod code;
68pub(crate) mod connection;
69pub(crate) mod dp_tools;
70pub(crate) mod error;
71pub(crate) mod esl;
72pub(crate) mod event;
73pub(crate) mod io;
74pub(crate) mod outbound;
75
76pub use connection::EslConnection;
77pub use error::*;
78pub use esl::*;
79pub use event::*;