I am developing a call center which is necessary for my business communication and my library is provided by Ozeki VoIP SIP SDK. Now I am working on reading the IVR message at the first time.
The tree navigation is made in the call_DtmfReceived method. This method is the event handler for the DTMF signal receiving, therefore this is the right place to handle the DTMF navigation.
The class always stores the actually selected IVRNode that stores in a Dictionary object all its children. When a DTMF signal is received, the method checks if it is a star of a hash mark as they hold special meaning. Pressing the star will always restart the actual tree node message, pressing the hash will navigate back to the root if you are not there already.
When the caller pressed a number key on the keypad, the method tries to get the actual node's child that is attached to that DTMF signal. If there is no such child, the message will go on without any jumping in the tree structure. If the incoming DTMF signal refers to a valid child, the program will jump in the tree structure to the specified child and its message will be started.
I am using this webpage
http://www.voip-sip-sdk.com/p_411-vo...tion-voip.html to set the IVR navigation.
Regards,
Niklas