Automate the testing of your IVR call flows!
IVR Tester automates the testing of IVR flows by calling them, interpreting prompts and replying with DTMF tones based on fluent test definitions.
Features:
const config = { transcriber: googleSpeechToText({ languageCode: "en-GB" }) };
new IvrTester(config).run(
{ from: "0123 456 789", to: "0123 123 123" },
{
name: "Customer is provided a menu after their account number confirmed",
steps: [
{
whenPrompt: similarTo("Please enter your account number"),
then: press("184748"),
silenceAfterPrompt: 3000,
timeout: 6000,
},
{
whenPrompt: similarTo(
"press 1 for booking a repair or 2 for changing your address"
),
then: hangUp(),
silenceAfterPrompt: 3000,
timeout: 6000,
},
],
}
);
export TWILIO_ACCOUNT_SID=ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
export TWILIO_AUTH_TOKEN=your_auth_token
npm install ngrok -g
ngrok http 8080
Run the tests
# Local port that IVR Tester will listen on
export LOCAL_SERVER_PORT=8080
# URL that ngrok exposes to the outside world
export PUBLIC_SERVER_URL=$(curl -s localhost:4040/api/tunnels | jq -r .tunnels[0].public_url)
node test.js
Under the hood this orchestrates:
When | Overview |
---|---|
contains | Prompt contains a piece of text |
matches | Prompt matches regular expression |
similarTo | Prompt is similar to a piece of text |
isAnything | Prompt can be anything |
Then | Overview |
---|---|
press | Produces DTMF tones |
hangUp | Terminates the call |
doNothing | Doesn't do anything |
Where possible the documentation is generated from the code using the following script in the root directory or individual packages:
yarn docs
The documentation is automatically generated and committed as part of the CI pipeline when merged to the main branch.
The official website can be previewed locally by running:
docsify serve docs