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