ivr-tester-mark
v1.0.0
Published
[![npm](https://img.shields.io/npm/v/ivr-tester)](https://www.npmjs.com/package/ivr-tester) [![Language grade: JavaScript](https://img.shields.io/lgtm/grade/javascript/g/SketchingDev/ivr-tester.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/Sket
Downloads
36
Readme
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:
- Establishing a bi-directional audio stream of the call to the IVR flow - using Twilio
- Transcribing the voice responses from the flow - using Google Speech-to-Text
- 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