ivr-tester-mark v1.0.0
IVR Tester
IVR Tester automates the testing of IVR flows by calling them, interpreting prompts and replying with DTMF tones based on fluent test definitions.
Features:
- Fully automates testing call flows
- Test multiple scenarios in parallel
- Expressive test definitions help document call flow
- Record audio of tests
- Record transcriptions of tests
- Supports Google Speech-to-Text and AWS Transcript for transcribing calls
- Open-source
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,
},
],
}
);
Quick Start
- Create a Twilio account (referral link for $10 free if you upgrade), load it with money and rent a phone number
- Store an authentication token in environment variables:
export TWILIO_ACCOUNT_SID=ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX export TWILIO_AUTH_TOKEN=your_auth_token
- Configure your environment for either Google or Amazon's transcription service
- Install and start ngrok
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
How it works
Under the hood this orchestrates: 1. Establishing a bi-directional audio stream of the call to the IVR flow - using Twilio 1. Transcribing the voice responses from the flow - using Google Speech-to-Text 1. Using the test to conditionally respond with DTMF tones to transcripts
Writing tests
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 |
Development
Documentation
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
License
2 years ago