Welcome to Code Forum!

Join a community that supports you and your coding journey from day one. We strive to be a friendly, supportive community that empowers everyone to be better developers. By registering with us, you'll be able to discuss, share and private message with other members of our community.

SignUp Now!
  • Guest, before posting your code please take these rules into consideration:
    • It is required to use our BBCode feature to display your code. While within the editor click < / > or >_ and place your code within the BB Code prompt. This helps others with finding a solution by making it easier to read and easier to copy.
    • You can also use markdown to share your code. When using markdown your code will be automatically converted to BBCode. For help with markdown check out the markdown guide.
    • Don't share a wall of code. All we want is the problem area, the code related to your issue.

    GIF shows where to locate </> in the thread and or post editor toolbar.
    To learn more about how to use our BBCode feature, review our "How to post your code into threads" here.

    Thank you, Code Forum.

Playing Audio Using Keystrokes: Is It Possible?

Annabelle5893

Gold Coder
I'm wondering, how would I make an app that plays audio files using the keys on the number pad? Specifically, I want to make an app that triggers "Rotary Pulse 1" by pressing 1 on the numeric keypad, all the way up to "Rotary Pulse 0" on the 0 key. A dial tone will be toggled on by pressing the spacebar, which will begin with a "receiver pickup" noise. The dial tone turns off when digits are dialed via the numeric keypad. If you press the spacebar either when the dial tone is on, or after dialing a number, a "Receiver Hang Up" noise will be triggered. With the rotary dial sounds, the dial turning to the fingerhole is triggered at key down, and the release of the dial returning to the resting position will be triggered by releasing of the number corresponding to the fingerhole (1, 2, 3, 4, 5, 6, 7, 8, 9, 0). This will be accompanied by the internal sound of the dial pulses as heard in a telephone. What is the code I would use to make this audio app using HTML?
 
ok so I am following. I do have a suggestion.
JavaScript:
function receiverRaised(){
    if(allowDial == false) {
        telephoneAnswered()
    }
    else {
        dialTone.play();
        //you might want to think about having some kind of way to track whether or not a dialtone has been pressed
        offHook ();
        timeoutHowler.play();
    }
}
Do you have something in mind that I could try for that parameter?
 
Do you have something in mind that I could try for that parameter?
So one thing you can try is this:
When you track the button press, you can set a variable "hasPressedDialButton" to true when the user presses any of the dial buttons, and false when any other button has been pressed. Rather than setting a timeout, you can set interval to check every 30 seconds or so if "hasPressedDialButton" is false, if so, then do what you need to do
 
So one thing you can try is this:
When you track the button press, you can set a variable "hasPressedDialButton" to true when the user presses any of the dial buttons, and false when any other button has been pressed. Rather than setting a timeout, you can set interval to check every 30 seconds or so if "hasPressedDialButton" is false, if so, then do what you need to do
Could you please be so kind as to provide some example code so I can get a feel of what to write in my app?
 
ok so I am following. I do have a suggestion.
JavaScript:
function receiverRaised(){
    if(allowDial == false) {
        telephoneAnswered()
    }
    else {
        dialTone.play();
        //you might want to think about having some kind of way to track whether or not a dialtone has been pressed
        offHook ();
        timeoutHowler.play();
    }
}

Here's a "shell" to get you started
JavaScript:
//up at the very top where all the global variables are
var hasDialedNumber = false;


//inside of the document.onkeydown function,
//set hasDialedNumber to true right before next step
//convert all get rid of all those if statements, and instead use a switch case statement
//in the default portion of the switch case, set hasDialedNumber to false if any other button is pressed.
//this is to simulate a wait time
switch (event.keycode){
    case 49,97:
        dial1();
        break;
    ...
    default:
        hasDialedNumber = false;
       
}


//somewhere up at the top by all the global variables
//remember, setInterval and setTimeout both use milliseconds... so 1000 milliseconds =  1 second
var dialChecker = setInterval (function (){
    //check if hasDialedNumber == false
    //if so, call what you need to call
}, 30000);


//somewhere in your code, hopefully in a function you use to "hang up"
//clear setInterval
clearInterval(dialChecker);

Here ya go! Mind you, this is just a "shell" of what my suggestion was... can't write it all for you now, can I? 🙂 Play around with this until you get something you are comfortable with
 
Here's a "shell" to get you started
JavaScript:
//up at the very top where all the global variables are
var hasDialedNumber = false;


//inside of the document.onkeydown function,
//set hasDialedNumber to true right before next step
//convert all get rid of all those if statements, and instead use a switch case statement
//in the default portion of the switch case, set hasDialedNumber to false if any other button is pressed.
//this is to simulate a wait time
switch (event.keycode){
    case 49,97:
        dial1();
        break;
    ...
    default:
        hasDialedNumber = false;
      
}


//somewhere up at the top by all the global variables
//remember, setInterval and setTimeout both use milliseconds... so 1000 milliseconds =  1 second
var dialChecker = setInterval (function (){
    //check if hasDialedNumber == false
    //if so, call what you need to call
}, 30000);


//somewhere in your code, hopefully in a function you use to "hang up"
//clear setInterval
clearInterval(dialChecker);

Here ya go! Mind you, this is just a "shell" of what my suggestion was... can't write it all for you now, can I? 🙂 Play around with this until you get something you are comfortable with
Should I get rid of the code that says things like:
JavaScript:
var isOffHook=false;
var callIncoming=false;
var allowDial = true;
var ringingTone=new Audio('Ringing Tone/Princess%20702B%20Bell%20Ring.ogg');
var timesRung=0;
var availableNumbers=["0","611","711","811","911","*67 + 1 (847) 765-1008","1 (847) 765-1008","867-5309",
                        "1 (212) 456-1414","555-1212","555-5555","748-0900","650-0050","650-8950",
                        "970-3920","1 (714) 733-9969","*57","*69"];
 
Should I get rid of the code that says things like:
JavaScript:
var isOffHook=false;
var callIncoming=false;
var allowDial = true;
var ringingTone=new Audio('Ringing Tone/Princess%20702B%20Bell%20Ring.ogg');
var timesRung=0;
var availableNumbers=["0","611","711","811","911","*67 + 1 (847) 765-1008","1 (847) 765-1008","867-5309",
                        "1 (212) 456-1414","555-1212","555-5555","748-0900","650-0050","650-8950",
                        "970-3920","1 (714) 733-9969","*57","*69"];
NOPE... never mentioned anything about that did I? I just mentioned to add a few variables where this was 😉 re-reading is a great thing
 
Rule of thumb: when adding new global variables, always add them at the end of the variable list. This makes things easier to read and follow
I'm not sure if this still has some mistakes, but here's the modified Javascript code.
JavaScript:
var dialTone=new Audio('file:///M:/Documents/Virtual%20Phone/Call%20Progress%20Tones/Dial%20Tone/USA%20Dial%20Tone.ogg');
var isOffHook=false;
var callIncoming=false;
var allowDial = true;
var ringingTone=new Audio('Ringing Tone/Princess%20702B%20Bell%20Ring.ogg');
var timesRung=0;
var availableNumbers=["0","611","711","811","911","*67 + 1 (847) 765-1008","1 (847) 765-1008","867-5309",
                        "1 (212) 456-1414","555-1212","555-5555","748-0900","650-0050","650-8950",
                        "970-3920","1 (714) 733-9969","*57","*69"];


function reload(){
    location.reload(true);
}

function numberSuggestion(){
    var randomNumber=Math.floor(Math.random()*(availableNumbers.length));
    var suggestedNumber=availableNumbers[randomNumber];
    document.getElementById("suggestion").innerHTML="How about dialing <strong id='suggestedTelephoneNumber'>"+
                                                    suggestedNumber+
                                                    "</strong>? Don't like this number? Click the button above again!";
}

function receiverRaised(){
    if(allowDial == false) {
        telephoneAnswered()
}
    if(allowDial == true) {
        dialTone.play();
}
    } else {
offHook ();
timeoutHowler.play();
}

setCallTimeout();
function setCallTimeout(){
    var delay=5000;
    var delayCaller=Math.floor((Math.random()*8000)+1);
    delay=delay+delayCaller;
    setTimeout(incomingCall,delay);
}
var hasDialedNumber = false;

function offHook(){isOffHook=true;
}
document.getElementById("WE2500").style.display="none";document.getElementById("dialPad").style.display="block";
}

function dialToneTimedOut() {
allowDial=false;
timeoutHowler();
    if(DialToneTimedOut == true) {
        timeoutHowler.play();
        timeoutHowler.currentTime=0;
}

function incomingCall(){
    
    var ringRing=new Audio('Ringing Tone/Princess%20702B%20Bell%20Ring.ogg');
    var hasTelephoneBeenAnswered=false;
    ringTelephone();
}

function ringTelephone(){
    if(!hasTelephoneBeenAnswered == false) {
        ringRing.play();
        ringRing.currentTime=0;
    }
    
    if(isOffHook == false) {
        ringRing.play();
    }
    if(allowDial == false) {
    callIncoming=true;
    setInterval(ringTelephone,5500);
}

var number="";var timeout;
function numberDial() {
if(dialTone){dialTone.pause();
dialTone.currentTime=0
}

function dial1() {
    if(allowDial == true) {
        numberDial();
        number=number+"1";
        var DTMFToneDial1=new Audio('file:///M:/Documents/Virtual%20Phone/DTMF%20Tone%20Dials/DTMF%20Tone%20Dial%201.ogg');
        DTMFToneDial1.play();
}

function dial2() {
    if(allowDial == true); {
        numberDial();
        number=number+"2";
        var DTMFToneDial2=new Audio('file:///M:/Documents/Virtual%20Phone/DTMF%20Tone%20Dials/DTMF%20Tone%20Dial%202.ogg');
        DTMFToneDial2.play();
}

function dial3() {
    if(allowDial == true); {
        numberDial();
        number=number+"3";
        var DTMFToneDial3=new Audio('file:///M:/Documents/Virtual%20Phone/DTMF%20Tone%20Dials/DTMF Tone Dial 3.ogg');
        DTMFToneDial3.play();
}

function dial4() {
    if(allowDial == true) {
        numberDial();
        number=number+"4";
        var DTMFToneDial4=new Audio('file:///M:/Documents/Virtual%20Phone/DTMF%20Tone%20Dials/DTMF Tone Dial 4.ogg');
        DTMFToneDial4.play();
}

function dial5() {
    if(allowDial == true) {
        numberDial();
        number=number+"5";
        var DTMFToneDial5=new Audio('file:///M:/Documents/Virtual%20Phone/DTMF%20Tone%20Dials/DTMF Tone Dial 5.ogg');
        DTMFToneDial5.play();
}

function dial6() {
    if(allowDial == true) {
        numberDial();
        number=number+"6";
        var DTMFToneDial6=new Audio('file:///M:/Documents/Virtual%20Phone/DTMF%20Tone%20Dials/DTMF Tone Dial 6.ogg');
        DTMFToneDial6.play();
}

function dial7() {
    if(allowDial == true) {
    numberDial();
    number=number+"7";
    var DTMFToneDial7=new Audio('file:///M:/Documents/Virtual%20Phone/DTMF%20Tone%20Dials/DTMF Tone Dial 7.ogg');
    DTMFToneDial7.play();
}

function dial8() {
    if(allowDial == true) {
        numberDial();
        number=number+"8";
        var DTMFToneDial8=new Audio('file:///M:/Documents/Virtual%20Phone/DTMF%20Tone%20Dials/DTMF Tone Dial 8.ogg');
        DTMFToneDial8.play();
}

function dial9() {
    if(allowDial == true) {
        numberDial();
        number=number+"9";
        var DTMFToneDial9=new Audio('file:///M:/Documents/Virtual%20Phone/DTMF%20Tone%20Dials/DTMF Tone Dial 9.ogg');
        DTMFToneDial9.play();
}

function dialStar() {
    if(allowDial == true) {
        numberDial();
        number=number+"*";
        var DTMFToneDialStar=new Audio('file:///M:/Documents/Virtual%20Phone/DTMF%20Tone%20Dials/DTMF Tone Dial Star.ogg');
        DTMFToneDialStar.play();
}

function dial0() {
    if(allowDial == true) {
        numberDial();
        number=number+"0";
        var DTMFToneDial0=new Audio('file:///M:/Documents/Virtual%20Phone/DTMF%20Tone%20Dials/DTMF Tone Dial 0.ogg');
        DTMFToneDial0.play();
    }

function dialPound(){
    if(allowDial == true) {
        numberDial();
        number=number+"#";
        var DTMFToneDialPound=new Audio('file:///M:/Documents/Virtual%20Phone/DTMF%20Tone%20Dials/DTMF Tone Dial Pound.ogg');
        DTMFToneDialPound.play();
}
document.onkeydown = function (event) {
        hasDialedNumber = true;
}
switch (event.keycode){
    case 49,97:
        dial1();
        break;
    ...
    default:
        hasDialedNumber = false;
  }
    case 50,98:
        dial2();
        break;
    ...
    default:
        hasDialedNumber = false;
  }
    case 51,99:
        dial3();
        break;
    ...
    default:
        hasDialedNumber = false;
  }
    case 52,100:
        dial4();
        break;
    ...
    default:
        hasDialedNumber = false;
  }
    case 53,101:
        dial5();
        break;
    ...
    default:
        hasDialedNumber = false;
  }
    case 54,102:
        dial6();
        break;
    ...
    default:
        hasDialedNumber = false;
  }
    case 55,103:
        dial7();
        break;
    ...
    default:
        hasDialedNumber = false;
  }
    case 56,104:
        dial8();
        break;
    ...
    default:
        hasDialedNumber = false;
  }
    case 57,105:
        dial9();
        break;
    ...
    default:
        hasDialedNumber = false;
  }
    case 106:
        dialStar();
        break;
    ...
    default:
        hasDialedNumber = false;
  }
    case 48,96:
        dial0();
        break;
    ...
    default:
        hasDialedNumber = false;
  }
    case 109:
        dialPound();
        break;
    ...
    default:
        hasDialedNumber = false;
  }

function ring(){
    ringingTone.play();
    timesRung++;
    if(timesRung>1) {
        setTimeout(response,700);
    }   

function dial(){
    allowDial=false;
    ring();
    setTimeout(ring,4000);
}

function busy() {
busyTone();
function busyTone() {
var pickupBusy=new Audio('file:///M:/Documents/Virtual%20Phone/Call%20Progress%20Tones/Busy%20Tone/USA%20Busy%20Tone.ogg');
pickupBusy.play();
pickupBusy.currentTime=0;
}
setInterval(busyTone,4000);
}

function response(){
    switch(number){
        case "0":
            var operatorPickup=new Audio('callResponses/OperatorAnswer.wav');
            operatorPickup.addEventListener("ended",function(){
                number=prompt("Operator, your number please? (Numbers only; enter 'police' for police and emergency)");
                if(number==null){
                    number="0";
                }
                operatorPutCallThrough();
            });
            operatorPickup.play();
            break;
        case "611":
            var pickup611=new Audio('callResponses/611.wav');
            pickup611.addEventListener("ended", function(){
                timeoutHowler();
            });
            pickup611.play();
            break;
        case "711":
            var pickup711=new Audio('callResponses/tdd-1.mp3');
            pickup711.play();
            break;
        case "811":
            var pickup611=new Audio('callResponses/811.wav');
            pickup811.addEventListener("ended", function() {
                timeoutHowler();
            });
            pickup811.play();
            break;
        case "911":
            var pickup911=new Audio('callResponses/911-xxx-fleet.mp3');
            pickup911.addEventListener("ended", function() {
                timeoutHowler();
            });
            pickup911.play();
            break;
        case "18477651008":
            var pickupMCI=new Audio('callResponses/MCI.wav');
            pickupMCI.play();
            break;
        case "8675309":
            var pickup8675309=new Audio('callResponses/discoornis-bell-f1.mp3');
            pickup8675309.addEventListener("ended",    function(){
                timeoutHowler();
            });
            pickup8675309.play();
            break;
        case "12124561414":
            busy();
            break;
        case "5551212":
            busy();
            break;
        case "5555555":
            var pickup5555555=new Audio('callResponses/timeout-xxx-fleet.mp3');
            pickup5555555.addEventListener("ended",
                function(){timeoutHowler();
            });
            pickup5555555.play();
            break;
        case "7480900":
            var pickupSelf=new Audio('callResponses/partyline-xxx-fleet.mp3');
            pickupSelf.play();
            break;
        case "18005820655":
            busy();
            break;
        case "6508950":
            var pickupAM=new Audio('callResponses/answering-machine-1.mp3');
            pickupAM.play();
            break;
        case "6500050":
            var pickupModem=new Audio('modem.wav');
            pickupModem.play();
            break;
        case "9703920":
            var pickupFax=new Audio('fax-1.mp3');
            pickupFax.play();
            break;
        case "17147339969":
            var pickup714=new Audio('device-conference.mp3');
            pickup714.play();
            break;
        case "*8217147339969":
            var pickup714=new Audio('device-conference.mp3');
            pickup714.play();
            break;
        case "*6717147339969":
            var pickup714block=new Audio('callResponses/reject2-xxx-fleet.mp3');
            pickup714block.addEventListener("ended",
function() {
                timeoutHowler();
            });
            pickup714block.play();
            break;
        case "*57":
            var randNum57=Math.random()>=0.5;
            if(randNum57){
                var pickupCallTrace=new Audio('callResponses/trace3-xxx-fleet.mp3');
    } else {
                var pickupCallTrace=new Audio('callResponses/trace-xxx-fleet.mp3');
            }
            pickupCallTrace.addEventListener("ended",
function() {
                timeoutHowler();
            }
            pickupCallTrace.play();
            break;
        case "*69":
            var pickupStar69=new Audio('callResponses/return-xxx-fleet.mp3');
            pickupStar69.addEventListener("ended", function() {
                timeoutHowler();
            });
            pickupStar69.play();
            break;
        case "police":
            var pickupPolice=new Audio('callResponses/policePickup.wav');
            pickupPolice.addEventListener("ended",function() {
                var policeComplaint=prompt("Police Department, Sergeant Duffy Speaking.");
                confirm("Really? You say that "+policeComplaint);
                var policeHangup=new Audio('callResponses/policeHangup.wav');
                policeHangup.addEventListener("ended",
function() {timeoutHowler();
}
            pickupPolice.play();
            break;
        default:
            var pickupDefault;
            if(number.length>7){
                pickupDefault=new Audio('callResponses/ldcircuits-bell-f1.mp3');
    } else {
                pickupDefault=new Audio('callResponses/completeordc-xxx-fleet.mp3');
            }
            pickupDefault.addEventListener("ended", function() {
                timeoutHowler();
            });
            pickupDefault.play();
            break;
    }
 
I'm not sure if this still has some mistakes, but here's the modified Javascript code.
JavaScript:
var dialTone=new Audio('file:///M:/Documents/Virtual%20Phone/Call%20Progress%20Tones/Dial%20Tone/USA%20Dial%20Tone.ogg');
var isOffHook=false;
var callIncoming=false;
var allowDial = true;
var ringingTone=new Audio('Ringing Tone/Princess%20702B%20Bell%20Ring.ogg');
var timesRung=0;
var availableNumbers=["0","611","711","811","911","*67 + 1 (847) 765-1008","1 (847) 765-1008","867-5309",
                        "1 (212) 456-1414","555-1212","555-5555","748-0900","650-0050","650-8950",
                        "970-3920","1 (714) 733-9969","*57","*69"];


function reload(){
    location.reload(true);
}

function numberSuggestion(){
    var randomNumber=Math.floor(Math.random()*(availableNumbers.length));
    var suggestedNumber=availableNumbers[randomNumber];
    document.getElementById("suggestion").innerHTML="How about dialing <strong id='suggestedTelephoneNumber'>"+
                                                    suggestedNumber+
                                                    "</strong>? Don't like this number? Click the button above again!";
}

function receiverRaised(){
    if(allowDial == false) {
        telephoneAnswered()
}
    if(allowDial == true) {
        dialTone.play();
}
    } else {
offHook ();
timeoutHowler.play();
}

setCallTimeout();
function setCallTimeout(){
    var delay=5000;
    var delayCaller=Math.floor((Math.random()*8000)+1);
    delay=delay+delayCaller;
    setTimeout(incomingCall,delay);
}
var hasDialedNumber = false;

function offHook(){isOffHook=true;
}
document.getElementById("WE2500").style.display="none";document.getElementById("dialPad").style.display="block";
}

function dialToneTimedOut() {
allowDial=false;
timeoutHowler();
    if(DialToneTimedOut == true) {
        timeoutHowler.play();
        timeoutHowler.currentTime=0;
}

function incomingCall(){
   
    var ringRing=new Audio('Ringing Tone/Princess%20702B%20Bell%20Ring.ogg');
    var hasTelephoneBeenAnswered=false;
    ringTelephone();
}

function ringTelephone(){
    if(!hasTelephoneBeenAnswered == false) {
        ringRing.play();
        ringRing.currentTime=0;
    }
   
    if(isOffHook == false) {
        ringRing.play();
    }
    if(allowDial == false) {
    callIncoming=true;
    setInterval(ringTelephone,5500);
}

var number="";var timeout;
function numberDial() {
if(dialTone){dialTone.pause();
dialTone.currentTime=0
}

function dial1() {
    if(allowDial == true) {
        numberDial();
        number=number+"1";
        var DTMFToneDial1=new Audio('file:///M:/Documents/Virtual%20Phone/DTMF%20Tone%20Dials/DTMF%20Tone%20Dial%201.ogg');
        DTMFToneDial1.play();
}

function dial2() {
    if(allowDial == true); {
        numberDial();
        number=number+"2";
        var DTMFToneDial2=new Audio('file:///M:/Documents/Virtual%20Phone/DTMF%20Tone%20Dials/DTMF%20Tone%20Dial%202.ogg');
        DTMFToneDial2.play();
}

function dial3() {
    if(allowDial == true); {
        numberDial();
        number=number+"3";
        var DTMFToneDial3=new Audio('file:///M:/Documents/Virtual%20Phone/DTMF%20Tone%20Dials/DTMF Tone Dial 3.ogg');
        DTMFToneDial3.play();
}

function dial4() {
    if(allowDial == true) {
        numberDial();
        number=number+"4";
        var DTMFToneDial4=new Audio('file:///M:/Documents/Virtual%20Phone/DTMF%20Tone%20Dials/DTMF Tone Dial 4.ogg');
        DTMFToneDial4.play();
}

function dial5() {
    if(allowDial == true) {
        numberDial();
        number=number+"5";
        var DTMFToneDial5=new Audio('file:///M:/Documents/Virtual%20Phone/DTMF%20Tone%20Dials/DTMF Tone Dial 5.ogg');
        DTMFToneDial5.play();
}

function dial6() {
    if(allowDial == true) {
        numberDial();
        number=number+"6";
        var DTMFToneDial6=new Audio('file:///M:/Documents/Virtual%20Phone/DTMF%20Tone%20Dials/DTMF Tone Dial 6.ogg');
        DTMFToneDial6.play();
}

function dial7() {
    if(allowDial == true) {
    numberDial();
    number=number+"7";
    var DTMFToneDial7=new Audio('file:///M:/Documents/Virtual%20Phone/DTMF%20Tone%20Dials/DTMF Tone Dial 7.ogg');
    DTMFToneDial7.play();
}

function dial8() {
    if(allowDial == true) {
        numberDial();
        number=number+"8";
        var DTMFToneDial8=new Audio('file:///M:/Documents/Virtual%20Phone/DTMF%20Tone%20Dials/DTMF Tone Dial 8.ogg');
        DTMFToneDial8.play();
}

function dial9() {
    if(allowDial == true) {
        numberDial();
        number=number+"9";
        var DTMFToneDial9=new Audio('file:///M:/Documents/Virtual%20Phone/DTMF%20Tone%20Dials/DTMF Tone Dial 9.ogg');
        DTMFToneDial9.play();
}

function dialStar() {
    if(allowDial == true) {
        numberDial();
        number=number+"*";
        var DTMFToneDialStar=new Audio('file:///M:/Documents/Virtual%20Phone/DTMF%20Tone%20Dials/DTMF Tone Dial Star.ogg');
        DTMFToneDialStar.play();
}

function dial0() {
    if(allowDial == true) {
        numberDial();
        number=number+"0";
        var DTMFToneDial0=new Audio('file:///M:/Documents/Virtual%20Phone/DTMF%20Tone%20Dials/DTMF Tone Dial 0.ogg');
        DTMFToneDial0.play();
    }

function dialPound(){
    if(allowDial == true) {
        numberDial();
        number=number+"#";
        var DTMFToneDialPound=new Audio('file:///M:/Documents/Virtual%20Phone/DTMF%20Tone%20Dials/DTMF Tone Dial Pound.ogg');
        DTMFToneDialPound.play();
}
document.onkeydown = function (event) {
        hasDialedNumber = true;
}
switch (event.keycode){
    case 49,97:
        dial1();
        break;
    ...
    default:
        hasDialedNumber = false;
  }
    case 50,98:
        dial2();
        break;
    ...
    default:
        hasDialedNumber = false;
  }
    case 51,99:
        dial3();
        break;
    ...
    default:
        hasDialedNumber = false;
  }
    case 52,100:
        dial4();
        break;
    ...
    default:
        hasDialedNumber = false;
  }
    case 53,101:
        dial5();
        break;
    ...
    default:
        hasDialedNumber = false;
  }
    case 54,102:
        dial6();
        break;
    ...
    default:
        hasDialedNumber = false;
  }
    case 55,103:
        dial7();
        break;
    ...
    default:
        hasDialedNumber = false;
  }
    case 56,104:
        dial8();
        break;
    ...
    default:
        hasDialedNumber = false;
  }
    case 57,105:
        dial9();
        break;
    ...
    default:
        hasDialedNumber = false;
  }
    case 106:
        dialStar();
        break;
    ...
    default:
        hasDialedNumber = false;
  }
    case 48,96:
        dial0();
        break;
    ...
    default:
        hasDialedNumber = false;
  }
    case 109:
        dialPound();
        break;
    ...
    default:
        hasDialedNumber = false;
  }

function ring(){
    ringingTone.play();
    timesRung++;
    if(timesRung>1) {
        setTimeout(response,700);
    }  

function dial(){
    allowDial=false;
    ring();
    setTimeout(ring,4000);
}

function busy() {
busyTone();
function busyTone() {
var pickupBusy=new Audio('file:///M:/Documents/Virtual%20Phone/Call%20Progress%20Tones/Busy%20Tone/USA%20Busy%20Tone.ogg');
pickupBusy.play();
pickupBusy.currentTime=0;
}
setInterval(busyTone,4000);
}

function response(){
    switch(number){
        case "0":
            var operatorPickup=new Audio('callResponses/OperatorAnswer.wav');
            operatorPickup.addEventListener("ended",function(){
                number=prompt("Operator, your number please? (Numbers only; enter 'police' for police and emergency)");
                if(number==null){
                    number="0";
                }
                operatorPutCallThrough();
            });
            operatorPickup.play();
            break;
        case "611":
            var pickup611=new Audio('callResponses/611.wav');
            pickup611.addEventListener("ended", function(){
                timeoutHowler();
            });
            pickup611.play();
            break;
        case "711":
            var pickup711=new Audio('callResponses/tdd-1.mp3');
            pickup711.play();
            break;
        case "811":
            var pickup611=new Audio('callResponses/811.wav');
            pickup811.addEventListener("ended", function() {
                timeoutHowler();
            });
            pickup811.play();
            break;
        case "911":
            var pickup911=new Audio('callResponses/911-xxx-fleet.mp3');
            pickup911.addEventListener("ended", function() {
                timeoutHowler();
            });
            pickup911.play();
            break;
        case "18477651008":
            var pickupMCI=new Audio('callResponses/MCI.wav');
            pickupMCI.play();
            break;
        case "8675309":
            var pickup8675309=new Audio('callResponses/discoornis-bell-f1.mp3');
            pickup8675309.addEventListener("ended",    function(){
                timeoutHowler();
            });
            pickup8675309.play();
            break;
        case "12124561414":
            busy();
            break;
        case "5551212":
            busy();
            break;
        case "5555555":
            var pickup5555555=new Audio('callResponses/timeout-xxx-fleet.mp3');
            pickup5555555.addEventListener("ended",
                function(){timeoutHowler();
            });
            pickup5555555.play();
            break;
        case "7480900":
            var pickupSelf=new Audio('callResponses/partyline-xxx-fleet.mp3');
            pickupSelf.play();
            break;
        case "18005820655":
            busy();
            break;
        case "6508950":
            var pickupAM=new Audio('callResponses/answering-machine-1.mp3');
            pickupAM.play();
            break;
        case "6500050":
            var pickupModem=new Audio('modem.wav');
            pickupModem.play();
            break;
        case "9703920":
            var pickupFax=new Audio('fax-1.mp3');
            pickupFax.play();
            break;
        case "17147339969":
            var pickup714=new Audio('device-conference.mp3');
            pickup714.play();
            break;
        case "*8217147339969":
            var pickup714=new Audio('device-conference.mp3');
            pickup714.play();
            break;
        case "*6717147339969":
            var pickup714block=new Audio('callResponses/reject2-xxx-fleet.mp3');
            pickup714block.addEventListener("ended",
function() {
                timeoutHowler();
            });
            pickup714block.play();
            break;
        case "*57":
            var randNum57=Math.random()>=0.5;
            if(randNum57){
                var pickupCallTrace=new Audio('callResponses/trace3-xxx-fleet.mp3');
    } else {
                var pickupCallTrace=new Audio('callResponses/trace-xxx-fleet.mp3');
            }
            pickupCallTrace.addEventListener("ended",
function() {
                timeoutHowler();
            }
            pickupCallTrace.play();
            break;
        case "*69":
            var pickupStar69=new Audio('callResponses/return-xxx-fleet.mp3');
            pickupStar69.addEventListener("ended", function() {
                timeoutHowler();
            });
            pickupStar69.play();
            break;
        case "police":
            var pickupPolice=new Audio('callResponses/policePickup.wav');
            pickupPolice.addEventListener("ended",function() {
                var policeComplaint=prompt("Police Department, Sergeant Duffy Speaking.");
                confirm("Really? You say that "+policeComplaint);
                var policeHangup=new Audio('callResponses/policeHangup.wav');
                policeHangup.addEventListener("ended",
function() {timeoutHowler();
}
            pickupPolice.play();
            break;
        default:
            var pickupDefault;
            if(number.length>7){
                pickupDefault=new Audio('callResponses/ldcircuits-bell-f1.mp3');
    } else {
                pickupDefault=new Audio('callResponses/completeordc-xxx-fleet.mp3');
            }
            pickupDefault.addEventListener("ended", function() {
                timeoutHowler();
            });
            pickupDefault.play();
            break;
    }
When I used the 3 dots ...(ellipsis) , those were meant to represent what they usually mean in a written language, a shorthand for telling someone that what goes before and after. They aren't needed at all. Like I said, that was to indicate that all of your case statements, prior to getting to the default statement. Speaking of switch-case, there should only be one instance of the default statement. You can have many case statements, but only one default statement.
 
When I used the 3 dots ...(ellipsis) , those were meant to represent what they usually mean in a written language, a shorthand for telling someone that what goes before and after. They aren't needed at all. Like I said, that was to indicate that all of your case statements, prior to getting to the default statement. Speaking of switch-case, there should only be one instance of the default statement. You can have many case statements, but only one default statement.
Why are there closing brackets "}" after each case statement?
 
I fixed the case statements. How does this look to you?
JavaScript:
    case 49,97:
        dial1();
        break;
    ...
    default:
        hasDialedNumber = false;
    case 50,98:
        dial2();
        break;
    ...
    case 51,99:
        dial3();
        break;
    ...
    case 52,100:
        dial4();
        break;
    ...
    case 53,101:
        dial5();
        break;
    ...
    case 54,102:
        dial6();
        break;
    ...
    case 55,103:
        dial7();
        break;
    ...
    case 56,104:
        dial8();
        break;
    ...
    case 57,105:
        dial9();
        break;
    ...
    case 106:
        dialStar();
        break;
    ...
    case 48,96:
        dial0();
        break;
    ...
    case 109:
        dialPound();
        break;
    ...
 
I fixed the case statements. How does this look to you?
JavaScript:
    case 49,97:
        dial1();
        break;
    ...
    default:
        hasDialedNumber = false;
    case 50,98:
        dial2();
        break;
    ...
    case 51,99:
        dial3();
        break;
    ...
    case 52,100:
        dial4();
        break;
    ...
    case 53,101:
        dial5();
        break;
    ...
    case 54,102:
        dial6();
        break;
    ...
    case 55,103:
        dial7();
        break;
    ...
    case 56,104:
        dial8();
        break;
    ...
    case 57,105:
        dial9();
        break;
    ...
    case 106:
        dialStar();
        break;
    ...
    case 48,96:
        dial0();
        break;
    ...
    case 109:
        dialPound();
        break;
    ...
so here is the structure for a switch-case:
JavaScript:
switch (stringNumber) {
    case stringNumber:
        thisFunction();
        thatFunction();
        break;
    case stringNumber:
        thisFunction();
        thatFunction();
        break;
    default:
        //default logic here
        break;
}

As I mentioned before, you can have multiple case statements, but you can only have one default statement. As far as opening/closing parenthesis/brackets,
there should only be one open and one close parenthesis at the beginning along with one opening bracket, and one close bracket at the very end. Also notice, there are no ellipsis
 
So for example, you're saying I should put something like:
JavaScript:
switch (event.keycode) {


    case 106:
        function dialStar();
    if(allowDial == true) {
        function numberDial()
        number=number+"*";
        var DTMFToneDialStar=new Audio('file:///M:/Documents/Virtual%20Phone/DTMF%20Tone%20Dials/DTMF Tone Dial Star.ogg');
        DTMFToneDialStar.play();
}
        break;
 
So for example, you're saying I should put something like:
JavaScript:
switch (event.keycode) {


    case 106:
        function dialStar();
    if(allowDial == true) {
        function numberDial()
        number=number+"*";
        var DTMFToneDialStar=new Audio('file:///M:/Documents/Virtual%20Phone/DTMF%20Tone%20Dials/DTMF Tone Dial Star.ogg');
        DTMFToneDialStar.play();
}
        break;
Looks good to me, just make sure that everything lines up so that it is easier for you and everyone to debug 🙂
 
Back
Top Bottom