HeardLibrary/graph-ivr

Name: graph-ivr

Owner: Heard Library

Description: A Twilio-Based Interactive Voice Response (IVR) System

Created: 2016-03-25 20:11:08.0

Updated: 2017-06-21 15:44:33.0

Pushed: 2017-06-21 15:43:55.0

Homepage:

Size: 31

Language: XQuery

GitHub Committers

UserMost Recent Commit# Commits

Other Committers

UserEmailMost Recent Commit# Commits

README

GraphIVR

A Graph-based Interactive Voice Response (IVR) System
Introduction

The application configures an interactive voice response (IVR) system based on a directed property graph. This application allows you to build complex phone trees by arranging nodes and edges on a graph. An advantage of this approach is that it allows less technical users to manipulate the phone tree without needing to interact with the underlying application code.

The application is written entirely in XQuery 3.1 and the graph query language Cypher.

Requirements
Installation
Graph Model

GraphIVR allows you to configure your IVR by manipulating a Neo4j graph. For instance, a simple phone tree may be modelled in Neo4j as follows:

Graph of a simple IVR

There are three type of nodes in the graph: Choice, Record, and Terminus. A Choice node presents callers with branching options in the graph. A Record node allows callers to record information. A Terminus node ends the call. There is only a single type of edge in the graph: Key. A Key edge allows callers to traverse from one node to the next based on a keypad entry.

Choice nodes must have at least one Key edge. The diagram below illustrates the available properties for Choice nodes and Key edges. The required properties for Choice nodes are “name,” “say,” and “id.” The “play” property is optional. If a “play” property is present, GraphIVR will play the recorded sound at the indicated URL instead of speaking the phrases in the “say” property.

Choice node with key edge

Record nodes must have one and only one Key edge. The edge should provide instructions about how to terminate the recording. The required properties of Record nodes are “name” and “id.” A “say” or “voice” property should not be placed on Record nodes.

Record node with key edge

Finally, a Terminus node ends the call. A terminus node must have only incoming edges and no outgoing Key edges. As with Choice edges, The required properties for Terminus nodes are “name,” “say,” and “id.” The “play” property is optional. Normally, a Terminus node should contain a message indicating that call will be coming to an end.

Terminus node with incoming edge

Privacy

This application does not provide any privacy protections. It is not intended to function as a standalone application, but as a component of an encompassing system. By default, the application produces a public RSS feed with the personal information of every caller. Please do not use in production without securing users' privacy and security.

Credits

This project arises from Dr. Ifeoma Nwankwo's (PI) Wisdom Working Group. Please credit this project in any citations or downstream uses of this software.


This work is supported by the National Institutes of Health's National Center for Advancing Translational Sciences, Grant Number U24TR002306. This work is solely the responsibility of the creators and does not necessarily represent the official views of the National Institutes of Health.