Dismiss Notice
We would like to remind you that we’re updating our login process for all 3CX forums whereby you will be able to login with the same credentials you use for the Partner or Customer Portal. Click here to read more.

Menu navigation

Discussion in 'Call Flow Designer' started by omnipcx, Jul 29, 2017.

Thread Status:
Not open for further replies.
  1. omnipcx

    Joined:
    Jul 4, 2017
    Messages:
    11
    Likes Received:
    0
    Hello everyone,

    I looked at all the examples (demo files) and posts on the forum before posting my question.

    I have a menu MainMenu with 4 choices.

    MainMenu
    1 - Choice1
    2 - Choice2
    3 - Choice3
    9 - Choice9
    |_ Playback prompt
    |_ * - Goto(MainMenu)
    |_ Timeout/Error => DisconnectCall​

    In selection 9 (with *), I would like go back to MainMenu.

    I looked at the documentation, and I can't find how to go back to the top menu... o_O

    I've try with Transfer options and set project$.MainMenu or Main$.MainMenu (my flow name it's Main.flow) but every time I make * the communication is terminated, I do'nt return to the MainMenu.

    VXML it's <choice dtmf="*" next="#MainMenu">MainMenu</choice> with the * option and that work, but with CFD I can't find :)

    Thank for your help,

    Bests Regards,
    Florent
     
  2. edossantos

    edossantos Support Team
    Staff Member 3CX Support

    Joined:
    Jun 27, 2007
    Messages:
    1,611
    Likes Received:
    126
    Hi Florent,

    In order to navigate to the previous menu, you need to use Loops. For example:
    1) In your Main flow you create a Loop component.
    2) Into the Loop, you add a Menu component (let's say Menu1).
    3) In the menu, in option 9, you add another menu (let's say Menu2).
    4) For the Star (*) option you do nothing, and let the flow continue. When this happens, Menu2 ends, then Menu1 ends and then the end of the loop is reached, and if the Loop condition is true, the app executes the loop content again (Menu1).

    Something like this:
    upload_2017-7-29_15-31-21.png

    Kind regards.
     
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
    omnipcx likes this.
  3. omnipcx

    Joined:
    Jul 4, 2017
    Messages:
    11
    Likes Received:
    0
    Hi Ernesto,

    Thank for your reply, I will try now :)

    Why 3CX have not put a simple "Goto" like VXML/Asterisk ?
    I never think of doing that with a loop. :D

    Bests Regards,
    Florent
     
  4. omnipcx

    Joined:
    Jul 4, 2017
    Messages:
    11
    Likes Received:
    0
    I've try, that work, I'm back to the Menu1.

    In my loop module, for Condition I've just put true.
    Without condition I've the red !

    I think it may interest users to have this example to go back to a previous menu.
    Now I know I need "play" with loops :D

    Again thank Ernesto for your help.

    Bests Regards,
    Florent
     
  5. edossantos

    edossantos Support Team
    Staff Member 3CX Support

    Joined:
    Jun 27, 2007
    Messages:
    1,611
    Likes Received:
    126
    Glad to hear that you have it working.

    The approach is different here than with VXML/Asterisk, I have to say that VXML and "goto" statements are old-fashined at least... Here you always move forward, you just need to follow the blocks, this way the diagram is very simple to read. The only way to go back, is using a Loop component, and setting the Condition property to a value that keeps looping while you need it.

    Kind regards.
     
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
    omnipcx likes this.
  6. omnipcx

    Joined:
    Jul 4, 2017
    Messages:
    11
    Likes Received:
    0
    Sorry Ernesto,

    Taking the example in your image, I am in Menu2, I set MaxRetryCount to 0.
    The condition Timeout or invalid option works immediately when the user makes an error or no choice.

    I trying to make a condition (into Timeout or invalid option).
    I want to separate the two situations. I want to see if the user made a mistake (invalid option), or if the user did not make a choice(Timeout).

    In the documentation for Menu I see that there are these 2 choices.
    It could be one of the following constant
    - MenuResult.Timeout
    - MenuResult.InvalidOption


    I tested to identify invalid option with this condition:
    EQUAL(MenuResult.InvalidOption,true) => I am never in this condition
    EQUAL(MenuResult.InvalidOption,1) => I am never in this condition
    MenuResult.InvalidOption => Invalid or Timeout, I enter in this condition
    GREAT_THAN_OR_EQUAL(MenuResult.InvalidOption,0) => IVR crash with this error
    ArgumentException: Object must be the same type as the enum.
    The type passed in was 'System.Int32'; the enum type was 'test.MenuComponent+MenuResults'.


    In the log, I see the wrong digit:
    Trace: Digit detected: '5' - stopping playback
    Trace: Digit '5' is invalid, but MaxRetryCount has been reached, exiting menu...


    I can not find any information on it, even when reading 3CXObjectModel.2.0.0.0_v15.chm.

    I'm really sorry, to post here, but I did different tests without success to differentiate the 2 situations (Timeout, Invalid entry).

    Bests Regards,
    Florent
     
  7. edossantos

    edossantos Support Team
    Staff Member 3CX Support

    Joined:
    Jun 27, 2007
    Messages:
    1,611
    Likes Received:
    126
    Hi Florent,

    You need to compare the menu result with those constants. For example:
    EQUAL(Menu2.Result,MenuResult.InvalidOption)

    or
    EQUAL(Menu2.Result,MenuResult.Timeout)

    Kind regards.
     
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
    omnipcx likes this.
  8. omnipcx

    Joined:
    Jul 4, 2017
    Messages:
    11
    Likes Received:
    0
    Hi Ernesto,

    Thank for your reply, I begin to understand the philosophy of the product ;)

    I'm still thinking in VXML mode :rolleyes:

    Is it expected to have more complete documentation ?
    (Or I do not look right and tell me :D ).
    Example, the list of all outputs, ...

    Bests Regards,
    Florent
     
  9. edossantos

    edossantos Support Team
    Staff Member 3CX Support

    Joined:
    Jun 27, 2007
    Messages:
    1,611
    Likes Received:
    126
    Hi Florent,

    Thanks for the feedback. We're continually improving the documentation. Even if the information is available, if you didn't find it seems to be a sign that we need to improve. In this case, please take a look at this part of the manual:
    https://www.3cx.com/docs/manual/cfd-components/#h.tne2kc81ot15

    There we have the explanation of all the properties for the Menu component. The final statement is:
    Kind regards.
     
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
    omnipcx likes this.
  10. gustavskii

    Joined:
    Jan 26, 2016
    Messages:
    61
    Likes Received:
    2
    What if you need to go back 2 steps
    So for example in my screenshot I need to go from "Option 3" in "Menu 2" to "Menu 1", and at the same time have "Option 2" in "Menu 2" go to "Menu 2"
    This is just an example, we have more complicated call flow right now with 3 levels of menus and user should be able to return to each level at any given time
     

    Attached Files:

    omnipcx likes this.
  11. omnipcx

    Joined:
    Jul 4, 2017
    Messages:
    11
    Likes Received:
    0
    Hi Gustavskii,

    Yep, the design is to work with loops, and set conditions with variable assignments to stop a loop.

    This is very different from the VXML which allows to go to another menu by indicating it :).

    But I'm beginning to understand the philosophy of the product :D.

    You have to hang in the beginning :D, but after that it's really nice :rolleyes:.

    I come from the Linux world (Bash, Shell, Perl, Python, PHP, ..) and therefore Asterisk and VXML.
    Switch to the Windows world (C, C ++, ...) and therefore 3CX Call Flow Designer is totally new :eek: (but with Debian :p).

    Bests Regards and Thanks everyone for read me, and give tip :cool:

    Florent
     
Thread Status:
Not open for further replies.