{"revision":"c10276e953456835cdbb1f3a60d58ae1980be353","document":{"id":4931,"path":"conversational-interfaces/virtual-agent/default-rich-controls-va-cccif.md","title":"Default input and output rich controls for a custom chat integration","bundle":null,"doc_type":null,"release":"australia","body":"\n# Default input and output rich controls for a custom chat integration\n\nInput and output rich controls must be mapped to your custom chat integration in the Custom Adapter Configurations \\[sys\\_cs\\_custom\\_adapter\\_config\\] table. If a rich control is missing an outbound transformer implementation, a response is not served to the end user and that user may get an unsatisfactory chat experience.\n\nThe following default rich controls map to input and output rich controls. The **uiType** parameter refers to a topic control used to build conversations in Virtual Agent Designer.\n\n<table id=\"table_rqm_lvn_qmb\"><thead><tr><th>\n\nRich control\n\n</th><th>\n\nDescription\n\n</th></tr></thead><tbody><tr><td>\n\nActionRichControl\n\n</td><td>\n\nThis component handles the different events and actions that occur in a conversation. Some actions may not apply to all channels. For example, StartSpinnerActionMsg is ignored in SMS.ServiceNow® Virtual Agent produces the following types of action messages through this framework. The custom chat interface only recognizes certain action message types.\n\n -   SeparatorActionMsg \\|\\|actionMsg instanceof\n-   SystemActionMsg \\|\\|actionMsg instanceof\n-   TopicFinishedActionMsg \\|\\|actionMsg instanceof\n-   SwitchToVirtualAgentActionMsg \\|\\|actionMsg instanceof\n-   SwitchConversationActionMsg \\|\\|actionMsg instanceof\n-   ChatSubHeaderActionMsg \\|\\|actionMsg instanceof\n-   StartSpinnerActionMsg \\|\\|actionMsg instanceof EndSpinnerActionMsg\n-   SubscribetoSupportQueue \\|\\|actionMsg instanceof\n-   SubscribeToChatPresence \\|\\|actionMsg instanceof\n-   SwitchToLiveAgentActionMsg \\|\\|actionMsg instanceof\n\n ActionRichControl wraps these messages inside the **actionMsg** element. So, a single outbound transformer for ActionRichControl can handle all of these messages. There is no need for an inbound transformer for this component.\n\n</td></tr><tr><td>\n\n**agentInfo** parameter\n\n</td><td>\n\nIf the rich control is sent from a live agent, then the **agentInfo** attribute is added to the rich control.Example:\n\n```\n{\n     uiType: \"someType\",\n     group: \"someGroup\"\n     agentInfo: { sentFromAgent: true }  // please note that this object may contain more info in subsequent releases.\n     ...\n} \n```\n\n</td></tr><tr><td>\n\nDefaultPicker\n\n</td><td>\n\nMaps to [File Picker](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/conversational-interfaces/virtual-agent/va-file-picker.md), Topic Picker, and [Boolean](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/conversational-interfaces/virtual-agent/va-boolean-user-input.md) controls.Example:\n\n```\n{\n    uiType: \"Picker/TopicPicker/Boolean\",\n    group: \"DefaultPicker\",  \n    nluTextEnabled: true/false,\n    promptMsg: \"\", // optional (needed for TopicPicker)\n    label: \"The question for the list\",   // always filled\n    itemType: \"Picture/List\"  // needed to user key to expect picture attached\n    options: [\n        {\n            label: \"display label prompt\",\n            value: \"the value required to satisfy the question\",\n            description: \"a description of value_1 item\"\n\t    attachment: \"www.foo\",\n            enabled: true/false\n        }, \n\t...\n    ]\n}\n```\n\n The optional **order** parameter lets you specify the order in which promoted topics should display. For example:\n\n ```\n\"options\": [\n    {\n      label: \"Check IT Ticket Status\",\n      value: \"55720b465bf0201024f11fc40a81c72d\",\n      order: 100,\n      enabled: true\n    },\n    {\n      label: \"Live Agent Support\",\n      value: \"ce2ee85053130010cf8cddeeff7b12bf\",\n      order: 200,\n      enabled: true\n    },\n    {\n      label: \"Open IT Ticket 2\",\n      value: \"2a46cffbc7602010v088bbf603c260a7\",\n      order: 300,\n      enabled: true\n    }\n]\n```\n\n</td></tr><tr><td>\n\nDefaultText\n\n</td><td>\n\nMaps to [Input Text](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/conversational-interfaces/virtual-agent/va-text-input.md), [Output Text](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/conversational-interfaces/virtual-agent/va-text-response.md), and File Upload controls.Example:\n\n```\n{\n    uiType: \"InputText/OutputText/FileUpload/Picture\",\n    group: \"DefaultText\", \n    required: true/false,\n    nluTextEnabled: true/false,\n    itemType: \"file/image/inputtext/outputtext\",\n    maskType: \"SECURE/SENSITIVE/NONE\"  // null except for InputText/OutputText\n    label: \"The Question?\"        \n}\n```\n\n</td></tr><tr><td>\n\nDefaultDate\n\n</td><td>\n\nMaps to [Date and Time](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/conversational-interfaces/virtual-agent/va-date-time-input.md) controls.```\n{\n    uiType: \"Date/DateTime/Time\",\n    group: \"DefaultDate\", \n    required: true/false,\n    nluTextEnabled: true/false,   \n    label: \"The Question?\"\n     \n}\n```\n\n</td></tr><tr><td>\n\nDefaultOutputLink\n\n</td><td>\n\nMaps to [link response](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/conversational-interfaces/virtual-agent/va-link-output.md) controls.Example:\n\n```\n{\n    uiType: \"OutputLink\",\n    group: \"DefaultOutputLink\",\n    label: \"link label\",\n    header: \"link header\",\n    type: \"link\",\n    value: {\n        action: \"www.foo\",\n    }\t\n}\n     \n}\n```\n\n</td></tr><tr><td>\n\nDefaultOutputImage\n\n</td><td>\n\nMaps to [image response](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/conversational-interfaces/virtual-agent/va-image-output.md) controls.Example:\n\n```\n{\n    uiType: \"OutputImage\",\n    group: \"DefaultOutputImage\",\n    value: \"www.foo\"\n}\n```\n\n</td></tr><tr><td>\n\nDefaultOutputCard\n\n</td><td>\n\nMaps to [card response](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/conversational-interfaces/virtual-agent/va-card-output.md) controls.Example:\n\n```\n{\n    uiType: \"OutputCard\",\n    group: \"DefaultOutputCard\",\n    templateName: \"Card\",\n    data: \"some json data string\"\n}\n```\n\n</td></tr><tr><td>\n\nDefaultOutputHtml\n\n</td><td>\n\nMaps to [HTML response](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/conversational-interfaces/virtual-agent/va-html-output.md) controls.Example:\n\n```\n{\n    uiType: \"OutputHtml\",\n    group: \"DefaultOutputHtml\",\n    style: \"inline\",\n    height: 100,\n    width: 100,\n    value: \"<div>html</div>\"\n}\n```\n\n</td></tr><tr><td>\n\nDefaultOutputTable\n\n</td><td>\n\nMaps to [table response](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/conversational-interfaces/virtual-agent/table-bot-response.md) controls.Example:\n\n```\n{\n    uiType: \"OutputTable\",\n    group: \"DefaultOutputTable\",\n    label: \"Table Title\",\n    headers: [\"Column 1\", \"Column 2\"],\n    navigationBtnLabel: \"See next\",\n    data: [\n        [\"foo1\", \"foo2\"],\n        [\"bar1\", \"bar2\"]\n    ]\n}\n```\n\n</td></tr><tr><td>\n\nDefaultGroupedPartsOutputControl\n\n</td><td>\n\nMaps to [multi-response](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/conversational-interfaces/virtual-agent/va-multi-flow-output.md) controls.Example:\n\n```\n{\n    uiType: \"GroupedPartsOutputControl\",\n    group: \"DefaultGroupedPartsOutputControl\"\n    groupPartType: \"Link\",\n    header: \"header message\",\n    values: [\n\t{\n\t    action: \"www.foo\",\n\t    description: \"description\",\n\t    label: \"link_1 label\",\n\t    context: \"ITSM\"\n\t},\n\t...\n    ]\n}\n```\n\n</td></tr><tr><td>\n\nDefaultMultiPartOutput\n\n</td><td>\n\nMaps to [multi-response](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/conversational-interfaces/virtual-agent/va-multi-flow-output.md) controls.Example:\n\n```\n{\n    uiType: \"MultiPartOutput\",\n    group: \"DefaultMultiPartOutput\"\n    navigationBtnLabel: \"Go next\",\n    content: {\n        uiType: \"OutputHtml\",\n        style: \"inline\",\n        type: \"html\",\n        height: 100,\n        width: 100,\n        value: \"<div>html</div>\"\n     }\n}\n```\n\n</td></tr><tr><td>\n\nDefaultCustomControl\n\n</td><td>\n\nMaps to [custom controls](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/conversational-interfaces/virtual-agent/va-custom-control-util.md).Example:\n\n```\n{\n    uiType: \"CustomControl\",\n    group: \"DefaultCustomControl\",\n    name: \"The name of the Custom Control (sys_cs_custom_control.name)\",\n    required: true/false,\n    uxComponentDefinitionSysId: \"seismicComponentId\" // or null if not\n    isInput: true/false, // whether to wait for a response value or if just output\n    serializedControlData: \"User defined JSON from generateControlData function\";    \n}\n```\n\n</td></tr></tbody>\n</table>**Parent Topic:**[Creating conversational custom chat integrations in Virtual Agent](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/conversational-interfaces/virtual-agent/va-custom-adapter-framework.md)\n\n"}}