diff --git a/conf/autoload_configs/httapi.conf.xml b/conf/autoload_configs/httapi.conf.xml index dd11eaf..71bee7e 100644 --- a/conf/autoload_configs/httapi.conf.xml +++ b/conf/autoload_configs/httapi.conf.xml @@ -52,6 +52,7 @@ + diff --git a/did_router/.env b/did_router/.env index b692b9c..fbc2981 100644 --- a/did_router/.env +++ b/did_router/.env @@ -1,2 +1,3 @@ DATABASE_URL=postgres://freeswitch:T5NyU2NwQb5DD9oV@localhost/did_router +SOUND_PATH=/usr/src/freeswitch_chris/sounds diff --git a/did_router/src/httapi.rs b/did_router/src/httapi.rs index 7308c05..600ab4b 100644 --- a/did_router/src/httapi.rs +++ b/did_router/src/httapi.rs @@ -1,3 +1,5 @@ +use dotenvy::dotenv; +use std::env; use xml_builder::{XMLBuilder, XMLElement, XMLVersion}; use super::database as db; use super::database::{DidTargetType, Did}; @@ -26,17 +28,25 @@ pub fn external_number(_did: Did) -> XMLElement { } pub fn no_service(_did: Did) -> XMLElement { + dotenv().ok(); + let sound_path = env::var("SOUND_PATH").expect("SOUND_PATH must be set"); + let no_service_path = format!("{}/no_service.wav", sound_path); let mut work = XMLElement::new("work"); - let mut playback = XMLElement::new("playback"); - playback.add_attribute("name", "exten"); - playback.add_attribute("file", "ivr/ivr-welcome_to_freeswitch.wav"); - work.add_child(playback).unwrap(); + add_playback(&mut work, &no_service_path); + work } pub fn night_mode(_did: Did) -> XMLElement { - let work = XMLElement::new("work"); + dotenv().ok(); + let sound_path = env::var("SOUND_PATH").expect("SOUND_PATH must be set"); + let night_mode_path = format!("{}/night_mode.wav", sound_path); + + let mut work = XMLElement::new("work"); + + add_playback(&mut work, &night_mode_path); + work } @@ -45,6 +55,21 @@ pub fn custom_message(_did: Did) -> XMLElement { work } +pub fn add_playback(work: &mut XMLElement ,file_path: &str) { + let mut answer = XMLElement::new("execute"); + answer.add_attribute("application", "answer"); + work.add_child(answer).unwrap(); + + let mut playback = XMLElement::new("playback"); + playback.add_attribute("name", "exten"); + playback.add_attribute("file", &file_path); + work.add_child(playback).unwrap(); + + let mut hangup = XMLElement::new("execute"); + hangup.add_attribute("application", "hangup"); + work.add_child(hangup).unwrap(); +} + pub fn route_call(did: String) -> Vec { let d = db::get_did_by(&did).unwrap(); let mut xml = XMLBuilder::new() diff --git a/sounds/night_mode.wav b/sounds/night_mode.wav new file mode 100644 index 0000000..2930a0b Binary files /dev/null and b/sounds/night_mode.wav differ diff --git a/sounds/no_service.wav b/sounds/no_service.wav new file mode 100644 index 0000000..3a07304 Binary files /dev/null and b/sounds/no_service.wav differ