Any time we call a large company, we are greeted by a computer voice, asking us to route our call based on what we want or need. We are all familiar with call menus. While we won't get into a philosophical debate about how good or bad they are, we will talk about how to make them.
Suppose we want to create a menu of options such as, "For a billing question, press 1, to request a configuration change press 2 ….". Now suppose you press 1, and you hear the option, "For help reading your statement, press 1, if you wish to dispute a charge, press 2, …". This is just a standard phone tree, with which most users are comfortable. Asterisk knows which extension to execute based upon what context we are currently in.
Suppose that your customer service representatives are on SIP/1000, and the manager whom you wish to handle all disputes is on SIP/1001. Then, you have technicians on SIP/1002 and SIP/1003. Our configuration file could look like:
[mainmenu] exten => s,1,Answer exten...