- Maintain state of all sessions:
- Authenticated Google session
- Attached clients by socketId
- Call ID
- Surface endpoint to link calls via Access Code, Call ID, Google ID
- Display all keypresses
- Display as chunks
- Display which node of the IVR the chunk came from
- If Account / PIN input, show validity of input
- Push or Pull?
- Using Call ID
- Listen for call status changes
- Poll for Risk Score
- Using Call ID
- Gather PRS Data
- With Fallover URI
- Communicate with OpenCNAM
- For now, should be handled / cached by PRS
- Determine Risk Reasons
- Hopefully for now.
- Maintain API Log
- Move this to server?
- Control Brutus
- Hook into Twilio's SIP Trunk
- Maintain state of all call data
- Call ID
- DTMF tones + metadata
- Call Status
- Calculate keypresses from DTMF tones and surface for Julius
- Send keypresses to Ingest with a Call ID
- Communicate Call Status to Julius for a given call ID
- Ask Julius about valid Access Codes
- Check validity of Account / PIN input
I think you're going to run into a problem building the dial plan in Asterisk getting the DTMF durations -- that information will need to come from Intercept unless you are writing custom modules in Asterisk.
I think it might make sense to have Asterisk make a REST call to Julius on every transition (end of Account number and PIN, successful or not) and have Julius use that to trigger its poll of the Call Service to get the digits and metadata.
This discussion might be getting to the point we need to talk in person...