aboutsummaryrefslogtreecommitdiffstats
path: root/config/freeswitch_dev/disa.js
diff options
context:
space:
mode:
Diffstat (limited to 'config/freeswitch_dev/disa.js')
-rw-r--r--config/freeswitch_dev/disa.js78
1 files changed, 78 insertions, 0 deletions
diff --git a/config/freeswitch_dev/disa.js b/config/freeswitch_dev/disa.js
new file mode 100644
index 00000000..5cff6424
--- /dev/null
+++ b/config/freeswitch_dev/disa.js
@@ -0,0 +1,78 @@
+include("/usr/local/freeswitch/scripts/config.js");
+
+ //var admin_pin = ""; //don't require a pin
+ //if you choose not to require a pin then then you may want to add a dialplan condition for a specific caller id
+ var predefined_destination = ""; //example: 9999
+ //predefined_destination leave empty in most cases
+ //Use this to define a single destination
+ var digitmaxlength = 0;
+ var timeoutpin = 7500;
+ var timeouttransfer = 7500;
+
+ function mycb( session, type, obj, arg ) {
+ try {
+ if ( type == "dtmf" ) {
+ console_log( "info", "digit: "+obj.digit+"\n" );
+ if ( obj.digit == "#" ) {
+ //console_log( "info", "detected pound sign.\n" );
+ exit = true;
+ return( false );
+ }
+
+ dtmf.digits += obj.digit;
+
+ if ( dtmf.digits.length >= digitmaxlength ) {
+ exit = true;
+ return( false );
+ }
+ }
+ } catch (e) {
+ console_log( "err", e+"\n" );
+ }
+ return( true );
+ } //end function mycb
+
+
+ //console_log( "info", "DISA Request\n" );
+
+ var dtmf = new Object( );
+ dtmf.digits = "";
+
+ if ( session.ready( ) ) {
+ session.answer( );
+
+ if (admin_pin.length > 0) {
+ digitmaxlength = 6;
+ session.streamFile( "/usr/local/freeswitch/sounds/custom/8000/please_enter_the_pin_number.wav", mycb, "dtmf");
+ session.collectInput( mycb, dtmf, timeoutpin );
+ //console_log( "info", "DISA pin: " + dtmf.digits + "\n" );
+ }
+
+ if (dtmf.digits == admin_pin || admin_pin.length == 0) {
+
+ //console_log( "info", "DISA pin is correct\n" );
+
+ us_ring = session.getVariable("us-ring");
+ session.execute("set", "ringback="+us_ring); //set to ringtone
+ session.execute("set", "transfer_ringback="+us_ring); //set to ringtone
+ session.execute("set", "hangup_after_bridge=true");
+
+ if (predefined_destination.length == 0) {
+ dtmf.digits = ""; //clear dtmf digits to prepare for next dtmf request
+ digitmaxlength = 11;
+ session.streamFile( "/usr/local/freeswitch/sounds/custom/8000/please_enter_the_phone_number.wav", mycb, "dtmf");
+ session.collectInput( mycb, dtmf, timeouttransfer );
+ console_log( "info", "DISA Transfer: " + dtmf.digits + "\n" );
+ session.execute("transfer", dtmf.digits + " XML default");
+ }
+ else {
+ session.execute("transfer", predefined_destination + " XML default");
+ }
+
+ }
+ else {
+ session.streamFile( "/usr/local/freeswitch/sounds/custom/8000/your_pin_number_is_incorect_goodbye.wav", mycb, "dtmf");
+ console_log( "info", "DISA Pin: " + dtmf.digits + " is incorrect\n" );
+ }
+
+ }