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::*;