Does anyone have a script that shows how the IVR can recognize a call that has called back within the last 30 minutes? I reading you can use Session ID and map it to a phone number so that the person does not have to go through the IVR again. Any help would be greatly appreciated.
So there is an idea of a Session Object.
For every new Contact, there is a new Session Object created by the system, automatically.
In order to interact with it, you must create a Session variable to hold a reference to the Session Object, and then use the Get Contact Info step to store the Session Object reference in your Session variable.
For the remainder of that Contact's life (until the caller disconnects) you can store and retrieve information from the Session Object.
This is a handy way of implementing persistent data accross multiple script transfers as the data in the Session follows the caller around within UCCX.
One additional thing you can do with Sessions is recall them in the future. But the time limit on how far in the future is limited to a System Parameter for Session Idle Timeout; a default of 30 minutes by default. Don't forget what I said eariler: This timer resets every time you access the Session Object!
Sessions are normally referenced by an Object ID, but this is a long string of alphanumeric mess, and how do you manage the mapping of Object ID to Caller? Well, there just happens to be a feature to create that mapping for you. It's in the Session Mapping Step. You can use anything to create the mapping. In fact I would encourage you to prefix the mapping you use with the application name, such that if you implement this solution in multiple applications, you can have a per application mapping. E.g., mapping = "helpdesk" + calling_number
Now, when the caller calls back, they technically have two Session Obects: the one from < 30 minutes ago, and the new one from this return call. It's now time to figure out which one you will use. This is actually a very easy task: you "attempt" to get a Session Object, based on a Mapping ID, and if it does not exist, your Session Object will be == null. Otherwise, you found the previous session. And from this point forward you can simply use this retrieved Session Obect instead of the new Session Object. Just ignore the new one. Nobody likes the new guy anyway. Am I right?
Ok, how are you feeling about Sessions now?