Going to the next node dynamically

Version 1
    This document was generated from CDN thread

    Created by: Binny Mathew on 25-01-2013 04:48:18 AM
    Is there any way that i can route my flow (i.e where to go) during runtime.
    In case of goto it will jump only to the labels which are created. But which node to go will be decided @runtime. 
    For eg.
    For Balance and recent activity Press1, For Recent Transactions Press 2
    So in this i can jump to specific labels and get my work done. But Tomorrow Press 1 [DTMF 1] should go to  Recent Transactions without change in the script.
    So is there any way we can acheive this. 
    Rgds/Binny 

    Subject: RE: Going to the next node dynamically
    Replied by: Jonathan Adams on 25-01-2013 06:44:58 AM
    Not sure why you'd have it do that, but if it's certain days it needs to go to the other part of the script, you could have a Day of Week switch in the menu with a different GoTo. Otherwise, if you need to manually change it and you want to do that without getting into the script, you could set a boolean variable as a Paramater. That way, you can just go to the application in UCCX and change it there instead of having to get into the script and make changes, save, and reload the app.

    Subject: RE: Going to the next node dynamically
    Replied by: Binny Mathew on 25-01-2013 07:03:48 AM
    Thanks Jonathan for your response,
    It's like consider a example like below
     
    banks Menu
          Recent Activity - Press 1
          Recent Transactions - Press 2
     
    Tomorrow, if the customer decides to remove the option of Recent Activity then in this case Press 1 should go to Recent Transactions rather than RecentAcivity
    BanksMenu
          Recent Transactions - Press 1
    So now my end point for DTMF 1 changes. 
    So what you are suggesting is to have a switch case right? In this case also it does not solve my problem as i still will have goto correct? or you are suggesting something else?
     
    Rgds/Binny

    Subject: RE: Going to the next node dynamically
    Replied by: Jonathan Adams on 25-01-2013 08:53:12 AM
    Sounds to me like you have a planning problem
    What I would actually recommend doing before you go any further is sit down with your customer, get every last detail of what they'd like you to build, make a Visio drawing of the call flow including the verbiage of the prompts, and have them sign off on it. Then from there, any changes out of the scope of work are a minimum of 1 hour paid time (more if it takes you longer to change the script as requested) for you.

    Subject: RE: Going to the next node dynamically
    Replied by: Binny Mathew on 25-01-2013 10:00:16 AM
    Thanks Johnathan/Steve
    Jonathan,
    Agreed, But this is something that I will be building as a product and then presenting it. So here need to develop this even befoer the customer asks for this.
    Steve,
    In this case will i not be restricting my self of the options or i need to have all permutations and combinations in the if block as i suppose in case of UCCX you can execute only 1000 steps (runtime) So i will run out of this considering the fact i need to include my features (e.g. Recent Activity, ...). Hope i got what your point.
    What i was thinking is will form the call flow using a java code and then for every active option (DTMF) will map a script so if DTMF 1 is for RecentActivity then will return relevant script if DTMF 1 is Transactions then return relevant script name and use a subflow to jump to these scripts which would be already there.
    Seems the above approach may work and may give a better dynamism, But need to work out on this.
    Let me know if there are any other optimal ways to achieve the same.
    Binny

    Subject: RE: Going to the next node dynamically
    Replied by: Fidelus TAC on 25-01-2013 09:49:21 AM
    hi Binny,
    If you wanted it to be a completely dynamic menu, you'd use something like a series of If statements that you can toggle with a boolean variable:
    If (option1) then
        play (choice1)
    If (option2) then
        play(choice2)
    If (option3) then
        play(choice3)
    Follow this with an enter digits to capture their choice and manipulate on this choice with a switch statement.  a menu is a combination of play prompt, enter digits, and a switch step.
     
    Steve

    Subject: RE: Going to the next node dynamically
    Replied by: Jonathan Adams on 25-01-2013 10:09:23 AM
    Honestly, don't waste your time making different versions of the script before you present it. Have your basic features for demonstration purposes if that's what they want. Present it while letting your customer know that you're flexible and can fit it to their needs/specifications. Don't want that menu option? Cool, I can do that. Want another one that does ____? Got it, I'll make sure to change the call flow diagram and program the script accordingly, etc. If you're so tied up on having a hard set version of the script that they can't have you change, they're probably not going to buy it. I know I wouldn't.

    As for the default maximum number of steps, usually you don't want a script going over that, but it can be increased significantly.

    Subject: RE: Going to the next node dynamically
    Replied by: Binny Mathew on 25-01-2013 12:28:46 PM
    I got your point. But do let me know if you have any suggestions on how to achieve this.
     
    Also how can we increase the steps as in one of my recent project i got an exception regaring this and then we had to do some work around on that.
     
    Binny

    Subject: RE: Going to the next node dynamically
    Replied by: Fidelus TAC on 25-01-2013 02:35:37 PM
    As Jonathon pointed out, it's highly recommended to not increase the maxiumum number of steps.  This is regarded as Cisco best practices.  Howerver, if you need to change this value, it can be done in system parameters under applications.  Be very careful with changing this.  It can have a significant negative effect on the performance of the server.

    Subject: RE: Going to the next node dynamically
    Replied by: Aaron Harrison on 04-02-2013 04:17:09 PM
    Hi
    From your earlier description, you basically want to have a number of available 'actions', based on 'inputs' which will be DTMF digits. You want to be able to change the flow 'at runtime', but you've not described what factors should change that other than suggesting that tomorrow it might be different. 
    To do that you basically need to give the customer the option to press a digit, and collect it in a variable. You would then use that input digit to look up a mapping of some sort - that could be:
    - Against a parameter on the script
    - Against a database
    - Against an XML file
    - Any of the last two above could have their values modified either through a management script (telephone interface based or web if you have premium) or through whatever means you like. If it's simply going to change based on day of the week, then you can again set that up as part of the lookup data in any of those methods.
    So for example, user presses 1, you look up 1 against your XML file and that tells you that the action is 'recent transactions'. Script has
    IF returnvalue == "recent transactions"
    true: goto 'recenttransactions'
    Perhaps if you can detail what you requirements actually are there will be a better way of designing this. The point is that you only have so many 'things' you can do, and you only have so many potential inputs from a phone, you just need to map the two externally.
    This isn't something that is commonly done, as generally the prompts you play to a user will be prerecorded - e.g. press 2 for recent transactions. There are ways around that as well, of course..
     
    Aaron