Tips adding ASR to a existing script.
I'm wanting to add ASR to this javascript I've attached below... I've seen the pizza ordering demo as an example but I'm just not sure where to get started really an I'm looking for a little guidance. My script below has only 4 possible options (dtmf 1-4) and I'm simply just wanting to add the ability for a caller to speak the choice they would like ie: 1,2,3,or 4 while retaining the ability for the caller to enter the selection using dtmf. Any assistance would be appreciated... :-) Brian # cat autoattendant_5002.js var condition = true; var domain = "home"; //by default this is the ipv4 address of FreeSWITCH used for transfer to voicemail var digitmaxlength = 0; var objdate = new Date(); var adjusthours = 0; //Adjust Server time that is set to GMT 7 hours var adjustoperator = "-"; //+ or - if (adjustoperator == "-") { var objdate2 = new Date(objdate.getFullYear(),objdate.getMonth(),objdate.getDate(),(objdate.getHours() - adjusthours),objdate.getMinutes(),objdate.getSeconds()); } if (adjustoperator == "+") { var objdate2 = new Date(objdate.getFullYear(),objdate.getMonth(),objdate.getDate(),(objdate.getHours() + adjusthours),objdate.getMinutes(),objdate.getSeconds()); } var Hours = objdate2.getHours(); var Mins = objdate2.getMinutes(); var Seconds = objdate2.getSeconds(); var Month = objdate2.getMonth() + 1; var Date = objdate2.getDate(); var Year = objdate2.getYear() var Day = objdate2.getDay()+1; var exit = false; dialed_extension = session.getVariable("dialed_extension"); domain_name = session.getVariable("domain_name"); domain = session.getVariable("domain"); us_ring = session.getVariable("us-ring"); caller_id_name = session.getVariable("caller_id_name"); caller_id_number = session.getVariable("caller_id_number"); effective_caller_id_name = session.getVariable("effective_caller_id_name"); effective_caller_id_number = session.getVariable("effective_caller_id_number"); outbound_caller_id_name = session.getVariable("outbound_caller_id_name"); outbound_caller_id_number = session.getVariable("outbound_caller_id_number"); session.execute("set", "ignore_early_media=true"); session.execute("set", "hangup_after_bridge=true"); session.execute("set", "continue_on_fail=true"); session.execute("set", "call_timeout=45"); session.execute("export", "call_timeout=45"); session.execute("set", "ringback="+us_ring); //set to ringtone session.execute("set", "transfer_ringback="+us_ring); //set to ringtone //console_log( "info", "Auto Attendant Server Time is: "+Hours+":"+Mins+" \n" ); function get_sofia_contact(extension,domain_name, profile){ if (profile == "auto") { profile = "external"; session.execute("set", "sofia_contact_"+extension+"=${sofia_contact("+profile+"/"+extension+"@"+domain_name+")}"); sofia_contact = session.getVariable("sofia_contact_"+extension); if (sofia_contact == "error/user_not_registered") { profile = "internal"; session.execute("set", "sofia_contact_"+extension+"=${sofia_contact("+profile+"/"+extension+"@"+domain_name+")}"); sofia_contact = session.getVariable("sofia_contact_"+extension); } } else { session.execute("set", "sofia_contact_"+extension+"=${sofia_contact("+profile+"/"+extension+"@"+domain_name+")}"); sofia_contact = session.getVariable("sofia_contact_"+extension); } console_log( "info", "sofia_contact "+profile+": "+sofia_contact+".\n" ); return sofia_contact; } 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 condition=true; if (condition) { //action //console_log( "info", "action call now don't wait for dtmf\n" ); var dtmf = new Object( ); dtmf.digits = ""; if ( session.ready( ) ) { session.answer( ); digitmaxlength = 1; while (session.ready() && ! exit ) { session.streamFile( "/usr/local/freeswitch/recordings/greeting-main.wav", mycb, "dtmf 20" ); if (session.ready()) { if (dtmf.digits.length == 0) { dtmf.digits += session.getDigits(1, "#", 20000); // 20 seconds if (dtmf.digits.length == 0) { } else { break; //dtmf found end the while loop } } } } //pickup the remaining digits dtmf.digits += session.getDigits(4, "#", 3000); //allow up to 5 digits if ( dtmf.digits.length > "0" ) { if ( dtmf.digits == "1" ) { // session.execute("transfer", "3973 XML default"); // } else if ( dtmf.digits == "2" ) { // session.execute("playback", "shout://stream.infowars.com"); // } else if ( dtmf.digits == "d" ) { // session.execute("bridge", "sofia/internal/5002@${domain}"); // } else if ( dtmf.digits == "3" ) { // session.execute("playback", "shout://ice.somafm.com/groovesalad"); // } else if ( dtmf.digits == "4" ) { // session.execute("bridge", "sofia/gateway/home/lisaworking"); // } else { //console_log( "info", "default option when there is no matching dtmf found\n" ); session.execute("bridge", "sofia/internal/5002@${domain}"); // } } } //end if session.ready }
participants (1)
-
broken dash