ivr-tester
    TypeScript icon, indicating that this package has built-in type declarations

    0.2.12 • Public • Published

    IVR Tester

    npm Language grade: JavaScript FOSSA Status

    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:

    • 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

    1. Create a Twilio account (referral link for $10 free if you upgrade), load it with money and rent a phone number
      1. Store an authentication token in environment variables:
      export TWILIO_ACCOUNT_SID=ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
      export TWILIO_AUTH_TOKEN=your_auth_token
    2. Configure your environment for either Google or Amazon's transcription service
    3. Install and start ngrok
      npm install ngrok -g
      ngrok http 8080
    4. 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
    2. Transcribing the voice responses from the flow - using Google Speech-to-Text
    3. 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

    FOSSA Status

    Install

    npm i ivr-tester

    DownloadsWeekly Downloads

    2

    Version

    0.2.12

    License

    MIT

    Unpacked Size

    206 kB

    Total Files

    128

    Last publish

    Collaborators

    • avatar