Kakao i Skill::개발 프로세스(Voice)::챗봇 연동 기능

페이지 이동경로

카카오톡 채널 연결로 카카오앱 가입하기

보이스봇에서 카카오톡 채널 채팅을 통해 챗봇의 카카오앱 가입 기능을 연동하는 방법은 다음과 같습니다.

  1. [Builder 사이트] 카카오 i 오픈빌더에서 채널을 연결할 ‘카카오톡 챗봇’을 생성합니다.

  2. 해당 Bot의 설정 > 카카오톡 채널 연결 메뉴에서 채팅 대화에 사용할 비즈니스 인증을 받은 채널 계정을 연결합니다. 카카오톡 채널 계정 연결은 Bot의 마스터 관리자만이 진행할 수 있습니다. 비즈니스 인증이 필요한 경우에는 [카카오 i 오픈빌더] 비즈사업자 인증 채널과 디벨로퍼스 앱 연결하기를 참고하시기 바랍니다.

    안내
    스피커 음성 대화를 설계/구현하는 보이스봇과 카카오톡 채널 채팅 대화를 설계/구현하는 카카오톡 챗봇을 분리하는 것을 권장합니다. (2019.01 기준)
  3. 챗봇에서 프로필 플러그인을 사용하면, 사용자가 카카오톡 채널과의 채팅을 통해서 카카오앱에 가입을 할 수 있고 정보 제공을 동의한 가입 사용자의 프로필 정보를 제공받을 수 있습니다. 이때, Bot에서 프로필 플러그인을 사용할 수 있도록 인증 블록을 추가하여야 합니다. 자세한 설명은 [카카오 i 오픈빌더] 봇 설정[카카오 i 오픈빌더] 프로필 플러그인을 참고하시기 바랍니다.

  4. 앞의 과정이 완료되면 챗봇의 기본 시나리오에 웰컴/폴백/탈출 블록 외에 인증 블록이 추가됩니다.

  5. 인증 블록에서 ‘파라미터 만들기’를 선택해서 플러그인 파라미터 중에 sys.plugin.profileshare 타입의 파라미터를 생성합니다.

    • 파라미터 이름은 적당한 값으로 지정하고, 필수 파라미터로 체크해서 저장합니다.
  6. 해당 파라미터의 되묻기 질문 등록을 위해, 인증 블록이 실행되었을 때 발송되는 카카오톡 채널 메시지로 보일 가입 안내 메시지와 버튼 명을 입력합니다.

  7. 인증 블록의 봇 응답 형식 설정 메뉴에는 가입 안내 메시지에서 사용자가 버튼을 클릭하고, 개인 정보 제3자 제공 동의를 완료했을 때 최종 답변으로 나갈 메시지를 지정합니다.

  8. 인증 블록에 Skill을 연결하면 사용자가 개인 정보 제3자 제공에 동의해서 앱 가입이 완료된 후, Skill Request로 유저의 Profile 정보 및 appUserId가 전달됩니다. 다음의 예시를 참고하시기 바랍니다.

    코드예제Profile 정보 및 appUserId 전달

    {
        "userRequest":{
            "user":{
                "id":"{사용자 botUserKey}",
                "type":"botUserKey",
                "properties":{
                    "plusfriendUserKey":"{플러스 친구 사용자 ID}",
                    "appUserId":"{app user id}"
                }
            }
        },
        "..."
    }
    

  9. 카카오톡 채널 채팅으로 가입 요청이 왔을 때 이를 처리할 블록(이하, 가입 안내 블록)을 생성하고, 이 블록의 봇 응답 형식 설정에서 인증 블록을 연결할 수 있습니다.

    챗봇의 일반 블록의 응답에 인증 블록을 버튼으로 연결한 예 그림챗봇의 일반 블록의 응답에 인증 블록을 버튼으로 연결한 예

  10.   텍스트형으로 답변을 입력하고, 인증 블록을 실행할 버튼을 추가하면 해당 ‘가입 안내 블록’ 호출 시 해당 메시지가 사용자에게 전송됩니다.

  11.   버튼을 누르면 인증 블록이 호출되고 sys.plugin.profileshare 파라미터의 되묻기 질문으로 등록한 메시지가 전송됩니다.

  12.   사용자가 팝업에서 동의를 누르면 해당 카카오앱에 가입됩니다.

시나리오 예시

안내
스크린샷은 구버전 프로필 플러그인으로 캡처된 채팅 이미지이므로 시나리오 단계만 참고하시기 바랍니다.
  1. 사용자가 “회원 가입 어떻게 해?”라고 입력해서 가입 안내 블록을 호출합니다.

    • 가입 안내 블록이 호출되면 무조건 인증 블록 버튼이 포함된 메시지를 보내지 않고, 가입/미가입 회원을 구분해서 다른 메시지를 보낼 수도 있습니다.
    • 이 경우에는 해당 블록에 Skill을 연결해서 Skill Request에 전달되는 user의 Profile정보로 사용자의 앱 가입 여부를 구분한 후에 Skill Response에 메시지 형식을 반환합니다.

    가입 안내 블록 호출 그림가입 안내 블록 호출

  2. 사용자가 [가입하기] 버튼을 누르면, 인증 블록이 호출되고 프로필 플러그인 되묻기 메시지가 출력됩니다.

    프로필 플러그인 되묻기 메시지 그림프로필 플러그인 되묻기 메시지

  3. 사용자가 [동의하러 가기] 버튼을 눌러서 개인 정보 제3자 제공 동의를 완료합니다.

    개인 정보 제3자 제공 동의 그림개인 정보 제3자 제공 동의

  4. 인증 블록에 설정된 답변 메시지가 출력됩니다.

    답변 메시지 출력 그림답변 메시지 출력

주의
프로필 플러그인 기능 연결(1.3) 및 인증 블록 구현이 완료되면, 해당 챗봇의 배포를 진행해야 연결된 카카오톡 채널 채팅에서 기능을 사용할 수 있습니다.

카카오톡 채널 메시지 보내기

보이스봇에서 카카오톡 채널 채팅을 통해 메시지를 보내는 방법은 카카오앱 가입 여부에 따라 구분합니다.

카카오앱 가입자에게 보내기

카카오 i 오픈빌더에서 만든 챗봇의 경우, 별도의 권한 등록을 통해(담당자 문의 필요) 카카오톡 채널 API로 블록을 호출하여 Kakao Developers에서 생성한 앱에 가입된 사용자의 카카오톡으로 채널 메시지를 보낼 수 있습니다.

  • 메시지는 해당 채널을 친구로 추가한 사용자에게만 전송됩니다.

시나리오 예시

사용자 » (문제 풀이 완료)
스피커 » 총 5개의 문제 중 {N}개를 맞췄어요. 현재 예측점수는 OOO 입니다. 자세한 문제풀이와 해석은 카톡으로 보냈어요.
카카오토익 카카오톡 채널 메시지 » 1번 문제에 대한 해설입니다. (…)
  1. Bot 블록 화면 오른쪽 상단 톱니바퀴 아이콘(블록 설정) > 이벤트 설정에서 해당 블록을 실행시킬 이벤트 이름을 지정합니다.

  2. 지정한 이벤트 이름을 카카오톡 채널 API의 파라미터로 전달하면 지정한 사용자에게 해당 챗봇 블록의 응답이 카카오톡 채널 메시지로 전달됩니다.

    챗봇의 웰컴 블록에 이벤트 이름을 지정한 예 그림챗봇의 웰컴 블록에 이벤트 이름을 지정한 예

주의
별도의 권한을 등록한 후에 반드시 해당 챗봇의 배포를 진행해야 연결된 카카오톡 채널 채팅에서 기능을 사용할 수 있습니다.

카카오앱 미가입자에게 보내기

보이스봇의 Skill Request에서 발급받은 티켓으로 챗봇의 이벤트를 호출하면, 스피커 등 카카오 i 음성 서비스를 통해 보이스봇과 대화하고 있는 사용자의 카카오 계정에 연결된 카카오톡으로 채널 메시지를 보낼 수 있습니다. 이는 카카오앱 가입 여부와는 관계없이 이루어지므로 앞선 카카오앱 가입자에게 보내기와는 다른 별도의 API를 사용하며, 해당 보이스봇과 챗봇은 미리 연결 정보를 등록해야 합니다(담당자 문의 필요).

보이스봇의 Skill Request에서 챗봇 이벤트를 호출하기 위한 티켓은 HTTP Header에 KakaoI-Ticket-Id라는 필드로 전달되며, 전달된 시점부터 1분 동안만 유효합니다.

시나리오 예시

사용자 » 카카오토익 이용권 구매 어떻게 해
스피커 » 카카오토익 프리미엄 업그레이드 방법을 카톡으로 보냈어요.
카카오토익 카카오톡 채널 메시지 » 다음 링크를 눌러 카카오토익 앱에서 원하는 상품의 결제를 진행해주세요.
이 문서가 만족스러운 이유를 알려주세요.
이 문서에 아쉬운 점을 알려주세요.
평가해주셔서 감사합니다.

더 자세한 의견은 documentation@kakaoenterprise.com 으로 제보해주세요.