{"_id":"579bce3a8a700d290067cc1e","category":{"_id":"57624356653c2d2200fec7a5","__v":0,"project":"55c8cff571d7580d0063a5e5","version":"57624356653c2d2200fec79c","sync":{"url":"","isSync":false},"reference":true,"createdAt":"2016-05-16T21:01:06.191Z","from_sync":false,"order":17,"slug":"menus","title":"Account Menus"},"parentDoc":null,"project":"55c8cff571d7580d0063a5e5","user":"571fcfeea0acd42000af95be","__v":1,"version":{"_id":"57624356653c2d2200fec79c","__v":20,"project":"55c8cff571d7580d0063a5e5","createdAt":"2016-06-16T06:12:38.244Z","releaseDate":"2016-06-16T06:12:38.244Z","categories":["57624356653c2d2200fec79d","57624356653c2d2200fec79e","57624356653c2d2200fec79f","57624356653c2d2200fec7a0","57624356653c2d2200fec7a1","57624356653c2d2200fec7a2","57624356653c2d2200fec7a3","57624356653c2d2200fec7a4","57624356653c2d2200fec7a5","57624356653c2d2200fec7a6","57624356653c2d2200fec7a7","57624356653c2d2200fec7a8","57624356653c2d2200fec7a9","57624356653c2d2200fec7aa","5779ca1b99b40b0e005abb3a","5779d198aea88b0e00f63277","5797d3ab17ced017003c4be4","57ac170ef1cdae0e0053cdfc","57dbfc723ed3450e00dc9e6d","5804d12d16161c0f0077df9b","5841064b652e5b0f0015a7c8","588b5e5f2966b2230009cbf9","58a68ebf3239fa0f00857619","58c23c8b4922930f0050ac91","58fd1460809fc30f00f2ee07","5934eaf5328680002d77de6a","594bf91601cfe6000f40f4c5","595c4ed696b447001ba0cf6d","596524495cee50001575f5be","5970d4f1313162004dd303b5","59780fac24dbd1001a1fa057","59a8cfd3ead78a002d63cafe","59e0323d93da1f001c9ec170"],"is_deprecated":false,"is_hidden":false,"is_beta":true,"is_stable":true,"codename":"","version_clean":"4.0.0","version":"4"},"updates":[],"next":{"pages":[],"description":""},"createdAt":"2016-07-29T21:44:26.412Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"settings":"","results":{"codes":[]},"auth":"required","params":[],"url":""},"isReference":true,"order":0,"body":"We've all been on the consuming side of a phone menu before.  You call a company and hear, \"Press '1' for Sales. Press '2' for Support. Press '0' for the operator.\"  With Phone.com you can create your own menus!\n\n## Supported Services\n* [List Menus](doc:list-account-menus) \n* [Create Menu](doc:create-account-menu) \n* [Get Menu](doc:get-account-menu) \n* [Replace Menu](doc:replace-account-menu)\n* [Delete Menu](doc:delete-account-menu) \n\n## Summary Object\nThe Menu Summary Object is used to briefly represent a menu. It can be seen in several places throughout this API. Here are the properties:\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Property\",\n    \"h-1\": \"Description\",\n    \"h-2\": \"\",\n    \"0-0\": \"`id`\",\n    \"0-1\": \"Integer Menu ID. Read-only.\",\n    \"0-2\": \"\",\n    \"1-0\": \"`name`\",\n    \"1-1\": \"Name. Required. Unique.\",\n    \"1-2\": \"\"\n  },\n  \"cols\": 2,\n  \"rows\": 2\n}\n[/block]\nHere is an example:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n    \\\"id\\\": 12412,\\n    \\\"name\\\": \\\"Main Menu\\\"\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\n## Full Object\n\nThe Full Menu Object contains the same properties as the [Menu Summary Object](#section-summary-object), along with the following:\n[block:parameters]\n{\n  \"data\": {\n    \"0-0\": \"`greeting`\",\n    \"1-0\": \"`keypress_error`\",\n    \"2-0\": \"`allow_extension_dial`\",\n    \"3-0\": \"`keypress_wait_time`\",\n    \"4-0\": \"`timeout_handler`\",\n    \"5-0\": \"`options`\",\n    \"h-0\": \"Property\",\n    \"h-1\": \"Description\",\n    \"0-1\": \"[Greeting](doc:account-media) that is played when a caller enters a menu.  Output is a [Media Summary Object](doc:account-media#section-summary-object). Input must be a [Media Lookup Object](doc:account-media#section-lookup-object). Must refer to a media recording that has `is_hold_music` set to `FALSE`.\",\n    \"1-1\": \"[Message](doc:account-media) that is played when the caller makes a keypress error.  Output is a [Media Summary Object](doc:account-media#section-summary-object). Input must be a [Media Lookup Object](doc:account-media#section-lookup-object). Must refer to a media recording that has `is_hold_music` set to `FALSE`.\",\n    \"2-1\": \"Boolean. Determines whether a caller can enter an extension number to bypass the menu.\",\n    \"3-1\": \"Number of seconds to wait for the caller to choose a menu option. Must be between 1 and 5 seconds.\",\n    \"4-1\": \"[Route](doc:account-routes) that will be entered when the caller fails to choose a menu option within the allotted time.  Output is a [Route Summary Object](doc:account-routes#section-summary-object) if the route is named, otherwise the [Full Route Object](doc:account-routes#section-full-object) will be shown. Input must be a [Route Lookup Object](doc:account-routes#section-lookup-object) pointing to a named route.\",\n    \"5-1\": \"Array of [menu option objects](#section-menu-option-object).  See below for details.\"\n  },\n  \"cols\": 2,\n  \"rows\": 6\n}\n[/block]\n## Menu Option Object\nThe Menu Option object is used to specify call handling rules when a caller selects a menu option.\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Property\",\n    \"h-1\": \"Description\",\n    \"0-0\": \"`key`\",\n    \"1-0\": \"`route`\",\n    \"0-1\": \"Keypad key.  Must equal a single digit or the pound sign (\\\"#\\\").\",\n    \"1-1\": \"[Route](doc:account-routes) which will be entered when the user presses the designated key. Output is a [Route Summary Object](doc:account-routes#section-summary-object) if the route is named, otherwise the [Full Route Object](doc:account-routes#section-full-object) will be shown. Input must be a [Route Lookup Object](doc:account-route#section-lookup-object) pointing to a named route.\"\n  },\n  \"cols\": 2,\n  \"rows\": 2\n}\n[/block]\n## Lookup Object\nThe Menu Lookup Object is used to link to a menu from another object. This is used, for example, when defining actions for [routes](doc:account-routes).  Only *one* of the following properties needs to be included. If multiple are specified, then *all* properties must match one of your menus.\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Properties\",\n    \"h-1\": \"Description\",\n    \"0-0\": \"`id`\",\n    \"0-1\": \"ID\",\n    \"1-0\": \"`name`\",\n    \"1-1\": \"Name\"\n  },\n  \"cols\": 2,\n  \"rows\": 2\n}\n[/block]\nHere are some examples:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"menu: {\\n    \\\"id\\\": 773451\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\n\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"menu: {\\n    \\\"name\\\": \\\"Main Menu\\\"\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\nInstead of inputting an object, you can also use a scalar value.  A menu will be found if the input matches any one of the above fields.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"menu: \\\"Main Menu\\\"\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]","excerpt":"","slug":"account-menus","type":"basic","title":"Menus"}
We've all been on the consuming side of a phone menu before. You call a company and hear, "Press '1' for Sales. Press '2' for Support. Press '0' for the operator." With Phone.com you can create your own menus! ## Supported Services * [List Menus](doc:list-account-menus) * [Create Menu](doc:create-account-menu) * [Get Menu](doc:get-account-menu) * [Replace Menu](doc:replace-account-menu) * [Delete Menu](doc:delete-account-menu) ## Summary Object The Menu Summary Object is used to briefly represent a menu. It can be seen in several places throughout this API. Here are the properties: [block:parameters] { "data": { "h-0": "Property", "h-1": "Description", "h-2": "", "0-0": "`id`", "0-1": "Integer Menu ID. Read-only.", "0-2": "", "1-0": "`name`", "1-1": "Name. Required. Unique.", "1-2": "" }, "cols": 2, "rows": 2 } [/block] Here is an example: [block:code] { "codes": [ { "code": "{\n \"id\": 12412,\n \"name\": \"Main Menu\"\n}", "language": "json" } ] } [/block] ## Full Object The Full Menu Object contains the same properties as the [Menu Summary Object](#section-summary-object), along with the following: [block:parameters] { "data": { "0-0": "`greeting`", "1-0": "`keypress_error`", "2-0": "`allow_extension_dial`", "3-0": "`keypress_wait_time`", "4-0": "`timeout_handler`", "5-0": "`options`", "h-0": "Property", "h-1": "Description", "0-1": "[Greeting](doc:account-media) that is played when a caller enters a menu. Output is a [Media Summary Object](doc:account-media#section-summary-object). Input must be a [Media Lookup Object](doc:account-media#section-lookup-object). Must refer to a media recording that has `is_hold_music` set to `FALSE`.", "1-1": "[Message](doc:account-media) that is played when the caller makes a keypress error. Output is a [Media Summary Object](doc:account-media#section-summary-object). Input must be a [Media Lookup Object](doc:account-media#section-lookup-object). Must refer to a media recording that has `is_hold_music` set to `FALSE`.", "2-1": "Boolean. Determines whether a caller can enter an extension number to bypass the menu.", "3-1": "Number of seconds to wait for the caller to choose a menu option. Must be between 1 and 5 seconds.", "4-1": "[Route](doc:account-routes) that will be entered when the caller fails to choose a menu option within the allotted time. Output is a [Route Summary Object](doc:account-routes#section-summary-object) if the route is named, otherwise the [Full Route Object](doc:account-routes#section-full-object) will be shown. Input must be a [Route Lookup Object](doc:account-routes#section-lookup-object) pointing to a named route.", "5-1": "Array of [menu option objects](#section-menu-option-object). See below for details." }, "cols": 2, "rows": 6 } [/block] ## Menu Option Object The Menu Option object is used to specify call handling rules when a caller selects a menu option. [block:parameters] { "data": { "h-0": "Property", "h-1": "Description", "0-0": "`key`", "1-0": "`route`", "0-1": "Keypad key. Must equal a single digit or the pound sign (\"#\").", "1-1": "[Route](doc:account-routes) which will be entered when the user presses the designated key. Output is a [Route Summary Object](doc:account-routes#section-summary-object) if the route is named, otherwise the [Full Route Object](doc:account-routes#section-full-object) will be shown. Input must be a [Route Lookup Object](doc:account-route#section-lookup-object) pointing to a named route." }, "cols": 2, "rows": 2 } [/block] ## Lookup Object The Menu Lookup Object is used to link to a menu from another object. This is used, for example, when defining actions for [routes](doc:account-routes). Only *one* of the following properties needs to be included. If multiple are specified, then *all* properties must match one of your menus. [block:parameters] { "data": { "h-0": "Properties", "h-1": "Description", "0-0": "`id`", "0-1": "ID", "1-0": "`name`", "1-1": "Name" }, "cols": 2, "rows": 2 } [/block] Here are some examples: [block:code] { "codes": [ { "code": "menu: {\n \"id\": 773451\n}", "language": "json" } ] } [/block] [block:code] { "codes": [ { "code": "menu: {\n \"name\": \"Main Menu\"\n}", "language": "json" } ] } [/block] Instead of inputting an object, you can also use a scalar value. A menu will be found if the input matches any one of the above fields. [block:code] { "codes": [ { "code": "menu: \"Main Menu\"", "language": "json" } ] } [/block]