Skip to content

Instantly share code, notes, and snippets.

@dtolb
Created April 26, 2016 17:32
Show Gist options
  • Select an option

  • Save dtolb/8129e09b006265f7a9f2260f10569e14 to your computer and use it in GitHub Desktop.

Select an option

Save dtolb/8129e09b006265f7a9f2260f10569e14 to your computer and use it in GitHub Desktop.
Design Spec for Voice Reference App

Voice Reference App Spec

Creating a production level standard for voice calling & sip endpoints. The design patterns here should be what we want our customers to implement, as they WILL copy the patterns for their production applications.

High level functionality

  • Create New Users
  • Handle incoming/outgoing calls
  • WebRTC for each user
  • Mobile app registration / log-in
  • Single Domain for entire application - should include random string to prevent duplication
  • Single Catapult Application for entire voice ref app - should include random string to prevent duplication
  • One-Click Deploy to Heroku/Azure
  • Environment Variables to prompt:
  • Catapult User-id
  • Catapult Secret
  • Catapult Token
  • Desired domain name

New User Flow

  • User enters username
  • User then can search & order phone number
  • Once user has ordered phone number, that user is persisted in the database refreshing the page here should NOT create another user
  • Assign phone-number to defined catapult-application

Once user has logged in

  • User has WebRTC dialpad and can create call to telnetwork from their ordered phone-number
  • Do we want to use and update and maintain our SDK or JsSip
  • User can specifiy any reasonable format for phone number (don't require +1)
  • User can view their SIP creds (for use with softphone)

Log-in

  • User can log in with JUST a username
  • If username does not exist, re-direct to create an account. Don't Auto-create

Mobile App

  • User MUST CREATE username on site first
  • User can log-in to their account
  • Mobile-app can send recieve phone calls

On Incoming calls

  • Look up SIP endpoint in database based on to number
  • Use the transferring functionality to call the SIP endpoint
  • IF WE DECIDE TO USE BRIDGES INSTEAD OF TRANSFERRING BE SURE TO FOLLOW OUR BEST PRACTICES

On outgoing calls from SIP Endpoint

  • Use SIP Headers to specifiy the outbound caller-id -OR- look up the SIP address in the database to determine outbound caller-id??
  • Use the transferring functionality to call the desired number (if we use bridges note the above headline)

Libraries to update

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment