View Template::구성

페이지 이동경로

단일형

텍스트 및 이미지로 구성된 간단한 답변 화면으로 구성됩니다.

KEYWORD_TEXT

속성
구성 분류 속성
KEYWORD_TEXT 단일형 Basic, Interim

KEYWORD_TEXT는 사용자 질문의 정답을 “간단한 키워드(Text)”로 표시할 수 있는 View Template 유형입니다. 현재 KEYWORD_TEXT가 적용된 도메인으로는 주식, 날짜, 시간, 알람, 어학, 환율, 구구단, 스피커, 시스템 설정 등이 있습니다.

주식에 대한 답변(TV용) 그림주식에 대한 답변(TV용)

주식에 대한 답변(모바일용) 그림주식에 대한 답변(모바일용)

Request

KEYWORD_TEXT Request Body
파라미터 타입 필수 여부 설명
type String 필수 KEYWORD_TEXT로 지정
Object 필수 View Template 타입별 필수/선택/미사용 항목이 다름
- 선택 항목 미 정의시, View Template에 출력되지 않음
title Object: TemplateText 선택 사용자 질문(발화)을 요약해서 표시
- 필수 엔티티 또는 선택 엔티티 등 필요한 정보를 노출
ex) title.plainText: "카카오"
- 정보 중요도: title > subtitle
- title은 가능한 한 styledText 사용 지양
- icon은 텍스트 가독성을 높이기 위한 것으로 특정 엔티티에 국한된 이미지를 사용하지 않음
ex) 프랑스 국기 아이콘 X, 알람/지도 아이콘 O
subtitle Object: TemplateText 선택 title을 보조하는 내용
- subtitle을 정의 시 반드시 title이 먼저 정의되어야 함
source Object: TemplateText 선택 콘텐츠 제공 출처
- 정보의 기준 날짜 또는 시간 등을 표시
ex) source.plainText: "7월 26일 오전 2:12 기준, Daum 검색"
button1
button2
Object: TemplateButton 선택 버튼 기능은 다음과 같음
- 버튼은 최대 두 개까지 노출
- 버튼 내 아이콘 사용은 지양
- 버튼 선택은 터치로만 가능(발화로 선택 불가)
* 웹뷰(url) 열기: Daum 검색 결과와 상세 페이지 모두 랜딩이 가능한 경우, 1)과 2) 기준에 따라 하나의 웹 뷰를 열 수 있음(ex. 버티컬 엔드 페이지, Daum 검색 결과 페이지)
1) Daum 검색 결과가 더 많은 정보를 주거나 동일한 경우: '다음 검색 결과'로 연결(ex. 유명인 Daum 검색 결과 제공 시, 관련 뉴스 또는 실시간 정보 제공 가능)
2) 엔드 페이지에서만 주는 가치가 있다고 판단될 경우: '상세 페이지'로 연결(ex. 어학 상세 페이지의 예문/발음 듣기, 뉴스 기사의 TTS 지원)
* 앱 스킴
* 디바이스 액션(ex. 전화 걸기)
content Object: Content 필수 사용자 질문에 대한 정답(상세 내용) 표시
- 정보 중요도: primaryText > secondaryText
- primaryText: 가장 중요한 정답형 정보(최대 두 줄)
- secondaryText: primaryText의 부가 정보(최대 두 줄)
ex) content.primaryText.plainText: "175,000원"
quickReplies Object: TemplateButton 필수 quickReplies를 터치한 경우 해당 명령어를 발화한 것과 동일 동작
- 추천 명령어를 구어체로 작성(최소 두 개, 최대 열 개)
- Play control(재생/일시정지/다음곡) 관련 명령은 지양
ex) 코스피 지수 알려줘
meta Object: Meta 선택 상세 정보를 확인하는 URL 정보로 톡 템플릿에서 활용
utterance (입력) String 선택 사용자 발화
ttl String 필수 화면 유지 시간
- 기본값: 10,000(msec)
- 헤이카카오 앱의 경우 일괄: 300,000(msec)
- 결괏값에 따라 다르게 설정 가능
ex) ttl: 10000
※ 기존 View Template은 body.data.ttl로 정의했으나, 2019년 9월 이후 신규 생성하는 View Template은 body.ttl로 정의해야 함
style String 필수 최종 결과 화면(BASIC)인지 중간 결과 화면(INTERIM)인지 구분
- 기본값: BASIC
- 별도 지정하지 않으면 BASIC 값으로 자동 지정
ex) style: "BASIC"
※ 기존 View Template은 style을 정의하지 않았으나, 2019년 9월 이후 신규 생성하는 View Template에서는 반드시 정의해야 함
token String 필수 각 도메인에서 발급하는 토큰
안내
Object 별 상세 정의는 Data Type 문서를 참고하시기 바랍니다.

Sample Code

다음 예시는 주식에 대한 답변(TV용)입니다.

코드예제KEYWORD_TEXT

{
  "type": "Template.Render",
  "body": {
    "type": "KEYWORD_TEXT",
    "data": {
      "subtitle": {
        "thumbnail": {}
      },
      "source": {
        "plainText": "11월 28일 오후 3:30 기준, Daum검색",
        "styledText": "11월 28일 오후 3:30 기준, Daum검색",
        "thumbnail": {}
      },
      "button2": {
        "thumbnail": {},
        "action": {}
      },
      "background": {
        "thumbnail": {}
      },
      "multimedia": {
        "thumbnail": {}
      },
      "meta": {},
      "content": {
        "primaryText": {
          "plainText": "157,000",
          "styledText": "157,000",
          "thumbnail": {}
        },
        "secondaryText": {
          "plainText": "▼ 500 (-0.32%)",
          "styledText": "<font color=\"#2795FF\">▼ 500 (-0.32%)</font>",
          "thumbnail": {}
        },
        "paragraph": {
          "thumbnail": {}
        }
      },
      "title": {
        "plainText": "카카오",
        "styledText": "카카오",
        "thumbnail": {}
      },
      "ttl": 10000,
      "button1": {
        "plainText": "자세히 보기",
        "thumbnail": {},
        "action": {
          "url": "https://search.daum.net/search?nil_suggest=btn&w=tot&DA=SBC&q=카카오%20주가"
        }
      },
      "quickReplies": [
        {
          "plainText": "코스피 지수 알려줘",
          "thumbnail": {},
          "action": {
            "url": "kakaoi://instruction?body=%7B%22utterance%22%3A%22%EC%BD%94%EC%8A%A4%ED%94%BC+%EC%A7%80%EC%88%98+%EC%95%8C%EB%A0%A4%EC%A4%98%22%2C%22token%22%3A%22kakao%2F595d98869418c2e1e6a000bd%2Fd41d8cd98f00b204e9800998ecf8427e%22%7D&type=Recognizer.RequestText"
          }
        },
        {
          "plainText": "코스닥 지수 알려줘",
          "thumbnail": {},
          "action": {
            "url": "kakaoi://instruction?body=%7B%22utterance%22%3A%22%EC%BD%94%EC%8A%A4%EB%8B%A5+%EC%A7%80%EC%88%98+%EC%95%8C%EB%A0%A4%EC%A4%98%22%2C%22token%22%3A%22kakao%2F595d98869418c2e1e6a000bd%2Fd41d8cd98f00b204e9800998ecf8427e%22%7D&type=Recognizer.RequestText"
          }
        },
        {
          "plainText": "카카오 관련 뉴스 들려줘",
          "thumbnail": {},
          "action": {
            "url": "kakaoi://instruction?body=%7B%22utterance%22%3A%22%EC%B9%B4%EC%B9%B4%EC%98%A4+%EA%B4%80%EB%A0%A8+%EB%89%B4%EC%8A%A4+%EB%93%A4%EB%A0%A4%EC%A4%98%22%2C%22token%22%3A%22kakao%2F595d98869418c2e1e6a000bd%2Fd41d8cd98f00b204e9800998ecf8427e%22%7D&type=Recognizer.RequestText"
          }
        },
        {
          "plainText": "경제 뉴스 알려줘",
          "thumbnail": {},
          "action": {
            "url": "kakaoi://instruction?body=%7B%22utterance%22%3A%22%EA%B2%BD%EC%A0%9C+%EB%89%B4%EC%8A%A4+%EC%95%8C%EB%A0%A4%EC%A4%98%22%2C%22token%22%3A%22kakao%2F595d98869418c2e1e6a000bd%2Fd41d8cd98f00b204e9800998ecf8427e%22%7D&type=Recognizer.RequestText"
          }
        }
      ]
    },
    "token": "kakao/595d98869418c2e1e6a000bd/d41d8cd98f00b204e9800998ecf8427e"
  }
}

IMAGE_TEXT

속성
구성 분류 속성
IMAGE_TEXT 단일형 Basic, Interim

IMAGE_TEXT는 사용자 질문의 정답을 “간단한 이미지(또는 동영상) 및 키워드”로 표시할 수 있는 유형입니다. 현재 IMAGE_TEXT가 적용된 도메인으로는 교통정보, 로또, 어학, 운세, 음악, 인물, 장소검색, 주식, 카톡, 환율 등이 있습니다.

현재 방송 프로그램에 대한 답변(TV용) 그림현재 방송 프로그램에 대한 답변(TV용)

바람 세기에 대한 답변(모바일용) 그림바람 세기에 대한 답변(모바일용)

Request

IMAGE_TEXT Request Body
파라미터 타입 필수 여부 설명
type String 필수 IMAGE_TEXT로 지정
Object 필수 View Template 타입별 필수/선택/미사용 항목이 다름
- 선택 항목 미 정의시, View Template에 출력되지 않음
title Object: TemplateText 선택 사용자 질문(발화)을 요약해서 표시
- 필수 엔티티 또는 선택 엔티티 등 필요한 정보를 노출
ex) title.plainText: "카카오"
- 정보 중요도: title > subtitle
- title은 가능한 한 styledText 사용 지양
- icon은 텍스트 가독성을 높이기 위한 것으로 특정 엔티티에 국한된 이미지를 사용하지 않음
ex) 프랑스 국기 아이콘 X, 알람/지도 아이콘 O
subtitle Object: TemplateText 선택 title을 보조하는 내용
- subtitle을 정의 시 반드시 title이 먼저 정의되어야 함
source Object: TemplateText 선택 콘텐츠 제공 출처
- 정보의 기준 날짜 또는 시간 등을 표시
ex) source.plainText: "7월 26일 오전 2:12 기준, Daum 검색"
button1
button2
Object: TemplateButton 선택 버튼 기능은 다음과 같음
- 버튼은 최대 두 개까지 노출
- 버튼 내 아이콘 사용은 지양
- 버튼 선택은 터치로만 가능(발화로 선택 불가)
* 웹뷰(url) 열기: Daum 검색 결과와 상세 페이지 모두 랜딩이 가능한 경우, 1)과 2) 기준에 따라 하나의 웹 뷰를 열 수 있음(ex. 버티컬 엔드 페이지, Daum 검색 결과 페이지)
1) Daum 검색 결과가 더 많은 정보를 주거나 동일한 경우: '다음 검색 결과'로 연결(ex. 유명인 Daum 검색 결과 제공 시, 관련 뉴스 또는 실시간 정보 제공 가능)
2) 엔드 페이지에서만 주는 가치가 있다고 판단될 경우: '상세 페이지'로 연결(ex. 어학 상세 페이지의 예문/발음 듣기, 뉴스 기사의 TTS 지원)
* 앱 스킴
* 디바이스 액션(ex. 전화 걸기)
multimedia Object: TemplateMedia 필수 사용자 질문의 정답을 잘 요약한 Image 또는 Video
ex) multimedia.mediaType: "IMAGE"
multimedia.mediaUrl: "http://tv/moon.png"
content Object: Content 필수 사용자 질문에 대한 정답(상세 내용) 표시
- 정보 중요도: primaryText > secondaryText
- primaryText: 가장 중요한 정답형 정보(최대 두 줄)
- secondaryText: primaryText의 부가 정보(최대 두 줄)
ex) content.primaryText.plainText: "175,000원"
quickReplies Object: TemplateButton 필수 quickReplies를 터치한 경우 해당 명령어를 발화한 것과 동일 동작
- 추천 명령어를 구어체로 작성(최소 두 개, 최대 열 개)
- Play control(재생/일시정지/다음곡) 관련 명령은 지양
ex) 코스피 지수 알려줘
meta Object: Meta 선택 상세 정보를 확인하는 URL 정보로 톡 템플릿에서 활용
utterance (입력) String 선택 사용자 발화
ttl String 필수 화면 유지 시간
- 기본값: 10,000(msec)
- 헤이카카오 앱의 경우 일괄: 300,000(msec)
- 결괏값에 따라 다르게 설정 가능
ex) ttl: 10000
※ 기존 View Template은 body.data.ttl로 정의했으나, 2019년 9월 이후 신규 생성하는 View Template은 body.ttl로 정의해야 함
style String 필수 최종 결과 화면(BASIC)인지 중간 결과 화면(INTERIM)인지 구분
- 기본값: BASIC
- 별도 지정하지 않으면 BASIC 값으로 자동 지정
ex) style: "BASIC"
※ 기존 View Template은 style을 정의하지 않았으나, 2019년 9월 이후 신규 생성하는 View Template에서는 반드시 정의해야 함
token String 필수 각 도메인에서 발급하는 토큰
안내
Object 별 상세 정의는 Data Type 문서를 참고하시기 바랍니다.

Sample Code

다음 예시는 바람 세기에 대한 답변입니다.

코드예제IMAGE_TEXT

{
  "type": "Template.Render",
  "body": {
    "type": "IMAGE_TEXT",
    "token": "kakao/5964a21d9418c2bd523473a8/16cf6dc2-5338-45e5-a02b-387a8c5fcac7",
    "data": {
      "subtitle": {
        "styledText": "서울시 종로구 부암동",
        "plainText": "서울시 종로구 부암동"
      },
      "source": {
        "styledText": "11월 29일 AM 5:00 기준, Daum검색",
        "plainText": "11월 29일 AM 5:00 기준, Daum검색"
      },
      "background": {
        "color": "#222431"
      },
      "multimedia": {
        "mediaType": "IMAGE",
        "mediaUrl": "http://t1.kakaocdn.net/ai_viewtemplate/weather/v1/wind/02.png"
      },
      "meta": {
        "plainText": "서울시 종로구 부암동 풍속",
        "mobileUrl": "https://m.search.daum.net/search?w=tot&nil_mtopsearch=btn&DA=YZR&q=%EC%84%9C%EC%9A%B8%EC%8B%9C+%EC%A2%85%EB%A1%9C%EA%B5%AC+%EB%B6%80%EC%95%94%EB%8F%99+%ED%92%8D%EC%86%8D",
        "webUrl": "https://search.daum.net/search?w=tot&q=%EC%84%9C%EC%9A%B8%EC%8B%9C+%EC%A2%85%EB%A1%9C%EA%B5%AC+%EB%B6%80%EC%95%94%EB%8F%99+%ED%92%8D%EC%86%8D"
      },
      "content": {
        "primaryText": {
          "styledText": "2.0m/s",
          "plainText": "2.0m/s"
        },
        "secondaryText": {
          "styledText": "북풍",
          "plainText": "북풍"
        }
      },
      "title": {
        "styledText": "오늘 바람",
        "plainText": "오늘 바람"
      },
      "ttl": 10000,
      "button1": {
        "plainText": "상세 보기",
        "action": {
          "url": "https://m.search.daum.net/search?w=tot&nil_mtopsearch=btn&DA=YZR&q=%EC%84%9C%EC%9A%B8%EC%8B%9C+%EC%A2%85%EB%A1%9C%EA%B5%AC+%EB%B6%80%EC%95%94%EB%8F%99+%ED%92%8D%EC%86%8D"
        }
      },
      "quickReplies": [
        {
          "plainText": "부암동 풍향은",
          "action": {
            "url": "kakaoi://instruction?type=Recognizer.RequestText&body=%7B%22utterance%22%3A%22%EB%B6%80%EC%95%94%EB%8F%99+%ED%92%8D%ED%96%A5%EC%9D%80%22%7D"
          }
        },
        {
          "plainText": "부암동 현재 풍속",
          "action": {
            "url": "kakaoi://instruction?type=Recognizer.RequestText&body=%7B%22utterance%22%3A%22%EB%B6%80%EC%95%94%EB%8F%99+%ED%98%84%EC%9E%AC+%ED%92%8D%EC%86%8D%22%7D"
          }
        },
        {
          "plainText": "부암동 내일 풍속",
          "action": {
            "url": "kakaoi://instruction?type=Recognizer.RequestText&body=%7B%22utterance%22%3A%22%EB%B6%80%EC%95%94%EB%8F%99+%EB%82%B4%EC%9D%BC+%ED%92%8D%EC%86%8D%22%7D"
          }
        },
        {
          "plainText": "부암동 모레 풍속",
          "action": {
            "url": "kakaoi://instruction?type=Recognizer.RequestText&body=%7B%22utterance%22%3A%22%EB%B6%80%EC%95%94%EB%8F%99+%EB%AA%A8%EB%A0%88+%ED%92%8D%EC%86%8D%22%7D"
          }
        },
        {
          "plainText": "부암동 초미세먼지는",
          "action": {
            "url": "kakaoi://instruction?type=Recognizer.RequestText&body=%7B%22utterance%22%3A%22%EB%B6%80%EC%95%94%EB%8F%99+%EC%B4%88%EB%AF%B8%EC%84%B8%EB%A8%BC%EC%A7%80%EB%8A%94%22%7D"
          }
        },
        {
          "plainText": "부암동 기온은",
          "action": {
            "url": "kakaoi://instruction?type=Recognizer.RequestText&body=%7B%22utterance%22%3A%22%EB%B6%80%EC%95%94%EB%8F%99+%EA%B8%B0%EC%98%A8%EC%9D%80%22%7D"
          }
        },
        {
          "plainText": "부암동 지금 체감온도",
          "action": {
            "url": "kakaoi://instruction?type=Recognizer.RequestText&body=%7B%22utterance%22%3A%22%EB%B6%80%EC%95%94%EB%8F%99+%EC%A7%80%EA%B8%88+%EC%B2%B4%EA%B0%90%EC%98%A8%EB%8F%84%22%7D"
          }
        }
      ]
    }
  }
}

FULL_TEXT

FULL_TEXT는 사용자 질문에 대한 정답을 “긴 글”로 표시할 수 있는 유형으로, 필요에 따라 “이미지”도 함께 표시할 수 있습니다. 현재 FULL_TEXT가 적용된 도메인으로는 콘텐츠 줄거리, 백과사전, 음악 등이 있습니다.

속성
구성 분류 속성
FULL_TEXT 단일형 Basic

노래 가사 답변(TV용) 그림노래 가사 답변(TV용)

노래 가사 답변(모바일용) 그림노래 가사 답변(모바일용)

Request

FULL_TEXT Request Body
파라미터 타입 필수 여부 설명
type String 필수 FULL_TEXT로 지정
Object 필수 View Template 타입별 필수/선택/미사용 항목이 다름
- 선택 항목 미 정의시, View Template에 출력되지 않음
title Object: TemplateText 선택 사용자 질문(발화)을 요약해서 표시
- 필수 엔티티 또는 선택 엔티티 등 필요한 정보를 노출
ex) title.plainText: "카카오"
- 정보 중요도: title > subtitle
- title은 가능한 한 styledText 사용 지양
- icon은 텍스트 가독성을 높이기 위한 것으로 특정 엔티티에 국한된 이미지를 사용하지 않음
ex) 프랑스 국기 아이콘 X, 알람/지도 아이콘 O
subtitle Object: TemplateText 선택 title을 보조하는 내용
- subtitle을 정의 시 반드시 title이 먼저 정의되어야 함
source Object: TemplateText 선택 콘텐츠 제공 출처
- 정보의 기준 날짜 또는 시간 등을 표시
ex) source.plainText: "7월 26일 오전 2:12 기준, Daum 검색"
button1
button2
Object: TemplateButton 선택 버튼 기능은 다음과 같음
- 버튼은 최대 두 개까지 노출
- 버튼 내 아이콘 사용은 지양
- 버튼 선택은 터치로만 가능(발화로 선택 불가)
* 웹뷰(url) 열기: Daum 검색 결과와 상세 페이지 모두 랜딩이 가능한 경우, 1)과 2) 기준에 따라 하나의 웹 뷰를 열 수 있음(ex. 버티컬 엔드 페이지, Daum 검색 결과 페이지)
1) Daum 검색 결과가 더 많은 정보를 주거나 동일한 경우: '다음 검색 결과'로 연결(ex. 유명인 Daum 검색 결과 제공 시, 관련 뉴스 또는 실시간 정보 제공 가능)
2) 엔드 페이지에서만 주는 가치가 있다고 판단될 경우: '상세 페이지'로 연결(ex. 어학 상세 페이지의 예문/발음 듣기, 뉴스 기사의 TTS 지원)
* 앱 스킴
* 디바이스 액션(ex. 전화 걸기)
multimedia Object: TemplateMedia 선택 사용자 질문의 정답을 이미지로 표시
ex) multimedia.mediaType: "IMAGE"
content Object: Content 필수 사용자 질문에 대한 정답(상세 내용) 표시
- 정보 중요도: multimedia = paragraph
ex) content.paragraph.plainText: "이 밤 그날에 ... (중략)"
quickReplies Object: TemplateButton 필수 quickReplies를 터치한 경우 해당 명령어를 발화한 것과 동일 동작
- 추천 명령어를 구어체로 작성(최소 두 개, 최대 열 개)
- Play control(재생/일시정지/다음곡) 관련 명령은 지양
ex) 코스피 지수 알려줘
meta Object: Meta 선택 상세 정보를 확인하는 URL 정보로 톡 템플릿에서 활용
utterance (입력) String 선택 사용자 발화
ttl String 필수 화면 유지 시간
- 기본값: 10,000(msec)
- 헤이카카오 앱의 경우 일괄: 300,000(msec)
- 결괏값에 따라 다르게 설정 가능
ex) ttl: 10000
※ 기존 View Template은 body.data.ttl로 정의했으나, 2019년 9월 이후 신규 생성하는 View Template은 body.ttl로 정의해야 함
style String 필수 최종 결과 화면(BASIC)인지 중간 결과 화면(INTERIM)인지 구분
- 기본값: BASIC
- 별도 지정하지 않으면 BASIC 값으로 자동 지정
ex) style: "BASIC"
※ 기존 View Template은 style을 정의하지 않았으나, 2019년 9월 이후 신규 생성하는 View Template에서는 반드시 정의해야 함
token String 필수 각 도메인에서 발급하는 토큰
안내
Object 별 상세 정의는 Data Type 문서를 참고하시기 바랍니다.

Sample Code

다음 예시는 노래 가사 답변입니다.

코드예제FULL_TEXT

{
  "type": "Template.Render",
  "body": {
    "type": "FULL_TEXT",
    "token": "L34WriJD5Rp/595469f49418c2172f3eba9b/MUSER.VQ-GDM_TEST.1575251225718",
    "data": {
      "source": {
        "styledText": "멜론",
        "plainText": "멜론"
      },
      "button2": {
        "plainText": "곡 정보",
        "action": {
          "url": "https://www.melon.com/song/detail.htm?songId=30314784"
        }
      },
      "multimedia": {
        "mediaType": "IMAGE",
        "mediaUrl": "http://search1.daumcdn.net/thumb/C800x800/?fname=http%3A%2F%2Fkkoimg.melon.co.kr%2Fcm%2Falbum%2Fimages%2F100%2F47%2F890%2F10047890_1000.jpg%3Ffe3170fcb1ac397fc072be5877d5f1b9"
      },
      "content": {
        "primaryText": {
          "styledText": "밤편지",
          "plainText": "밤편지"
        },
        "secondaryText": {
          "styledText": "아이유",
          "plainText": "아이유"
        }
      },
      "title": {
        "styledText": "음악 정보",
        "plainText": "음악 정보"
      },
      "ttl": 10000,
      "button1": {
        "plainText": "지금 재생",
        "action": {
          "url": "kakaoi://event?type=Template.ElementSelected&body=%7B%22token%22%3A%22L34WriJD5Rp%2F595469f49418c2172f3eba9b%2FMUSER.VQ-GDM_TEST%22%2C%22params%22%3A%5B%7B%22key%22%3A%22type%22%2C%22value%22%3A%22PLAY_SONG%22%7D%2C%7B%22key%22%3A%22songId%22%2C%22value%22%3A%2230314784%22%7D%2C%7B%22key%22%3A%22index%22%2C%22value%22%3A%220%22%7D%5D%7D"
        }
      },
      "quickReplies": [
        {
          "plainText": "작사가 누구야",
          "action": {
            "url": "kakaoi://instruction?type=Recognizer.RequestText&body=%7B%22token%22%3A%22L34WriJD5Rp%2F595469f49418c2172f3eba9b%2FMUSER.VQ-GDM_TEST%22%2C%22utterance%22%3A%22%EC%9D%B4+%EB%85%B8%EB%9E%98+%EC%9E%91%EC%82%AC%ED%95%9C+%EC%82%AC%EB%9E%8C+%EB%88%84%EA%B5%AC%EC%95%BC%22%7D"
          }
        },
        {
          "plainText": "작곡가 누구야",
          "action": {
            "url": "kakaoi://instruction?type=Recognizer.RequestText&body=%7B%22token%22%3A%22L34WriJD5Rp%2F595469f49418c2172f3eba9b%2FMUSER.VQ-GDM_TEST%22%2C%22utterance%22%3A%22%EC%9D%B4+%EB%85%B8%EB%9E%98+%EC%9E%91%EA%B3%A1%ED%95%9C+%EC%82%AC%EB%9E%8C+%EB%88%84%EA%B5%AC%EC%95%BC%22%7D"
          }
        },
        {
          "plainText": "유사곡 들려줘",
          "action": {
            "url": "kakaoi://instruction?type=Recognizer.RequestText&body=%7B%22token%22%3A%22L34WriJD5Rp%2F595469f49418c2172f3eba9b%2FMUSER.VQ-GDM_TEST%22%2C%22utterance%22%3A%22%EC%A7%80%EA%B8%88+%EB%93%A3%EB%8A%94+%EB%85%B8%EB%9E%98%EC%99%80+%EC%9C%A0%EC%82%AC%ED%95%9C+%EA%B3%A1+%ED%8B%80%EC%96%B4%EC%A4%98%22%7D"
          }
        },
        {
          "plainText": "좋아요 해줘",
          "action": {
            "url": "kakaoi://instruction?type=Recognizer.RequestText&body=%7B%22token%22%3A%22L34WriJD5Rp%2F595469f49418c2172f3eba9b%2FMUSER.VQ-GDM_TEST%22%2C%22utterance%22%3A%22%EC%A7%80%EA%B8%88+%EB%93%A3%EB%8A%94+%EB%85%B8%EB%9E%98+%EC%A2%8B%EC%95%84%EC%9A%94+%ED%95%B4%EC%A4%98%22%7D"
          }
        },
        {
          "plainText": "카톡 보내줘",
          "action": {
            "url": "kakaoi://instruction?type=Recognizer.RequestText&body=%7B%22token%22%3A%22L34WriJD5Rp%2F595469f49418c2172f3eba9b%2FMUSER.VQ-GDM_TEST%22%2C%22utterance%22%3A%22%EC%A7%80%EA%B8%88+%EB%93%A3%EB%8A%94+%EB%85%B8%EB%9E%98%EB%A1%9C+%EC%B9%B4%ED%86%A1+%EB%B3%B4%EB%82%B4%EC%A4%98%22%7D"
          }
        },
        {
          "plainText": "멜론 실시간차트 틀어줘",
          "action": {
            "url": "kakaoi://instruction?type=Recognizer.RequestText&body=%7B%22token%22%3A%22L34WriJD5Rp%2F595469f49418c2172f3eba9b%2FMUSER.VQ-GDM_TEST%22%2C%22utterance%22%3A%22%EB%A9%9C%EB%A1%A0+%EC%8B%A4%EC%8B%9C%EA%B0%84%EC%B0%A8%ED%8A%B8+%ED%8B%80%EC%96%B4%EC%A4%98%22%7D"
          }
        },
        {
          "plainText": "팝송 차트 틀어줘",
          "action": {
            "url": "kakaoi://instruction?type=Recognizer.RequestText&body=%7B%22token%22%3A%22L34WriJD5Rp%2F595469f49418c2172f3eba9b%2FMUSER.VQ-GDM_TEST%22%2C%22utterance%22%3A%22%ED%8C%9D%EC%86%A1+%EC%B0%A8%ED%8A%B8+%ED%8B%80%EC%96%B4%EC%A4%98%22%7D"
          }
        }
      ]
    }
  }
}

IMAGE

IMAGE는 사용자 질문에 대한 정답을 “큰 이미지 하나 또는 동영상"으로 표시할 수 있는 유형입니다. 현재 IMAGE가 적용된 도메인으로는 날씨와 로또 등이 있습니다.

속성
구성 분류 속성
IMAGE 단일형 Basic

주간 날씨에 대한 답변(TV용) 그림주간 날씨에 대한 답변(TV용)

오늘 날씨에 대한 답변(모바일용) 그림오늘 날씨에 대한 답변(모바일용)

Request

IMAGE Request Body
파라미터 타입 필수 여부 설명
type String 필수 IMAGE로 지정
Object 필수 View Template 타입별 필수/선택/미사용 항목이 다름
- 선택 항목 미 정의시, View Template에 출력되지 않음
title Object: TemplateText 선택 사용자 질문(발화)을 요약해서 표시
- 필수 엔티티 또는 선택 엔티티 등 필요한 정보를 노출
ex) title.plainText: "카카오"
- 정보 중요도: title > subtitle
- title은 가능한 한 styledText 사용 지양
- icon은 텍스트 가독성을 높이기 위한 것으로 특정 엔티티에 국한된 이미지를 사용하지 않음
ex) 프랑스 국기 아이콘 X, 알람/지도 아이콘 O
subtitle Object: TemplateText 선택 title을 보조하는 내용
- subtitle을 정의 시 반드시 title이 먼저 정의되어야 함
source Object: TemplateText 선택 콘텐츠 제공 출처
- 정보의 기준 날짜 또는 시간 등을 표시
ex) source.plainText: "7월 26일 오전 2:12 기준, Daum 검색"
button1
button2
Object: TemplateButton 선택 버튼 기능은 다음과 같음
- 버튼은 최대 두 개까지 노출
- 버튼 내 아이콘 사용은 지양
- 버튼 선택은 터치로만 가능(발화로 선택 불가)
* 웹뷰(url) 열기: Daum 검색 결과와 상세 페이지 모두 랜딩이 가능한 경우, 1)과 2) 기준에 따라 하나의 웹 뷰를 열 수 있음(ex. 버티컬 엔드 페이지, Daum 검색 결과 페이지)
1) Daum 검색 결과가 더 많은 정보를 주거나 동일한 경우: '다음 검색 결과'로 연결(ex. 유명인 Daum 검색 결과 제공 시, 관련 뉴스 또는 실시간 정보 제공 가능)
2) 엔드 페이지에서만 주는 가치가 있다고 판단될 경우: '상세 페이지'로 연결(ex. 어학 상세 페이지의 예문/발음 듣기, 뉴스 기사의 TTS 지원)
* 앱 스킴
* 디바이스 액션(ex. 전화 걸기)
multimedia Object: TemplateMedia - 사용자 질문의 정답을 이미지로 표시
ex) multimedia.mediaType: "IMAGE"
content Object: Content 선택 사용자 질문에 대한 정답(상세 내용) 표시
quickReplies Object: TemplateButton 필수 quickReplies를 터치한 경우 해당 명령어를 발화한 것과 동일 동작
- 추천 명령어를 구어체로 작성(최소 두 개, 최대 열 개)
- Play control(재생/일시정지/다음곡) 관련 명령은 지양
ex) 코스피 지수 알려줘
meta Object: Meta 선택 상세 정보를 확인하는 URL 정보로 톡 템플릿에서 활용
utterance (입력) String 선택 사용자 발화
ttl String 필수 화면 유지 시간
- 기본값: 10,000(msec)
- 헤이카카오 앱의 경우 일괄: 300,000(msec)
- 결괏값에 따라 다르게 설정 가능
ex) ttl: 10000
※ 기존 View Template은 body.data.ttl로 정의했으나, 2019년 9월 이후 신규 생성하는 View Template은 body.ttl로 정의해야 함
style String 필수 최종 결과 화면(BASIC)인지 중간 결과 화면(INTERIM)인지 구분
- 기본값: BASIC
- 별도 지정하지 않으면 BASIC 값으로 자동 지정
ex) style: "BASIC"
※ 기존 View Template은 style을 정의하지 않았으나, 2019년 9월 이후 신규 생성하는 View Template에서는 반드시 정의해야 함
token String 필수 각 도메인에서 발급하는 토큰
안내
Object 별 상세 정의는 Data Type 문서를 참고하시기 바랍니다.

Sample Code

다음 예시는 주간 날씨에 대한 답변 샘플코드입니다.

코드예제IMAGE

{
  "type": "Template.Render",
  "body": {
    "type": "IMAGE",
    "token": "kakao/5964a21d9418c2bd523473a8/e26fe620-fd1c-4288-b96e-f0cdab0feb82",
    "data": {
      "subtitle": {
        "styledText": "서울시 종로구 부암동",
        "plainText": "서울시 종로구 부암동"
      },
      "source": {
        "styledText": "12월 2일 AM 12:00 기준, Daum검색",
        "plainText": "12월 2일 AM 12:00 기준, Daum검색"
      },
      "background": {
        "color": "#222431"
      },
      "multimedia": {
        "mediaType": "IMAGE",
        "mediaUrl": "https://imp.kakao.com/html2img/view/weather/2019/12/2/GDM-TEST-08de27c359ec421b9ad3805c277b962c_45432890-14a5-11ea-8543-1328441678e5.png"
      },
      "meta": {
        "plainText": "주간 서울시 종로구 부암동 날씨",
        "mobileUrl": "https://m.search.daum.net/search?w=tot&nil_mtopsearch=btn&DA=YZR&q=%EC%A3%BC%EA%B0%84+%EC%84%9C%EC%9A%B8%EC%8B%9C+%EC%A2%85%EB%A1%9C%EA%B5%AC+%EB%B6%80%EC%95%94%EB%8F%99+%EB%82%A0%EC%94%A8",
        "webUrl": "https://search.daum.net/search?w=tot&q=%EC%A3%BC%EA%B0%84+%EC%84%9C%EC%9A%B8%EC%8B%9C+%EC%A2%85%EB%A1%9C%EA%B5%AC+%EB%B6%80%EC%95%94%EB%8F%99+%EB%82%A0%EC%94%A8"
      },
      "title": {
        "styledText": "주간 날씨",
        "plainText": "주간 날씨"
      },
      "ttl": 10000,
      "button1": {
        "plainText": "상세 보기",
        "action": {
          "url": "https://m.search.daum.net/search?w=tot&nil_mtopsearch=btn&DA=YZR&q=%EC%A3%BC%EA%B0%84+%EC%84%9C%EC%9A%B8%EC%8B%9C+%EC%A2%85%EB%A1%9C%EA%B5%AC+%EB%B6%80%EC%95%94%EB%8F%99+%EB%82%A0%EC%94%A8"
        }
      },
      "quickReplies": [
        {
          "plainText": "부암동 기온은",
          "action": {
            "url": "kakaoi://instruction?type=Recognizer.RequestText&body=%7B%22utterance%22%3A%22%EB%B6%80%EC%95%94%EB%8F%99+%EA%B8%B0%EC%98%A8%EC%9D%80%22%7D"
          }
        },
        {
          "plainText": "부암동 비 와",
          "action": {
            "url": "kakaoi://instruction?type=Recognizer.RequestText&body=%7B%22utterance%22%3A%22%EB%B6%80%EC%95%94%EB%8F%99+%EB%B9%84+%EC%99%80%22%7D"
          }
        }
      ]
    }
  }
}

목록형

순서 또는 후보군이 있는 음성 답변의 화면으로 사용됩니다.

LIST_HORIZONTAL

LIST_HORIZONTAL은 사용자 질문에 대한 정답에 순서(순위)가 있거나 후보군이 있을 경우 표시하는 유형입니다. 현재 LIST_HORIZONTAL이 적용된 도메인으로는 날짜, 라디오, 스포츠, 도움말 등이 있습니다.

속성
구성 분류 속성
LIST_HORIZONTAL 목록형 Basic, Interim

시청률에 대한 답변(TV용) 그림시청률에 대한 답변(TV용)

야구 순위에 대한 답변(모바일용) 그림야구 순위에 대한 답변(모바일용)

Request

LIST_HORIZONTAL Request Body
파라미터 타입 필수 여부 설명
type String 필수 LIST_HORIZONTAL로 지정
Object 필수 View Template 타입별 필수/선택/미사용 항목이 다름
- 선택 항목 미 정의시, View Template에 출력되지 않음
title Object: TemplateText 선택 사용자 질문(발화)을 요약해서 표시
- 필수 엔티티 또는 선택 엔티티 등 필요한 정보를 노출
ex) title.plainText: "카카오"
- 정보 중요도: title > subtitle
- title은 가능한 한 styledText 사용 지양
- icon은 텍스트 가독성을 높이기 위한 것으로 특정 엔티티에 국한된 이미지를 사용하지 않음
ex) 프랑스 국기 아이콘 X, 알람/지도 아이콘 O
subtitle Object: TemplateText 선택 title을 보조하는 내용
- subtitle을 정의 시 반드시 title이 먼저 정의되어야 함
source Object: TemplateText 선택 콘텐츠 제공 출처
- 정보의 기준 날짜 또는 시간 등을 표시
ex) source.plainText: "7월 26일 오전 2:12 기준, Daum 검색"
button1
button2
Object: TemplateButton 선택 버튼 기능은 다음과 같음
- 버튼은 최대 두 개까지 노출
- 버튼 내 아이콘 사용은 지양
- 버튼 선택은 터치로만 가능(발화로 선택 불가)
* 웹뷰(url) 열기: Daum 검색 결과와 상세 페이지 모두 랜딩이 가능한 경우, 1)과 2) 기준에 따라 하나의 웹 뷰를 열 수 있음(ex. 버티컬 엔드 페이지, Daum 검색 결과 페이지)
1) Daum 검색 결과가 더 많은 정보를 주거나 동일한 경우: '다음 검색 결과'로 연결(ex. 유명인 Daum 검색 결과 제공 시, 관련 뉴스 또는 실시간 정보 제공 가능)
2) 엔드 페이지에서만 주는 가치가 있다고 판단될 경우: '상세 페이지'로 연결(ex. 어학 상세 페이지의 예문/발음 듣기, 뉴스 기사의 TTS 지원)
* 앱 스킴
* 디바이스 액션(ex. 전화 걸기)
background Object: Background 선택 View Template 배경 지정
- 색상, 이미지 등으로 표시
itemLayout String 필수 item 내 primaryText와 secondaryText가 배치되는 레이아웃을 정의
- Horizontal 타입: 수평으로 배치
- Vertical 타입: 수직으로 배치
items Object: Item 필수 사용자에게 되묻는 항목들의 후보군 표시
항목 중 하나 선택 시, 연결되는 동작들을 정의할 수 있음
ex) head.plainText: [순서]
primaryText.plainText: [이름]
secondaryText.plainText: [연락처]
action.Url: *해당 이름/연락처로 전화걸기 동작 수행
quickReplies Object: TemplateButton 필수 quickReplies를 터치한 경우 해당 명령어를 발화한 것과 동일 동작
- 추천 명령어를 구어체로 작성(최소 두 개, 최대 열 개)
- Play control(재생/일시정지/다음곡) 관련 명령은 지양
ex) 코스피 지수 알려줘
meta Object: Meta 선택 상세 정보를 확인하는 URL 정보로 톡 템플릿에서 활용
utterance (입력) String 선택 사용자 발화
ttl String 필수 화면 유지 시간
- 기본값: 10,000(msec)
- 헤이카카오 앱의 경우 일괄: 300,000(msec)
- 결괏값에 따라 다르게 설정 가능
ex) ttl: 10000
※ 기존 View Template은 body.data.ttl로 정의했으나, 2019년 9월 이후 신규 생성하는 View Template은 body.ttl로 정의해야 함
style String 필수 최종 결과 화면(BASIC)인지 중간 결과 화면(INTERIM)인지 구분
- 기본값: BASIC
- 별도 지정하지 않으면 BASIC 값으로 자동 지정
ex) style: "BASIC"
※ 기존 View Template은 style을 정의하지 않았으나, 2019년 9월 이후 신규 생성하는 View Template에서는 반드시 정의해야 함
token String 필수 각 도메인에서 발급하는 토큰
안내
Object 별 상세 정의는 Data Type 문서를 참고하시기 바랍니다.

Sample Code

다음 예시는 실시간 검색어에 대한 답변입니다.

코드예제LIST_HORIZONTAL

{
  "type": "Template.Render",
  "body": {
    "type": "LIST_HORIZONTAL",
    "token": "kakao/5a0940e99418c2c288700549/%7B%22page%22%3A1%7D",
    "data": {
      "source": {
        "styledText": "오전 10:48 기준, Daum검색",
        "plainText": "오전 10:48 기준, Daum검색"
      },
      "items": [
        {
          "head": {
            "styledText": "1",
            "plainText": "1"
          },
          "primaryText": {
            "styledText": "lg 유플러스",
            "plainText": "lg 유플러스"
          },
          "action": {
            "url": "kakaoi://instruction?type=Recognizer.RequestText&body=%7B%22utterance%22%3A%22%EC%8B%A4%EC%8B%9C%EA%B0%84+%EA%B2%80%EC%83%89%EC%96%B4+1%EC%9C%84+%EC%95%8C%EB%A0%A4%EC%A4%98%22%2C%22token%22%3A%22kakao%2F5a0940e99418c2c288700549%2F%257B%2522page%2522%253A1%257D%22%7D"
          }
        },
        {
          "head": {
            "styledText": "2",
            "plainText": "2"
          },
          "primaryText": {
            "styledText": "백원우",
            "plainText": "백원우"
          },
          "action": {
            "url": "kakaoi://instruction?type=Recognizer.RequestText&body=%7B%22utterance%22%3A%22%EC%8B%A4%EC%8B%9C%EA%B0%84+%EA%B2%80%EC%83%89%EC%96%B4+2%EC%9C%84+%EC%95%8C%EB%A0%A4%EC%A4%98%22%2C%22token%22%3A%22kakao%2F5a0940e99418c2c288700549%2F%257B%2522page%2522%253A1%257D%22%7D"
          }
        },
        {
          "head": {
            "styledText": "3",
            "plainText": "3"
          },
          "primaryText": {
            "styledText": "올리브영",
            "plainText": "올리브영"
          },
          "action": {
            "url": "kakaoi://instruction?type=Recognizer.RequestText&body=%7B%22utterance%22%3A%22%EC%8B%A4%EC%8B%9C%EA%B0%84+%EA%B2%80%EC%83%89%EC%96%B4+3%EC%9C%84+%EC%95%8C%EB%A0%A4%EC%A4%98%22%2C%22token%22%3A%22kakao%2F5a0940e99418c2c288700549%2F%257B%2522page%2522%253A1%257D%22%7D"
          }
        },
        {
          "head": {
            "styledText": "4",
            "plainText": "4"
          },
          "primaryText": {
            "styledText": "5등급 차량 조회",
            "plainText": "5등급 차량 조회"
          },
          "action": {
            "url": "kakaoi://instruction?type=Recognizer.RequestText&body=%7B%22utterance%22%3A%22%EC%8B%A4%EC%8B%9C%EA%B0%84+%EA%B2%80%EC%83%89%EC%96%B4+4%EC%9C%84+%EC%95%8C%EB%A0%A4%EC%A4%98%22%2C%22token%22%3A%22kakao%2F5a0940e99418c2c288700549%2F%257B%2522page%2522%253A1%257D%22%7D"
          }
        },
        {
          "head": {
            "styledText": "5",
            "plainText": "5"
          },
          "primaryText": {
            "styledText": "장정윤 작가",
            "plainText": "장정윤 작가"
          },
          "action": {
            "url": "kakaoi://instruction?type=Recognizer.RequestText&body=%7B%22utterance%22%3A%22%EC%8B%A4%EC%8B%9C%EA%B0%84+%EA%B2%80%EC%83%89%EC%96%B4+5%EC%9C%84+%EC%95%8C%EB%A0%A4%EC%A4%98%22%2C%22token%22%3A%22kakao%2F5a0940e99418c2c288700549%2F%257B%2522page%2522%253A1%257D%22%7D"
          }
        },
        {
          "head": {
            "styledText": "6",
            "plainText": "6"
          },
          "primaryText": {
            "styledText": "성남 어린이집 성폭행",
            "plainText": "성남 어린이집 성폭행"
          },
          "action": {
            "url": "kakaoi://instruction?type=Recognizer.RequestText&body=%7B%22utterance%22%3A%22%EC%8B%A4%EC%8B%9C%EA%B0%84+%EA%B2%80%EC%83%89%EC%96%B4+6%EC%9C%84+%EC%95%8C%EB%A0%A4%EC%A4%98%22%2C%22token%22%3A%22kakao%2F5a0940e99418c2c288700549%2F%257B%2522page%2522%253A1%257D%22%7D"
          }
        },
        {
          "head": {
            "styledText": "7",
            "plainText": "7"
          },
          "primaryText": {
            "styledText": "김태우",
            "plainText": "김태우"
          },
          "action": {
            "url": "kakaoi://instruction?type=Recognizer.RequestText&body=%7B%22utterance%22%3A%22%EC%8B%A4%EC%8B%9C%EA%B0%84+%EA%B2%80%EC%83%89%EC%96%B4+7%EC%9C%84+%EC%95%8C%EB%A0%A4%EC%A4%98%22%2C%22token%22%3A%22kakao%2F5a0940e99418c2c288700549%2F%257B%2522page%2522%253A1%257D%22%7D"
          }
        },
        {
          "head": {
            "styledText": "8",
            "plainText": "8"
          },
          "primaryText": {
            "styledText": "베트남 축구",
            "plainText": "베트남 축구"
          },
          "action": {
            "url": "kakaoi://instruction?type=Recognizer.RequestText&body=%7B%22utterance%22%3A%22%EC%8B%A4%EC%8B%9C%EA%B0%84+%EA%B2%80%EC%83%89%EC%96%B4+8%EC%9C%84+%EC%95%8C%EB%A0%A4%EC%A4%98%22%2C%22token%22%3A%22kakao%2F5a0940e99418c2c288700549%2F%257B%2522page%2522%253A1%257D%22%7D"
          }
        },
        {
          "head": {
            "styledText": "9",
            "plainText": "9"
          },
          "primaryText": {
            "styledText": "쿠우쿠우",
            "plainText": "쿠우쿠우"
          },
          "action": {
            "url": "kakaoi://instruction?type=Recognizer.RequestText&body=%7B%22utterance%22%3A%22%EC%8B%A4%EC%8B%9C%EA%B0%84+%EA%B2%80%EC%83%89%EC%96%B4+9%EC%9C%84+%EC%95%8C%EB%A0%A4%EC%A4%98%22%2C%22token%22%3A%22kakao%2F5a0940e99418c2c288700549%2F%257B%2522page%2522%253A1%257D%22%7D"
          }
        },
        {
          "head": {
            "styledText": "10",
            "plainText": "10"
          },
          "primaryText": {
            "styledText": "수능 등급컷",
            "plainText": "수능 등급컷"
          },
          "action": {
            "url": "kakaoi://instruction?type=Recognizer.RequestText&body=%7B%22utterance%22%3A%22%EC%8B%A4%EC%8B%9C%EA%B0%84+%EA%B2%80%EC%83%89%EC%96%B4+10%EC%9C%84+%EC%95%8C%EB%A0%A4%EC%A4%98%22%2C%22token%22%3A%22kakao%2F5a0940e99418c2c288700549%2F%257B%2522page%2522%253A1%257D%22%7D"
          }
        }
      ],
      "itemLayout": "HORIZONTAL",
      "title": {
        "styledText": "실시간 이슈 검색어",
        "plainText": "실시간 이슈 검색어"
      },
      "ttl": 20000,
      "quickReplies": [
        {
          "plainText": "lg 유플러스 뉴스",
          "action": {
            "url": "kakaoi://instruction?type=Recognizer.RequestText&body=%7B%22utterance%22%3A%22lg+%EC%9C%A0%ED%94%8C%EB%9F%AC%EC%8A%A4+%EB%89%B4%EC%8A%A4+%ED%8B%80%EC%96%B4%EC%A4%98%22%2C%22token%22%3A%22kakao%2F5a0940e99418c2c288700549%2F%257B%2522page%2522%253A1%257D%22%7D"
          }
        },
        {
          "plainText": "백원우 뉴스",
          "action": {
            "url": "kakaoi://instruction?type=Recognizer.RequestText&body=%7B%22utterance%22%3A%22%EB%B0%B1%EC%9B%90%EC%9A%B0+%EB%89%B4%EC%8A%A4+%ED%8B%80%EC%96%B4%EC%A4%98%22%2C%22token%22%3A%22kakao%2F5a0940e99418c2c288700549%2F%257B%2522page%2522%253A1%257D%22%7D"
          }
        },
        {
          "plainText": "올리브영 뉴스",
          "action": {
            "url": "kakaoi://instruction?type=Recognizer.RequestText&body=%7B%22utterance%22%3A%22%EC%98%AC%EB%A6%AC%EB%B8%8C%EC%98%81+%EB%89%B4%EC%8A%A4+%ED%8B%80%EC%96%B4%EC%A4%98%22%2C%22token%22%3A%22kakao%2F5a0940e99418c2c288700549%2F%257B%2522page%2522%253A1%257D%22%7D"
          }
        },
        {
          "plainText": "5등급 차량 조회 뉴스",
          "action": {
            "url": "kakaoi://instruction?type=Recognizer.RequestText&body=%7B%22utterance%22%3A%225%EB%93%B1%EA%B8%89+%EC%B0%A8%EB%9F%89+%EC%A1%B0%ED%9A%8C+%EB%89%B4%EC%8A%A4+%ED%8B%80%EC%96%B4%EC%A4%98%22%2C%22token%22%3A%22kakao%2F5a0940e99418c2c288700549%2F%257B%2522page%2522%253A1%257D%22%7D"
          }
        },
        {
          "plainText": "장정윤 작가 뉴스",
          "action": {
            "url": "kakaoi://instruction?type=Recognizer.RequestText&body=%7B%22utterance%22%3A%22%EC%9E%A5%EC%A0%95%EC%9C%A4+%EC%9E%91%EA%B0%80+%EB%89%B4%EC%8A%A4+%ED%8B%80%EC%96%B4%EC%A4%98%22%2C%22token%22%3A%22kakao%2F5a0940e99418c2c288700549%2F%257B%2522page%2522%253A1%257D%22%7D"
          }
        },
        {
          "plainText": "성남 어린이집 성폭행 뉴스",
          "action": {
            "url": "kakaoi://instruction?type=Recognizer.RequestText&body=%7B%22utterance%22%3A%22%EC%84%B1%EB%82%A8+%EC%96%B4%EB%A6%B0%EC%9D%B4%EC%A7%91+%EC%84%B1%ED%8F%AD%ED%96%89+%EB%89%B4%EC%8A%A4+%ED%8B%80%EC%96%B4%EC%A4%98%22%2C%22token%22%3A%22kakao%2F5a0940e99418c2c288700549%2F%257B%2522page%2522%253A1%257D%22%7D"
          }
        },
        {
          "plainText": "김태우 뉴스",
          "action": {
            "url": "kakaoi://instruction?type=Recognizer.RequestText&body=%7B%22utterance%22%3A%22%EA%B9%80%ED%83%9C%EC%9A%B0+%EB%89%B4%EC%8A%A4+%ED%8B%80%EC%96%B4%EC%A4%98%22%2C%22token%22%3A%22kakao%2F5a0940e99418c2c288700549%2F%257B%2522page%2522%253A1%257D%22%7D"
          }
        },
        {
          "plainText": "베트남 축구 뉴스",
          "action": {
            "url": "kakaoi://instruction?type=Recognizer.RequestText&body=%7B%22utterance%22%3A%22%EB%B2%A0%ED%8A%B8%EB%82%A8+%EC%B6%95%EA%B5%AC+%EB%89%B4%EC%8A%A4+%ED%8B%80%EC%96%B4%EC%A4%98%22%2C%22token%22%3A%22kakao%2F5a0940e99418c2c288700549%2F%257B%2522page%2522%253A1%257D%22%7D"
          }
        },
        {
          "plainText": "쿠우쿠우 뉴스",
          "action": {
            "url": "kakaoi://instruction?type=Recognizer.RequestText&body=%7B%22utterance%22%3A%22%EC%BF%A0%EC%9A%B0%EC%BF%A0%EC%9A%B0+%EB%89%B4%EC%8A%A4+%ED%8B%80%EC%96%B4%EC%A4%98%22%2C%22token%22%3A%22kakao%2F5a0940e99418c2c288700549%2F%257B%2522page%2522%253A1%257D%22%7D"
          }
        },
        {
          "plainText": "수능 등급컷 뉴스",
          "action": {
            "url": "kakaoi://instruction?type=Recognizer.RequestText&body=%7B%22utterance%22%3A%22%EC%88%98%EB%8A%A5+%EB%93%B1%EA%B8%89%EC%BB%B7+%EB%89%B4%EC%8A%A4+%ED%8B%80%EC%96%B4%EC%A4%98%22%2C%22token%22%3A%22kakao%2F5a0940e99418c2c288700549%2F%257B%2522page%2522%253A1%257D%22%7D"
          }
        }
      ]
    }
  }
}

LIST_VERTICAL

LIST_VERTICAL은 사용자 질문에 대한 정답에 순서(순위)가 있거나 후보군이 있을 경우 표시하는 유형입니다. 현재 LIST_VERTICAL이 적용된 도메인으로는 교통정보, 스마트홈, 일정, 장소 검색, 주식 등이 있습니다.

속성
구성 분류 속성
LIST_VERTICAL 목록형 Basic, Interim

오늘 TV 편성표에 대한 답변(TV용) 그림오늘 TV 편성표에 대한 답변(TV용)

오늘 TV 편성표에 대한 답변(모바일용) 그림오늘 TV 편성표에 대한 답변(모바일용)

Request

LIST_VERTICAL Request Body
파라미터 타입 필수 여부 설명
type String 필수 LIST_VERTICAL로 지정
Object 필수 View Template 타입별 필수/선택/미사용 항목이 다름
- 선택 항목 미 정의시, View Template에 출력되지 않음
title Object: TemplateText 선택 사용자 질문(발화)을 요약해서 표시
- 필수 엔티티 또는 선택 엔티티 등 필요한 정보를 노출
ex) title.plainText: "카카오"
- 정보 중요도: title > subtitle
- title은 가능한 한 styledText 사용 지양
- icon은 텍스트 가독성을 높이기 위한 것으로 특정 엔티티에 국한된 이미지를 사용하지 않음
ex) 프랑스 국기 아이콘 X, 알람/지도 아이콘 O
subtitle Object: TemplateText 선택 title을 보조하는 내용
- subtitle을 정의 시 반드시 title이 먼저 정의되어야 함
source Object: TemplateText 선택 콘텐츠 제공 출처
- 정보의 기준 날짜 또는 시간 등을 표시
ex) source.plainText: "7월 26일 오전 2:12 기준, Daum 검색"
button1
button2
Object: TemplateButton 선택 버튼 기능은 다음과 같음
- 버튼은 최대 두 개까지 노출
- 버튼 내 아이콘 사용은 지양
- 버튼 선택은 터치로만 가능(발화로 선택 불가)
* 웹뷰(url) 열기: Daum 검색 결과와 상세 페이지 모두 랜딩이 가능한 경우, 1)과 2) 기준에 따라 하나의 웹 뷰를 열 수 있음(ex. 버티컬 엔드 페이지, Daum 검색 결과 페이지)
1) Daum 검색 결과가 더 많은 정보를 주거나 동일한 경우: '다음 검색 결과'로 연결(ex. 유명인 Daum 검색 결과 제공 시, 관련 뉴스 또는 실시간 정보 제공 가능)
2) 엔드 페이지에서만 주는 가치가 있다고 판단될 경우: '상세 페이지'로 연결(ex. 어학 상세 페이지의 예문/발음 듣기, 뉴스 기사의 TTS 지원)
* 앱 스킴
* 디바이스 액션(ex. 전화 걸기)
background Object: Background 선택 View Template 배경 지정
- 색상, 이미지 등으로 표시
itemLayout String 필수 item 내 primaryText와 secondaryText가 배치되는 레이아웃을 정의
- Horizontal 타입: 수평으로 배치
- Vertical 타입: 수직으로 배치
items Object: Item 필수 사용자에게 되묻는 항목들의 후보군 표시
항목 중 하나 선택 시, 연결되는 동작들을 정의할 수 있음
ex) head.plainText:[순서]
primaryText.plainText: [이름]
secondaryText.plainText:[연락처]
action.Url: *해당 이름/연락처로 전화걸기 동작 수행
quickReplies Object: TemplateButton 필수 quickReplies를 터치한 경우 해당 명령어를 발화한 것과 동일 동작
- 추천 명령어를 구어체로 작성(최소 두 개, 최대 열 개)
- Play control(재생/일시정지/다음곡) 관련 명령은 지양
ex) 코스피 지수 알려줘
meta Object: Meta 선택 상세 정보를 확인하는 URL 정보로 톡 템플릿에서 활용
utterance (입력) String 선택 사용자 발화
ttl String 필수 화면 유지 시간
- 기본값: 10,000(msec)
- 헤이카카오 앱의 경우 일괄: 300,000(msec)
- 결괏값에 따라 다르게 설정 가능
ex) ttl: 10000
※ 기존 View Template은 body.data.ttl로 정의했으나, 2019년 9월 이후 신규 생성하는 View Template은 body.ttl로 정의해야 함
style String 필수 최종 결과 화면(BASIC)인지 중간 결과 화면(INTERIM)인지 구분
- 기본값: BASIC
- 별도 지정하지 않으면 BASIC 값으로 자동 지정
ex) style: "BASIC"
※ 기존 View Template은 style을 정의하지 않았으나, 2019년 9월 이후 신규 생성하는 View Template에서는 반드시 정의해야 함
token String 필수 각 도메인에서 발급하는 토큰
안내
Object 별 상세 정의는 Data Type 문서를 참고하시기 바랍니다.

Sample Code

다음 예시는 실시간 검색어에 대한 답변입니다.

코드예제LIST_VERTICAL

{
  "type": "Template.Render",
  "body": {
    "type": "LIST_VERTICAL",
    "token": "kakao/5a0940e99418c2c288700549/%7B%22page%22%3A1%7D",
    "data": {
      "source": {
        "styledText": "오전 10:48 기준, Daum검색",
        "plainText": "오전 10:48 기준, Daum검색"
      },
      "items": [
        {
          "head": {
            "styledText": "1",
            "plainText": "1"
          },
          "primaryText": {
            "styledText": "lg 유플러스",
            "plainText": "lg 유플러스"
          },
          "action": {
            "url": "kakaoi://instruction?type=Recognizer.RequestText&body=%7B%22utterance%22%3A%22%EC%8B%A4%EC%8B%9C%EA%B0%84+%EA%B2%80%EC%83%89%EC%96%B4+1%EC%9C%84+%EC%95%8C%EB%A0%A4%EC%A4%98%22%2C%22token%22%3A%22kakao%2F5a0940e99418c2c288700549%2F%257B%2522page%2522%253A1%257D%22%7D"
          }
        },
        {
          "head": {
            "styledText": "2",
            "plainText": "2"
          },
          "primaryText": {
            "styledText": "백원우",
            "plainText": "백원우"
          },
          "action": {
            "url": "kakaoi://instruction?type=Recognizer.RequestText&body=%7B%22utterance%22%3A%22%EC%8B%A4%EC%8B%9C%EA%B0%84+%EA%B2%80%EC%83%89%EC%96%B4+2%EC%9C%84+%EC%95%8C%EB%A0%A4%EC%A4%98%22%2C%22token%22%3A%22kakao%2F5a0940e99418c2c288700549%2F%257B%2522page%2522%253A1%257D%22%7D"
          }
        },
        {
          "head": {
            "styledText": "3",
            "plainText": "3"
          },
          "primaryText": {
            "styledText": "올리브영",
            "plainText": "올리브영"
          },
          "action": {
            "url": "kakaoi://instruction?type=Recognizer.RequestText&body=%7B%22utterance%22%3A%22%EC%8B%A4%EC%8B%9C%EA%B0%84+%EA%B2%80%EC%83%89%EC%96%B4+3%EC%9C%84+%EC%95%8C%EB%A0%A4%EC%A4%98%22%2C%22token%22%3A%22kakao%2F5a0940e99418c2c288700549%2F%257B%2522page%2522%253A1%257D%22%7D"
          }
        },
        {
          "head": {
            "styledText": "4",
            "plainText": "4"
          },
          "primaryText": {
            "styledText": "5등급 차량 조회",
            "plainText": "5등급 차량 조회"
          },
          "action": {
            "url": "kakaoi://instruction?type=Recognizer.RequestText&body=%7B%22utterance%22%3A%22%EC%8B%A4%EC%8B%9C%EA%B0%84+%EA%B2%80%EC%83%89%EC%96%B4+4%EC%9C%84+%EC%95%8C%EB%A0%A4%EC%A4%98%22%2C%22token%22%3A%22kakao%2F5a0940e99418c2c288700549%2F%257B%2522page%2522%253A1%257D%22%7D"
          }
        },
        {
          "head": {
            "styledText": "5",
            "plainText": "5"
          },
          "primaryText": {
            "styledText": "장정윤 작가",
            "plainText": "장정윤 작가"
          },
          "action": {
            "url": "kakaoi://instruction?type=Recognizer.RequestText&body=%7B%22utterance%22%3A%22%EC%8B%A4%EC%8B%9C%EA%B0%84+%EA%B2%80%EC%83%89%EC%96%B4+5%EC%9C%84+%EC%95%8C%EB%A0%A4%EC%A4%98%22%2C%22token%22%3A%22kakao%2F5a0940e99418c2c288700549%2F%257B%2522page%2522%253A1%257D%22%7D"
          }
        },
        {
          "head": {
            "styledText": "6",
            "plainText": "6"
          },
          "primaryText": {
            "styledText": "성남 어린이집 성폭행",
            "plainText": "성남 어린이집 성폭행"
          },
          "action": {
            "url": "kakaoi://instruction?type=Recognizer.RequestText&body=%7B%22utterance%22%3A%22%EC%8B%A4%EC%8B%9C%EA%B0%84+%EA%B2%80%EC%83%89%EC%96%B4+6%EC%9C%84+%EC%95%8C%EB%A0%A4%EC%A4%98%22%2C%22token%22%3A%22kakao%2F5a0940e99418c2c288700549%2F%257B%2522page%2522%253A1%257D%22%7D"
          }
        },
        {
          "head": {
            "styledText": "7",
            "plainText": "7"
          },
          "primaryText": {
            "styledText": "김태우",
            "plainText": "김태우"
          },
          "action": {
            "url": "kakaoi://instruction?type=Recognizer.RequestText&body=%7B%22utterance%22%3A%22%EC%8B%A4%EC%8B%9C%EA%B0%84+%EA%B2%80%EC%83%89%EC%96%B4+7%EC%9C%84+%EC%95%8C%EB%A0%A4%EC%A4%98%22%2C%22token%22%3A%22kakao%2F5a0940e99418c2c288700549%2F%257B%2522page%2522%253A1%257D%22%7D"
          }
        },
        {
          "head": {
            "styledText": "8",
            "plainText": "8"
          },
          "primaryText": {
            "styledText": "베트남 축구",
            "plainText": "베트남 축구"
          },
          "action": {
            "url": "kakaoi://instruction?type=Recognizer.RequestText&body=%7B%22utterance%22%3A%22%EC%8B%A4%EC%8B%9C%EA%B0%84+%EA%B2%80%EC%83%89%EC%96%B4+8%EC%9C%84+%EC%95%8C%EB%A0%A4%EC%A4%98%22%2C%22token%22%3A%22kakao%2F5a0940e99418c2c288700549%2F%257B%2522page%2522%253A1%257D%22%7D"
          }
        },
        {
          "head": {
            "styledText": "9",
            "plainText": "9"
          },
          "primaryText": {
            "styledText": "쿠우쿠우",
            "plainText": "쿠우쿠우"
          },
          "action": {
            "url": "kakaoi://instruction?type=Recognizer.RequestText&body=%7B%22utterance%22%3A%22%EC%8B%A4%EC%8B%9C%EA%B0%84+%EA%B2%80%EC%83%89%EC%96%B4+9%EC%9C%84+%EC%95%8C%EB%A0%A4%EC%A4%98%22%2C%22token%22%3A%22kakao%2F5a0940e99418c2c288700549%2F%257B%2522page%2522%253A1%257D%22%7D"
          }
        },
        {
          "head": {
            "styledText": "10",
            "plainText": "10"
          },
          "primaryText": {
            "styledText": "수능 등급컷",
            "plainText": "수능 등급컷"
          },
          "action": {
            "url": "kakaoi://instruction?type=Recognizer.RequestText&body=%7B%22utterance%22%3A%22%EC%8B%A4%EC%8B%9C%EA%B0%84+%EA%B2%80%EC%83%89%EC%96%B4+10%EC%9C%84+%EC%95%8C%EB%A0%A4%EC%A4%98%22%2C%22token%22%3A%22kakao%2F5a0940e99418c2c288700549%2F%257B%2522page%2522%253A1%257D%22%7D"
          }
        }
      ],
      "itemLayout": "HORIZONTAL",
      "title": {
        "styledText": "실시간 이슈 검색어",
        "plainText": "실시간 이슈 검색어"
      },
      "ttl": 20000,
      "quickReplies": [
        {
          "plainText": "lg 유플러스 뉴스",
          "action": {
            "url": "kakaoi://instruction?type=Recognizer.RequestText&body=%7B%22utterance%22%3A%22lg+%EC%9C%A0%ED%94%8C%EB%9F%AC%EC%8A%A4+%EB%89%B4%EC%8A%A4+%ED%8B%80%EC%96%B4%EC%A4%98%22%2C%22token%22%3A%22kakao%2F5a0940e99418c2c288700549%2F%257B%2522page%2522%253A1%257D%22%7D"
          }
        },
        {
          "plainText": "백원우 뉴스",
          "action": {
            "url": "kakaoi://instruction?type=Recognizer.RequestText&body=%7B%22utterance%22%3A%22%EB%B0%B1%EC%9B%90%EC%9A%B0+%EB%89%B4%EC%8A%A4+%ED%8B%80%EC%96%B4%EC%A4%98%22%2C%22token%22%3A%22kakao%2F5a0940e99418c2c288700549%2F%257B%2522page%2522%253A1%257D%22%7D"
          }
        },
        {
          "plainText": "올리브영 뉴스",
          "action": {
            "url": "kakaoi://instruction?type=Recognizer.RequestText&body=%7B%22utterance%22%3A%22%EC%98%AC%EB%A6%AC%EB%B8%8C%EC%98%81+%EB%89%B4%EC%8A%A4+%ED%8B%80%EC%96%B4%EC%A4%98%22%2C%22token%22%3A%22kakao%2F5a0940e99418c2c288700549%2F%257B%2522page%2522%253A1%257D%22%7D"
          }
        },
        {
          "plainText": "5등급 차량 조회 뉴스",
          "action": {
            "url": "kakaoi://instruction?type=Recognizer.RequestText&body=%7B%22utterance%22%3A%225%EB%93%B1%EA%B8%89+%EC%B0%A8%EB%9F%89+%EC%A1%B0%ED%9A%8C+%EB%89%B4%EC%8A%A4+%ED%8B%80%EC%96%B4%EC%A4%98%22%2C%22token%22%3A%22kakao%2F5a0940e99418c2c288700549%2F%257B%2522page%2522%253A1%257D%22%7D"
          }
        },
        {
          "plainText": "장정윤 작가 뉴스",
          "action": {
            "url": "kakaoi://instruction?type=Recognizer.RequestText&body=%7B%22utterance%22%3A%22%EC%9E%A5%EC%A0%95%EC%9C%A4+%EC%9E%91%EA%B0%80+%EB%89%B4%EC%8A%A4+%ED%8B%80%EC%96%B4%EC%A4%98%22%2C%22token%22%3A%22kakao%2F5a0940e99418c2c288700549%2F%257B%2522page%2522%253A1%257D%22%7D"
          }
        },
        {
          "plainText": "성남 어린이집 성폭행 뉴스",
          "action": {
            "url": "kakaoi://instruction?type=Recognizer.RequestText&body=%7B%22utterance%22%3A%22%EC%84%B1%EB%82%A8+%EC%96%B4%EB%A6%B0%EC%9D%B4%EC%A7%91+%EC%84%B1%ED%8F%AD%ED%96%89+%EB%89%B4%EC%8A%A4+%ED%8B%80%EC%96%B4%EC%A4%98%22%2C%22token%22%3A%22kakao%2F5a0940e99418c2c288700549%2F%257B%2522page%2522%253A1%257D%22%7D"
          }
        },
        {
          "plainText": "김태우 뉴스",
          "action": {
            "url": "kakaoi://instruction?type=Recognizer.RequestText&body=%7B%22utterance%22%3A%22%EA%B9%80%ED%83%9C%EC%9A%B0+%EB%89%B4%EC%8A%A4+%ED%8B%80%EC%96%B4%EC%A4%98%22%2C%22token%22%3A%22kakao%2F5a0940e99418c2c288700549%2F%257B%2522page%2522%253A1%257D%22%7D"
          }
        },
        {
          "plainText": "베트남 축구 뉴스",
          "action": {
            "url": "kakaoi://instruction?type=Recognizer.RequestText&body=%7B%22utterance%22%3A%22%EB%B2%A0%ED%8A%B8%EB%82%A8+%EC%B6%95%EA%B5%AC+%EB%89%B4%EC%8A%A4+%ED%8B%80%EC%96%B4%EC%A4%98%22%2C%22token%22%3A%22kakao%2F5a0940e99418c2c288700549%2F%257B%2522page%2522%253A1%257D%22%7D"
          }
        },
        {
          "plainText": "쿠우쿠우 뉴스",
          "action": {
            "url": "kakaoi://instruction?type=Recognizer.RequestText&body=%7B%22utterance%22%3A%22%EC%BF%A0%EC%9A%B0%EC%BF%A0%EC%9A%B0+%EB%89%B4%EC%8A%A4+%ED%8B%80%EC%96%B4%EC%A4%98%22%2C%22token%22%3A%22kakao%2F5a0940e99418c2c288700549%2F%257B%2522page%2522%253A1%257D%22%7D"
          }
        },
        {
          "plainText": "수능 등급컷 뉴스",
          "action": {
            "url": "kakaoi://instruction?type=Recognizer.RequestText&body=%7B%22utterance%22%3A%22%EC%88%98%EB%8A%A5+%EB%93%B1%EA%B8%89%EC%BB%B7+%EB%89%B4%EC%8A%A4+%ED%8B%80%EC%96%B4%EC%A4%98%22%2C%22token%22%3A%22kakao%2F5a0940e99418c2c288700549%2F%257B%2522page%2522%253A1%257D%22%7D"
          }
        }
      ]
    }
  }
}

CAROUSEL은 사용자 질문의 정답을 최대 열 개까지 “여러 개의 카드 뷰 형태"로 표시하는 유형으로, 단말별로 카드 뷰의 개수를 다르게 노출할 수 있습니다. 현재 CAROUSEL이 적용된 도메인으로는 영화 순위 카드 등이 있습니다.

속성
구성 분류 속성
CAROUSEL 목록형 Basic

박스 오피스 순위에 대한 답변(TV용) 그림박스 오피스 순위에 대한 답변(TV용)

박스 오피스 순위에 대한 답변(모바일용) 그림박스 오피스 순위에 대한 답변(모바일용)

Request

CAROUSEL Request Body
파라미터 타입 필수 여부 설명
type String 필수 CAROUSEL로 지정
Object 필수 View Template 타입별 필수/선택/미사용 항목이 다름
- 선택 항목 미 정의시, View Template에 출력되지 않음
title Object: TemplateText 선택 사용자 질문(발화)을 요약해서 표시
- 필수 엔티티 또는 선택 엔티티 등 필요한 정보를 노출
ex) title.plainText: "카카오"
- 정보 중요도: title > subtitle
- title은 가능한 한 styledText 사용 지양
- icon은 텍스트 가독성을 높이기 위한 것으로 특정 엔티티에 국한된 이미지를 사용하지 않음
ex) 프랑스 국기 아이콘 X, 알람/지도 아이콘 O
subtitle Object: TemplateText 선택 title을 보조하는 내용
- subtitle을 정의 시 반드시 title이 먼저 정의되어야 함
source Object: TemplateText 선택 콘텐츠 제공 출처
- 정보의 기준 날짜 또는 시간 등을 표시
ex) source.plainText: "7월 26일 오전 2:12 기준, Daum 검색"
button1
button2
Object: TemplateButton 선택 버튼 기능은 다음과 같음
- 버튼은 최대 두 개까지 노출
- 버튼 내 아이콘 사용은 지양
- 버튼 선택은 터치로만 가능(발화로 선택 불가)
* 웹뷰(url) 열기: Daum 검색 결과와 상세 페이지 모두 랜딩이 가능한 경우, 1)과 2) 기준에 따라 하나의 웹 뷰를 열 수 있음(ex. 버티컬 엔드 페이지, Daum 검색 결과 페이지)
1) Daum 검색 결과가 더 많은 정보를 주거나 동일한 경우: '다음 검색 결과'로 연결(ex. 유명인 Daum 검색 결과 제공 시, 관련 뉴스 또는 실시간 정보 제공 가능)
2) 엔드 페이지에서만 주는 가치가 있다고 판단될 경우: '상세 페이지'로 연결(ex. 어학 상세 페이지의 예문/발음 듣기, 뉴스 기사의 TTS 지원)
* 앱 스킴
* 디바이스 액션(ex. 전화 걸기)
background Object: Background 선택 View Template 배경 지정
- 색상, 이미지 등으로 표시
items Object: Item 필수 사용자 질문의 정답 또는 그 후보군
ex) head.plainText:[순서]
primaryText.plainText: [영화 제목]
secondaryText.plainText: [개봉 일자]
quickReplies Object: TemplateButton 필수 quickReplies를 터치한 경우 해당 명령어를 발화한 것과 동일 동작
- 추천 명령어를 구어체로 작성(최소 두 개, 최대 열 개)
- Play control(재생/일시정지/다음곡) 관련 명령은 지양
ex) 코스피 지수 알려줘
meta Object: Meta 선택 상세 정보를 확인하는 URL 정보로 톡 템플릿에서 활용
utterance(입력) String 선택 사용자 발화
ttl String 필수 화면 유지 시간
- 기본값: 10,000(msec)
- 헤이카카오 앱의 경우 일괄: 300,000(msec)
- 결괏값에 따라 다르게 설정 가능
ex) ttl: 10000
※ 기존 View Template은 body.data.ttl로 정의했으나, 2019년 9월 이후 신규 생성하는 View Template은 body.ttl로 정의해야 함
style String 필수 최종 결과 화면(BASIC)인지 중간 결과 화면(INTERIM)인지 구분
- 기본값: BASIC
- 별도 지정하지 않으면 BASIC 값으로 자동 지정
ex) style: "BASIC"
※ 기존 View Template은 style을 정의하지 않았으나, 2019년 9월 이후 신규 생성하는 View Template에서는 반드시 정의해야 함
token String 필수 각 도메인에서 발급하는 토큰
안내
Object 별 상세 정의는 Data Type 문서를 참고하시기 바랍니다.

Sample Code

다음 예시는 이번 주 영화 순위에 대한 답변입니다.

코드예제CAROUSEL

{
  "type": "Template.Render",
  "body": {
    "type": "CAROUSEL",
    "data": {
      "subtitle": {
        "thumbnail": {}
      },
      "source": {
        "plainText": "12월 1일 기준, Daum검색",
        "styledText": "12월 1일 기준, Daum검색",
        "thumbnail": {}
      },
      "button2": {
        "thumbnail": {},
        "action": {}
      },
      "background": {
        "thumbnail": {}
      },
      "items": [
        {
          "secondaryText": {
            "plainText": "11월 21일 개봉",
            "styledText": "11월 21일 개봉",
            "thumbnail": {}
          },
          "head": {
            "plainText": "1위",
            "styledText": "1위",
            "thumbnail": {}
          },
          "tertiaryText": {
            "thumbnail": {}
          },
          "tail": {
            "thumbnail": {}
          },
          "thumbnail": {},
          "primaryText": {
            "plainText": "겨울왕국 2",
            "styledText": "겨울왕국 2",
            "thumbnail": {}
          },
          "imageUrl": "http://search1.daumcdn.net/thumb/C600x800/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fmovie%2F5afd212b68e34e61a964d969dd898e2f1574298873981",
          "action": {
            "url": "kakaoi://instruction?body=%7B%22utterance%22%3A%22%EC%98%81%ED%99%94+%EA%B2%A8%EC%9A%B8%EC%99%95%EA%B5%AD+2+%EC%95%8C%EB%A0%A4%EC%A4%98%22%2C%22token%22%3A%22kakao%2F5a0908019418c2c288700497%2Fd41d8cd98f00b204e9800998ecf8427e%22%7D&type=Recognizer.RequestText"
          }
        },
        {
          "secondaryText": {
            "plainText": "11월 27일 개봉",
            "styledText": "11월 27일 개봉",
            "thumbnail": {}
          },
          "head": {
            "plainText": "2위",
            "styledText": "2위",
            "thumbnail": {}
          },
          "tertiaryText": {
            "thumbnail": {}
          },
          "tail": {
            "thumbnail": {}
          },
          "thumbnail": {},
          "primaryText": {
            "plainText": "나를 찾아줘",
            "styledText": "나를 찾아줘",
            "thumbnail": {}
          },
          "imageUrl": "http://search1.daumcdn.net/thumb/C600x800/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fmovie%2Fd578c5d478bf43b09bfb7e9f8cd72bf01573095574793",
          "action": {
            "url": "kakaoi://instruction?body=%7B%22utterance%22%3A%22%EC%98%81%ED%99%94+%EB%82%98%EB%A5%BC+%EC%B0%BE%EC%95%84%EC%A4%98+%EC%95%8C%EB%A0%A4%EC%A4%98%22%2C%22token%22%3A%22kakao%2F5a0908019418c2c288700497%2Fd41d8cd98f00b204e9800998ecf8427e%22%7D&type=Recognizer.RequestText"
          }
        },
        {
          "secondaryText": {
            "plainText": "11월 13일 개봉",
            "styledText": "11월 13일 개봉",
            "thumbnail": {}
          },
          "head": {
            "plainText": "3위",
            "styledText": "3위",
            "thumbnail": {}
          },
          "tertiaryText": {
            "thumbnail": {}
          },
          "tail": {
            "thumbnail": {}
          },
          "thumbnail": {},
          "primaryText": {
            "plainText": "블랙머니",
            "styledText": "블랙머니",
            "thumbnail": {}
          },
          "imageUrl": "http://search1.daumcdn.net/thumb/C600x800/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fmovie%2Ffbe0d4ccc4804448a8aacb9e98ccccfe1573614596648",
          "action": {
            "url": "kakaoi://instruction?body=%7B%22utterance%22%3A%22%EC%98%81%ED%99%94+%EB%B8%94%EB%9E%99%EB%A8%B8%EB%8B%88+%EC%95%8C%EB%A0%A4%EC%A4%98%22%2C%22token%22%3A%22kakao%2F5a0908019418c2c288700497%2Fd41d8cd98f00b204e9800998ecf8427e%22%7D&type=Recognizer.RequestText"
          }
        },
        {
          "secondaryText": {
            "plainText": "11월 27일 개봉",
            "styledText": "11월 27일 개봉",
            "thumbnail": {}
          },
          "head": {
            "plainText": "4위",
            "styledText": "4위",
            "thumbnail": {}
          },
          "tertiaryText": {
            "thumbnail": {}
          },
          "tail": {
            "thumbnail": {}
          },
          "thumbnail": {},
          "primaryText": {
            "plainText": "크롤",
            "styledText": "크롤",
            "thumbnail": {}
          },
          "imageUrl": "http://search1.daumcdn.net/thumb/C600x800/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fmovie%2F3f1116b074df4f82884b658a1040f4f61574913201459",
          "action": {
            "url": "kakaoi://instruction?body=%7B%22utterance%22%3A%22%EC%98%81%ED%99%94+%ED%81%AC%EB%A1%A4+%EC%95%8C%EB%A0%A4%EC%A4%98%22%2C%22token%22%3A%22kakao%2F5a0908019418c2c288700497%2Fd41d8cd98f00b204e9800998ecf8427e%22%7D&type=Recognizer.RequestText"
          }
        },
        {
          "secondaryText": {
            "plainText": "11월 27일 개봉",
            "styledText": "11월 27일 개봉",
            "thumbnail": {}
          },
          "head": {
            "plainText": "5위",
            "styledText": "5위",
            "thumbnail": {}
          },
          "tertiaryText": {
            "thumbnail": {}
          },
          "tail": {
            "thumbnail": {}
          },
          "thumbnail": {},
          "primaryText": {
            "plainText": "러브 앳",
            "styledText": "러브 앳",
            "thumbnail": {}
          },
          "imageUrl": "http://search1.daumcdn.net/thumb/C600x800/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fmovie%2Ff0ec61df32ea4ebe95f0ebabce74307f1572593282958",
          "action": {
            "url": "kakaoi://instruction?body=%7B%22utterance%22%3A%22%EC%98%81%ED%99%94+%EB%9F%AC%EB%B8%8C+%EC%95%B3+%EC%95%8C%EB%A0%A4%EC%A4%98%22%2C%22token%22%3A%22kakao%2F5a0908019418c2c288700497%2Fd41d8cd98f00b204e9800998ecf8427e%22%7D&type=Recognizer.RequestText"
          }
        }
      ],
      "meta": {},
      "itemLayout": "VERTICAL",
      "title": {
        "plainText": "박스오피스",
        "styledText": "박스오피스",
        "thumbnail": {}
      },
      "ttl": 20000,
      "button1": {
        "thumbnail": {},
        "action": {}
      },
      "quickReplies": [
        {
          "plainText": "영화 겨울왕국 2 줄거리 알려줘",
          "thumbnail": {},
          "action": {
            "url": "kakaoi://instruction?body=%7B%22utterance%22%3A%22%EC%98%81%ED%99%94+%EA%B2%A8%EC%9A%B8%EC%99%95%EA%B5%AD+2+%EC%A4%84%EA%B1%B0%EB%A6%AC+%EC%95%8C%EB%A0%A4%EC%A4%98%22%2C%22token%22%3A%22kakao%2F5a0908019418c2c288700497%2Fd41d8cd98f00b204e9800998ecf8427e%22%7D&type=Recognizer.RequestText"
          }
        },
        {
          "plainText": "영화 겨울왕국 2 평점 알려줘",
          "thumbnail": {},
          "action": {
            "url": "kakaoi://instruction?body=%7B%22utterance%22%3A%22%EC%98%81%ED%99%94+%EA%B2%A8%EC%9A%B8%EC%99%95%EA%B5%AD+2+%ED%8F%89%EC%A0%90+%EC%95%8C%EB%A0%A4%EC%A4%98%22%2C%22token%22%3A%22kakao%2F5a0908019418c2c288700497%2Fd41d8cd98f00b204e9800998ecf8427e%22%7D&type=Recognizer.RequestText"
          }
        },
        {
          "plainText": "영화 겨울왕국 2 출연자 알려줘",
          "thumbnail": {},
          "action": {
            "url": "kakaoi://instruction?body=%7B%22utterance%22%3A%22%EC%98%81%ED%99%94+%EA%B2%A8%EC%9A%B8%EC%99%95%EA%B5%AD+2+%EC%B6%9C%EC%97%B0%EC%9E%90+%EC%95%8C%EB%A0%A4%EC%A4%98%22%2C%22token%22%3A%22kakao%2F5a0908019418c2c288700497%2Fd41d8cd98f00b204e9800998ecf8427e%22%7D&type=Recognizer.RequestText"
          }
        },
        {
          "plainText": "영화 나를 찾아줘 줄거리 알려줘",
          "thumbnail": {},
          "action": {
            "url": "kakaoi://instruction?body=%7B%22utterance%22%3A%22%EC%98%81%ED%99%94+%EB%82%98%EB%A5%BC+%EC%B0%BE%EC%95%84%EC%A4%98+%EC%A4%84%EA%B1%B0%EB%A6%AC+%EC%95%8C%EB%A0%A4%EC%A4%98%22%2C%22token%22%3A%22kakao%2F5a0908019418c2c288700497%2Fd41d8cd98f00b204e9800998ecf8427e%22%7D&type=Recognizer.RequestText"
          }
        },
        {
          "plainText": "영화 나를 찾아줘 평점 알려줘",
          "thumbnail": {},
          "action": {
            "url": "kakaoi://instruction?body=%7B%22utterance%22%3A%22%EC%98%81%ED%99%94+%EB%82%98%EB%A5%BC+%EC%B0%BE%EC%95%84%EC%A4%98+%ED%8F%89%EC%A0%90+%EC%95%8C%EB%A0%A4%EC%A4%98%22%2C%22token%22%3A%22kakao%2F5a0908019418c2c288700497%2Fd41d8cd98f00b204e9800998ecf8427e%22%7D&type=Recognizer.RequestText"
          }
        },
        {
          "plainText": "영화 나를 찾아줘 출연자 알려줘",
          "thumbnail": {},
          "action": {
            "url": "kakaoi://instruction?body=%7B%22utterance%22%3A%22%EC%98%81%ED%99%94+%EB%82%98%EB%A5%BC+%EC%B0%BE%EC%95%84%EC%A4%98+%EC%B6%9C%EC%97%B0%EC%9E%90+%EC%95%8C%EB%A0%A4%EC%A4%98%22%2C%22token%22%3A%22kakao%2F5a0908019418c2c288700497%2Fd41d8cd98f00b204e9800998ecf8427e%22%7D&type=Recognizer.RequestText"
          }
        },
        {
          "plainText": "영화 블랙머니 줄거리 알려줘",
          "thumbnail": {},
          "action": {
            "url": "kakaoi://instruction?body=%7B%22utterance%22%3A%22%EC%98%81%ED%99%94+%EB%B8%94%EB%9E%99%EB%A8%B8%EB%8B%88+%EC%A4%84%EA%B1%B0%EB%A6%AC+%EC%95%8C%EB%A0%A4%EC%A4%98%22%2C%22token%22%3A%22kakao%2F5a0908019418c2c288700497%2Fd41d8cd98f00b204e9800998ecf8427e%22%7D&type=Recognizer.RequestText"
          }
        },
        {
          "plainText": "영화 블랙머니 평점 알려줘",
          "thumbnail": {},
          "action": {
            "url": "kakaoi://instruction?body=%7B%22utterance%22%3A%22%EC%98%81%ED%99%94+%EB%B8%94%EB%9E%99%EB%A8%B8%EB%8B%88+%ED%8F%89%EC%A0%90+%EC%95%8C%EB%A0%A4%EC%A4%98%22%2C%22token%22%3A%22kakao%2F5a0908019418c2c288700497%2Fd41d8cd98f00b204e9800998ecf8427e%22%7D&type=Recognizer.RequestText"
          }
        },
        {
          "plainText": "영화 블랙머니 출연자 알려줘",
          "thumbnail": {},
          "action": {
            "url": "kakaoi://instruction?body=%7B%22utterance%22%3A%22%EC%98%81%ED%99%94+%EB%B8%94%EB%9E%99%EB%A8%B8%EB%8B%88+%EC%B6%9C%EC%97%B0%EC%9E%90+%EC%95%8C%EB%A0%A4%EC%A4%98%22%2C%22token%22%3A%22kakao%2F5a0908019418c2c288700497%2Fd41d8cd98f00b204e9800998ecf8427e%22%7D&type=Recognizer.RequestText"
          }
        }
      ]
    },
    "token": "kakao/5a0908019418c2c288700497/d41d8cd98f00b204e9800998ecf8427e"
  }
}

기타

CHAT_BUBBLE

속성
구성 분류 속성
CHAT_BUBBLE 기타 Basic

CHAT_BUBBLE은 기기가 음성 안내를 지원하지 못하는 환경에서 카카오 i의 음성 안내 내용을 자막처럼 표시하는 유형입니다. 이 유형은 음성 안내 내용을 텍스트로 표시하고 그 외의 정보는 최소화합니다.
예를 들어, 카카오 i 서비스 시스템을 사용하려는 기기에 마이크가 있어 사용자의 음성 명령 입력은 가능하지만, 기기 자체에 스피커가 없어 카카오 i의 음성 안내를 출력할 수 없는 경우 CHAT_BUBBLE을 사용하여 카카오 i의 음성 답변 내용을 자막처럼 표시합니다.

안내
결과 안내는 FULL_TEXT 타입을 사용합니다.

CHAT_BUBBLE 그림CHAT_BUBBLE

Request

CHAT_BUBBLE Request Body
파라미터 타입 필수 여부 설명
type String 필수 instruction: CHAT_BUBBLE
Object 필수 View Template 타입별 필수/선택/미사용 항목이 다름
- 선택 항목 미 정의시, View Template에 출력되지 않음
content Object: Content 필수 사용자 질문에 대한 정답(상세 내용) 표시
ex) contents.paragraph.plainText
ttl String 선택 화면 유지 시간
재질의 조건: 60,000(msec)
결과 안내 조건: 도메인마다 정의값 다름
ex) ttl: 60,000
style String 필수 대화 세션 중간에 표시할 때는 "INTERIM"으로 정의
대화 완료 후 최종 결괏값을 표시할 때는 "BASIC"으로 정의
ex) style: "INTERIM"
token String 선택 각 도메인에서 발급하는 토큰
안내
Object 별 상세 정의는 Data Type 문서를 참고하시기 바랍니다.

Sample Code

코드예제CHAT_BUBBLE

{
  "type": "ChatBubble.Render",
  "body": {
    "mood": "neutral",
    "style": "BASIC",
    "text": "검색한 결과, 조앤롤링 제예요",
    "token": "_/_/shadow-fde6a0f6-20cd-4daf-ae9f-aabc5e23e22b",
    "ttl": 60000
  }
}

관련 문서

개요 View Template 구성 View Template API 레퍼런스 View Template

이 문서가 만족스러운 이유를 알려주세요.
이 문서에 아쉬운 점을 알려주세요.
평가해주셔서 감사합니다.

더 자세한 의견은 contact.dkt@kakaocorp.com 으로 제보해주세요.