--- title: "Composite" slug: "ai-application-service-chatbot-composite" updated: 2026-09-17T09:35:51Z published: 2026-09-17T09:35:51Z canonical: "api.ncloud-docs.com/ai-application-service-chatbot-composite" --- > ## Documentation Index > Fetch the complete documentation index at: https://api.ncloud-docs.com/llms.txt > Use this file to discover all available pages before exploring further. # Composite Available in Classic and VPC This document describes the Composite component of the response components of a chatbot answer. The Composite component consists of the following two basic components. - [Template:](/docs/en/ai-application-service-chatbot-composite#Template%EC%BB%B4%ED%8F%AC%EB%84%8C%ED%8A%B8) - [Carousel](/docs/en/ai-application-service-chatbot-composite#Carousel%EC%BB%B4%ED%8F%AC%EB%84%8C%ED%8A%B8) (The Carousel component includes the [Persistent Menu](/docs/en/ai-application-service-chatbot-composite#PersistentMenu%EC%BB%B4%ED%8F%AC%EB%84%8C%ED%8A%B8) component.) These components allow you to set the chatbot's response to each feature in Chatbot Builder, and return the response results in JSON format. ## Template component The Template component consists of cover, content table, and foot table. ### Template component response body The following is the response body of the Template component. | Field | Type | Required | Description | | --- | --- | --- | --- | | `type` | String | - | Component type - Only `template` is available among the 2 basic components for the Template component | | `title` | String | - | Component title - Short bold text | | `subTitle` | String | - | Subcomponent title - Short gray text | | `data` | Object | - | Template component configuration information | | `data.cover` | Object | - | Cover information | | `data.description` | String | - | Component detailed descriptions - Long text | | `data.contentBackgroundImage` | String | - | Background image URL displayed in the content table area - Must be a URL of `https` format | | `data.contentTable` | Array | - | [contentTable details](/docs/en/ai-application-service-chatbot-composite#Table) - Two-dimensional cell array - Up to three rows can be set - For more information, see [Basic component](/docs/en/ai-application-service-chatbot-component-basic) | | `data.footBackgroundImage` | String | - | Background image URL displayed in the foot table area - Must be a URL of `https` format | | `data.footTable` | Array | - | [footTable details](/docs/en/ai-application-service-chatbot-composite#Table) - Components are identical to `contentTable` but can only be displayed if `contentTable` exists | | `data.footTableShowRows` | Integer | - | Maximum number of rows - If the number of rows is greater than the maximum, the maximum rows should be displayed and collapsed, and an expand button should be added - Display all rows when not set | | `data.action` | Action | - | Component action information - Each action type has different details, so see [Action component](/docs/en/ai-application-service-chatbot-component-commonaction) | #### `Table` The following describes `Table`. | Field | Type | Required | Description | | --- | --- | --- | --- | | `rowSpan` | Integer | - | Number of rows occupied by cells in the table (span) | | `colSpan` | Integer | - | Number of columns occupied by cells in the table (span) | | `data` | Object | - | `data` area information of the Template component - See [Basic component](/docs/en/ai-application-service-chatbot-component-basic) for more information - `text`, `image`, `button` | | `data.type` | String | - | Component type | | `data.title` | String | - | Component name | | `data.subTitle` | String | - | Subcomponent name | | `data.data` | Object | - | Subcomponent configuration information | | `data.data.type` | String | - | Subcomponent type | | `data.data.iconUrl` | String | - | Icon URL address | | `data.data.action` | Object | - | Component action information | | `data.data.action.type` | String | - | Component action type - `postback` \| `utterance` \| `link` \| `phone` \| `welcome` - `postback`: See [Postback component](/docs/en/ai-application-service-chatbot-component-commonaction#Postback%EC%BB%B4%ED%8F%AC%EB%84%8C%ED%8A%B8) - `utterance`: See [Utterance component](/docs/en/ai-application-service-chatbot-component-commonaction#Utterance%EC%BB%B4%ED%8F%AC%EB%84%8C%ED%8A%B8) - `link`: See [Link component](/docs/en/ai-application-service-chatbot-component-commonaction#Link%EC%BB%B4%ED%8F%AC%EB%84%8C%ED%8A%B8) - `phone`: See [Phone component](/docs/en/ai-application-service-chatbot-component-commonaction#Phone%EC%BB%B4%ED%8F%AC%EB%84%8C%ED%8A%B8) - `welcome`: See [Welcome component](/docs/en/ai-application-service-chatbot-component-commonaction#Welcome%EC%BB%B4%ED%8F%AC%EB%84%8C%ED%8A%B8) | | `data.data.action.data` | Object | - | Component action details - Each action type has different details, so see [Action component](/docs/en/ai-application-service-chatbot-component-commonaction) | ### Template component response example The following is a sample response of the Template component. ``` { "type": "template", "title": "optional, short bold text", "subTitle": "optional, short gray text", "data":{ "cover":{ "contentTableShowRows": 3, "contentTable": [ "colSpan": 1, "rowSpan": 2, "data":{} ] } }, "footTableShowRows":3, "footBackgroundImage":"https://ssl.pstatic.net/CloudFunctions.png", "footTable":[] } ``` ### Persistent Menu component The Persistent Menu component is displayed when the user taps the menu button in the chatbar, and is always included in the [`Open` response](/docs/en/ai-application-service-chatbot-open). Other responses that don't change `utils` contain the `permanentMenu` content. #### Persistent Menu response body The following is the response body of Persistent Menu. | Field | Type | Required | Description | | --- | --- | --- | --- | | `type` | String | - | Persistent menu type - Only `template` is available among the 2 basic components for the Template component | | `title` | String | - | Persistent menu name - Displayed on the chatbar | | `data` | Object | - | Persistent menu configuration information - `cover` is not used | | `data.contentBackgroundImage` | String | - | Background image URL displayed in the content table area - Displayed only if the `image` component exists in `contentTable` - Must be a URL of `https` format | | `data.contentTable` | Array | - | [contentTable details](/docs/en/ai-application-service-chatbot-composite#contentTable) - `footTable` is not used | #### `contentTable` The following describes `data.contentTable`. | Field | Type | Required | Description | | --- | --- | --- | --- | | `rowSpan` | Integer | - | Number of rows occupied by cells in the table (span) | | `colSpan` | Integer | - | Number of columns occupied by cells in the table (span) | | `data` | Object | - | Component configuration information - See [Basic component](/docs/en/ai-application-service-chatbot-component-basic) for more information | | `data.type` | String | - | Component type | | `data.title` | String | - | Component name | | `data.subTitle` | String | - | Subcomponent name | | `data.data` | Object | - | Subcomponent configuration information | | `data.data.type` | String | - | Subcomponent type | | `data.data.action` | Object | - | Component action information | | `data.data.action.type` | String | - | Component action type - `postback` \| `utterance` \| `link` \| `phone` \| `welcome` - `postback`: See [Postback component](/docs/en/ai-application-service-chatbot-component-commonaction#Postback%EC%BB%B4%ED%8F%AC%EB%84%8C%ED%8A%B8) - `utterance`: See [Utterance component](/docs/en/ai-application-service-chatbot-component-commonaction#Utterance%EC%BB%B4%ED%8F%AC%EB%84%8C%ED%8A%B8) - `link`: See [Link component](/docs/en/ai-application-service-chatbot-component-commonaction#Link%EC%BB%B4%ED%8F%AC%EB%84%8C%ED%8A%B8) - `phone`: See [Phone component](/docs/en/ai-application-service-chatbot-component-commonaction#Phone%EC%BB%B4%ED%8F%AC%EB%84%8C%ED%8A%B8) - `welcome`: See [Welcome component](/docs/en/ai-application-service-chatbot-component-commonaction#Welcome%EC%BB%B4%ED%8F%AC%EB%84%8C%ED%8A%B8) | | `data.data.action.data` | Object | - | Component action details - Each action type has different details, so see [Action component](/docs/en/ai-application-service-chatbot-component-commonaction) | #### Persistent Menu response example The following is a sample response of Persistent Menu. ``` { "type": "template", "title": "persistentMenu", "data": { "contentBackgroundImage": "url", "contentTable": [] } } ``` ## Carousel component The Carousel component consists of a carousel of answers that repeat the same format. ### Carousel component response body The following is the response body of the Carousel component. | Field | Type | Required | Description | | --- | --- | --- | --- | | `type` | String | - | Component type - Only `carousel` is available among the 2 basic components for the Carousel component | | `title` | String | - | Component title - Short bold text | | `subTitle` | String | - | Subcomponent title - Short gray text | | `data` | Object | - | Carousel component configuration information | | `data.cards` | Array | - | Information about the cards that make up the carousel - Each card has different details, so see [Basic component](/docs/en/ai-application-service-chatbot-composite#Basic%EC%BB%B4%ED%8F%AC%EB%84%8C%ED%8A%B8), [Composite component](/docs/en/ai-application-service-chatbot-composite#Composite%EC%BB%B4%ED%8F%AC%EB%84%8C%ED%8A%B8), and [Flex component](/docs/en/ai-application-service-chatbot-composite#Flex%EC%BB%B4%ED%8F%AC%EB%84%8C%ED%8A%B8) for more information | ### Carousel component response example The following is a sample response of the Carousel component. ``` { "type": "carousel", "title": "optional, short bold text", "subTitle": "optional, short gray text", "data" : { "cards": [{}] } } ```