당신은 주제를 찾고 있습니까 “카카오 톡 봇 만들기 – 24시간 구동되는 카카오톡 봇 만들기!“? 다음 카테고리의 웹사이트 https://you.maxfit.vn 에서 귀하의 모든 질문에 답변해 드립니다: https://you.maxfit.vn/blog/. 바로 아래에서 답을 찾을 수 있습니다. 작성자 퓨터 [PUTER] 이(가) 작성한 기사에는 조회수 17,516회 및 좋아요 115개 개의 좋아요가 있습니다.
- Step 1. 로그인 후 아래 화면과 같이 비어있는 ‘나의 봇‘ 목록 확인합니다. 비어 있는 봇 목록화면입니다. …
- Step 2. 우측 상단의 봇 만들기 버튼을 누르고, 카카오톡 챗봇을 선택합니다. …
- Step 3.
카카오 톡 봇 만들기 주제에 대한 동영상 보기
여기에서 이 주제에 대한 비디오를 시청하십시오. 주의 깊게 살펴보고 읽고 있는 내용에 대한 피드백을 제공하세요!
d여기에서 24시간 구동되는 카카오톡 봇 만들기! – 카카오 톡 봇 만들기 주제에 대한 세부정보를 참조하세요
한달에 한번 영상 올리는 프로유튜버 ㄷㄷ
본 영상의 코드를 공유하지 않습니다.
구독과 좋아요 부탁드려요!
디스코드 채널:
—————————————–
https://discord.gg/X3f9MnNmhW
(사실 와도 아무것도 없음)
—————————————–
#카톡봇 #javascript #코딩 #프로그래밍 #카카오톡봇 #24시간봇 #coding #파이썬 #매크로 #카카오톡
카카오 톡 봇 만들기 주제에 대한 자세한 내용은 여기를 참조하세요.
카카오톡 봇/제작법 – 나무위키:대문
카카오톡에서 지원했었던 공식봇이다. · 오직 채자봇에서만 지원하는 기능으로, 블록코딩과 유사한 환경에서 로직을 만들면, 그 로직에 대응되는 자바 …
Source: namu.wiki
Date Published: 7/13/2022
View: 4525
카카오톡 봇 만들기 – 1 – 간단 설명
카카오톡 봇 만들기 – 1 – 간단 설명. 문둘기 2019. 10. 8. 23:22. 이 시리즈의 목적은 특정 채팅에 반응해서 대답하는 봇을 카카오톡 단톡방에 추가하는것이다.
Source: dulki.tistory.com
Date Published: 2/30/2021
View: 3142
카카오톡 챗봇 만들기(Javascript) – 어떤 공부 블로거의 금서목록
필자 같은 경우 계속 봇을 돌릴 여분의 폰이 없어서 NOX앱으로 가상 핸드폰에 해당 앱들을 깔았다. 맨처음 채팅 자동응답 봇 앱을 들어가면 권한 설정을 …
Source: marinelifeirony.tistory.com
Date Published: 8/7/2022
View: 9610
#1 카카오톡 봇을 만들어보자! – 앱 설치, 가상번호만들기
‘메신저 자동응답봇’이나 ‘메신져봇R’을 설치해주시면 됩니다. 카톡봇앱을 구동하기 위해서는 몇가지 설정이 필요합니다.
Source: omble-blog.tistory.com
Date Published: 2/11/2022
View: 7759
카카오톡 봇 만들기 ( python, pc 카톡, 비활성 ) – 1편
카카오톡 오픈 톡방에 봇이 있으면 좋을 것 같아서 만들려고 보니. 카톡 api로는 자신에게 보내기 밖에 안됨. 이경우 알람도 안 뜨고, 단톡과 오픈톡 …
Source: airfox1.tistory.com
Date Published: 10/7/2022
View: 7298
[카카오톡 봇 만들기] 1. 수업시간 / 취침시간 자동응답 구현하기
[카카오톡 봇 만들기] 1. 수업시간 / 취침시간 자동응답 구현하기. 2020. 10. 10. 23:52. 옛날에 읽었던 소설책이 떠올라 최근에 다시 읽기 시작했다.Source: chinpa.tistory.com
Date Published: 1/30/2022
View: 1900
카카오톡 자동응답ㅣ카카오톡 봇 만들기ㅣ카톡 자동 … – Maxfit
카카오톡 자동응답ㅣ카카오톡 봇 만들기ㅣ카톡 자동응답 하는법ㅣ자영업 사장님들 꼭 하세요~! | 카카오 톡 자동 답장 최신. July 16, 2022 by Nguyễn Nam.
Source: ko.maxfit.vn
Date Published: 11/19/2022
View: 3716
[카카오톡 채팅 봇] 일반채팅 단톡방 친구들과 대화 가능한 봇 …
이 포스트에서는 카카오톡 일반채팅 단톡방에 대화가 가능한 봇을 만드는 법을 다루고 있습니다. (오픈채팅이나 플러스친구로 만드는 그런 봇이 …
Source: restudycafe.tistory.com
Date Published: 2/1/2021
View: 2196
주제와 관련된 이미지 카카오 톡 봇 만들기
주제와 관련된 더 많은 사진을 참조하십시오 24시간 구동되는 카카오톡 봇 만들기!. 댓글에서 더 많은 관련 이미지를 보거나 필요한 경우 더 많은 관련 기사를 볼 수 있습니다.
![24시간 구동되는 카카오톡 봇 만들기!](https://i.ytimg.com/vi/9ikh17_O7s8/maxresdefault.jpg)
주제에 대한 기사 평가 카카오 톡 봇 만들기
- Author: 퓨터 [PUTER]
- Views: 조회수 17,516회
- Likes: 좋아요 115개
- Date Published: 2021. 5. 22.
- Video Url link: https://www.youtube.com/watch?v=9ikh17_O7s8
주요 기능 사용법 · 도움말
내가 만든 봇의 얼굴이 될 ‘카카오톡 채널’과 봇을 만드는 도구인 ‘챗봇 관리자센터’만 있으면 모든 준비 끝!
본 메뉴에서는 앞서 시작하기의 주요 개념에 이어, 실제 봇을 만들 때 필요한 각각의 메뉴 사용법을 안내합니다. 천리길도 한걸음부터, 조금씩 따라하다보면 어느새 AI챗봇 만들기에 익숙해진 내 자신을 발견합니다.
엔티티와 패턴발화, 블록, 그리고 컨텍스트까지. 이제 더 이상 어렵지 않습니다!
새로운 봇 만들기
챗봇 관리자센터에서는 간단하게 봇 이름만 입력하여 챗봇과 보이스봇을 만들 수 있습니다. 챗봇을 생성하는 과정은 아래와 같습니다.
Step 1. 로그인 후 아래 화면과 같이 비어있는 ‘나의 봇’ 목록 확인합니다.
비어 있는 봇 목록화면입니다. 가운데 파란 ‘+ 봇 만들기’ 버튼이 봇 생성버튼입니다.
Step 2. 우측 상단의 봇 만들기 버튼을 누르고, 카카오톡 챗봇을 선택합니다.
카카오톡 챗봇과 보이스봇(Closed Beta Test) 선택 팝업
Step 3. 봇 이름을 적고 확인을 누르면 생성이 완료되고 제작 페이지로 이동하게 됩니다.
카카오톡 챗봇의 이름을 입력하는 팝업
시나리오와 블록 만들기
시나리오 설정하기
봇 생성후 가장 먼저 해야할 일은 시나리오를 구성하는 것입니다. 블록을 구분하여 담아낼 수 있도록 계획을 세우고, 시나리오에 공통적으로 적용될 기능을 설정합니다. 시나리오 설정 메뉴는 다음 화면처럼 시나리오 메인 메뉴 아래 톱니바퀴 모양의 설정 아이콘으로 표시되어 있습니다.
시나리오 설정 메뉴 위치
시나리오 설정 메뉴안에서 봇 작업자는 봇에서 만든 모든 시나리오에 공통적으로 적용할 수 있는 시나리오 속성, 즉 1) 봇의 되묻기 기능에 대한 기본 설정과 2) 챗봇 사용자를 위한 봇 제네릭 메뉴를 설정할 수 있습니다.
되묻기 기능 공통 설정
시나리오 설정 메뉴안에 있는 되묻기 기능 설정 화면
위와 같이 하나의 봇 안에서 쓰이는 모든 시나리오에 공통적으로 적용될 되묻기 기능에 대하여,
되묻기 최대 횟수
되묻기 최대 시간
를 간단하게 선택하고, 각각의 경우에 대하여 유효 조건을 초과할 때 출력될 안내 메시지를 임의로 작성할 수 있습니다. (필수로 작성되어야하는 영역입니다.)
제네릭 메뉴를 추가하고 싶으면 ‘버튼 추가’를 누르면 되며, 버튼 설정은 ‘버튼 설정’을 통해 할 수 있습니다.
봇 제네릭 메뉴 내 버튼에 대한 사용자 설정 화면
버튼 설정에서는 버튼명과 버튼 기능을 직접 지정할 수 있습니다.
“퀵서비스 메뉴#1” 로 버튼명을 지정했습니다.
“퀵서비스 메뉴#2” 로 버튼명을 지정했습니다.
이때,
버튼명은 14자로 제한됩니다.
버튼 기능은 블록 연결 및 메세지 전송 두 가지만 제공됩니다.
블록 연결은 해당 버튼 클릭 시 원하는 블록으로 연결하는 것이며, 메시지 전송은 버튼을 클릭할 때 봇에게 해당 버튼명을 그대로 전송하는 것을 의미합니다.
봇 제네릭 메뉴안의 필요한 내용을 모두 작성하고, 확인 버튼을 누르면 작업 내용들이 저장됩니다.
봇 제네릭 메뉴가 설정 완료된 모습입니다
위의 예시에서 작성된 제네릭 메뉴가 카카오톡 채널 챗봇 화면에서 보여지는 모습은 아래와 같습니다.
카카오톡 채널 챗봇 하단에 사용자가 직접 클릭할 수 있는 버튼 두 개가 제네릭 메뉴 안에 구현되어있는 모습입니다.
제네릭 메뉴안의 각 버튼은 기존에 작성된 블록으로 연결될 수 있고, 사용자가 버튼을 누르면 제네릭 메뉴 안의 버튼명이 그대로 출력되고 해당 블록의 출력으로 설정된 말풍선이 나타납니다.
시나리오 생성하기
이제 시나리오를 생성해보겠습니다. 시나리오는 봇 생성 후 메인화면에서 플러스(+) 버튼을 클릭할 때 마다 시나리오1, 시나리오2… 순으로 생성됩니다.
시나리오 추가 기능 위치
시나리오의 이름 또한 손쉽게 수정할 수 있으며, 필요하면 삭제도 가능합니다.
시나리오명칭 우측에 있는 ‘더보기’ 아이콘 클릭 후 ‘편집’을 클릭하면 이름 수정이 가능합니다
시나리오 명칭 변경 모습
시나리오 명칭 우측에 있는 ‘더보기’ 아이콘 클릭 후 ‘삭제’를 클릭하면 해당 시나리오가 삭제 됩니다.
봇 작업자는 하나의 시나리오 안에는 사용자 의도를 나타내는 ‘블록’들을 [+ 블록추가] 버튼을 눌러 여러개 작성할 수 있습니다.
시나리오 안에서 블록 만들기
시나리오를 선택하면 기본적으로 우측 화면에 블록의 내용을 바로 채울 수 있는 화면을 볼 수 있습니다. 봇 작업자는 해당 화면의 위에서부터, 사용자 발화 패턴 설정 → 봇 응답형식 설정 순으로 필요 내용을 작성할 수 있습니다.
이때 파라미터 설정 부분은 메뉴가 접혀있습니다. 봇 작업자가 필요에 따라 챗봇 관리자센터의 스킬이나 플러그인 기능을 이용해야 한다면, 해당 파라미터 설정 부분을 클릭하여 메뉴를 펼치고 필요한 내용을 채우면 됩니다.
블록 만들기 디폴트 화면
참고로, 하나의 봇 안에서 시나리오가 점차 많아지게 되면, 봇 작업자는 특정 시나리오 및 블록들의 콘텐츠 유지보수를 할 때 정확한 위치를 찾기가 어려워질 수 있습니다. 그럴때는 시나리오 메인 메뉴에 있는 검색 창에서 검색 희망 키워드를 입력하면, 그에 해당하는 시나리오 및 블록들이 즉시 하이라이트 되어 나타납니다. 이를 통해 봇 작업자는 필요 업데이트 작업을 빠르게 진행할 수 있습니다.
키워드 검색에 따라 시나리오명이 하이라이트 된 모습
키워드 검색에 따라 블록명이 하이라이트 된 모습
시나리오간 블록 이동하기
봇 작업자는 시나리오안에서 작성된 블록을 타 시나리오로 직접 이동시킬수 있습니다. ‘블록 이동’ 개념이므로, 사본이 생성되어 이동되는 것은 아님을 유의하여 주십시오.
타 시나리오로의 이동이 필요한 블록을 선택하시고, 우측의 ‘더보기’ 버튼을 클릭하면, ‘이동’ 메뉴가 나타납니다. 그리고, ‘이동’ 메뉴를 클릭합니다.
블록이동을 위한 안내 팝업을 확인하고, 블록을 이동시킬 시나리오명을 선택해줍니다.
대상 블록이 기존 ‘시나리오01’에서, 새로운 ‘시나리오02’라는 지점으로 이동한 것을 알 수 있습니다.
기본 블록 설정하기
주요 개념 > 블록에서 설명한 것처럼, 챗봇 관리자센터가 봇을 생성 후 기본적으로 항시 제공하는 블록들을 기본 블록이라고 합니다.
기본 블록은 웰컴 블록, 폴백 블록, 탈출 블록 총 세 가지로 구성되어 있으며, 각 블록을 설정하는 방법은 다음의 그림을 참고해주시길 바랍니다.
작업자는 봇을 생성하고 나면 메인화면 좌측에서 기본 블록에 바로 접근할 수 있습니다.
봇 작업자가 봇을 생성하고 나면, 기본 블록은 기본 시나리오 메뉴 하단에 디폴트로 위치하게 됩니다. 봇 작업자는 봇을 만드는 중에 언제든 접근해서 필요한 세팅을 할 수 있습니다
웰컴 블록(Welcome Block) 설정하기
웰컴 블록은 봇 사용자가 봇을 처음 사용할 때 받게되는 응답을 설정하는 블록입니다.
웰컴 블록 내 메시지 꾸미기를 위한 말풍선 선택화면
봇 응답 형식 설정 우측에 있는 + 버튼을 클릭하면, 봇이 발송하는 웰컴 메시지를 어떤 말풍선에 담아서 꾸밀 것인지를 선택할 수 있습니다. 텍스트형, 이미지형, 카드형, 커머스형, 리스트형 또는 스킬을 연결하는 등 다양한선 타입을 골라 메시지를 채울 수 있습니다. 단, 웰컴 블록의 담긴 메시지는 카카오톡 채널 챗봇을 이용하는 사용자의 경우
사용자가 카카오톡 채널을 봇과 연결한 다음 처음으로 대화방에 진입한 경우
사용자가 챗봇과 친구가 아니지만, 채팅하기로 바로 대화방에 진입한 경우
최초 한 번만 사용자에게 전달됩니다. 동일한 사용자가 재입장할때마다 웰컴블록이 노출되기를 원하실 경우 일반 블록을 웰컴블록과 동일하게 생성하여 유도하는 방식으로 응용할 수 있습니다.
Caution. 만약 웰컴블록이 동작하지 않는 경우 아래 내용을 체크하여 주시기 바랍니다. 웰컴블록은 ON/OFF를 설정할 수 있으며 OFF할 경우, 위 상황에 해당하는 경우에도 웰컴 블록의 메시지는 전송되지 않습니다. 웰컴블록은 최초 1회 진입시에만 확인 가능합니다. 알림톡과 함께 사용하는 채널인 경우 사용자가 채널추가를 한 경우에만 웰컴블록이 노출됩니다.
폴백 블록(Fallback Block) 설정하기
봇이 사용자의 말을 알아듣지 못하고, 이해할 수 없다는 의미의 메시지를 내뱉는 상황을 폴백(fallback) 상황이라고 합니다. 즉, 폴백 블록은 사용자의 입력(Input)이 어떠한 블록과도 매칭이 되지 않을 때의 응답을 설정하는 블록입니다.
폴백 메시지 작성을 위한 텍스트형 말풍선 작성 공간의 모습. 폴백 말풍선에 필요한 버튼도 추가할 수 있습니다
상기 화면처럼, 봇 작업자는 봇이 사용자의 말을 이해하지 못할 때 발송하는 첫 번째 메시지를 ‘텍스트형’ 말풍선 형태로 작성할 수 있습니다. 첫 번째 응답 부분의 + 버튼을 누르면, 여러 개의 텍스트형 말풍선을 작성할 수 있습니다. 이렇게 작성된 말풍선들은 폴백 상황에서 랜덤으로 사용자에게 출력됩니다. 바로 연결 응답 및 기타 말풍선들을 추가로 폴백 내용 말풍선에 이어서 추가할 수도 있습니다.
탈출 블록(Exit Block) 설정하기
탈출 블록은 사용자가 봇의 되묻기 상황에서, 강제적으로 빠져나가고자 할 때 쓰는 명령어를 정의하는 곳입니다.
탈출 블록 내에서 탈출 명령어로 쓰일 발화를 지정하는 모습
되묻기 상황을 탈출하기 위한 임의의 명령어 발화를 입력해두는 곳으로 이해하면 좋습니다. 되묻기 상황에서 쓸 수 있는 사용자의 탈출 수단이니, 탈출 블록에 정의된 명령어를 봇의 응대 시나리오 내 적정 지점에서 사용자에게 안내하는 것이 좋습니다.
인증 블록 설정하기
인증 블록은 플러그인을 사용하기 위한 블록입니다. 처음 봇을 생성할 당시에는 인증 블록이 없으며 이후 채널 – 앱을 정상적으로 봇에 연결하시면 인증 블록이 생성됩니다.
인증 블록의 모습
챗봇 관리자센터에서 인증 블록을 사용하시려면 아래와 같은 사전 설정이 필요합니다.
Step 1. 채널-앱 설정하기
인증 블록을 사용하기 위해서는 비즈니스 인증이 필수 입니다. 비즈 채널과 앱 을 연결 후 인증 블록을 사용할 수 있습니다.
Information. 카카오톡 비즈니스 채널(인증된 프로필)과 디벨로퍼스 비즈 앱 생성 방법은 카카오싱크 공통 가이드에서 상세하게 확인할 수 있습니다.
Step 2. 봇에 채널 설정하기
카카오비즈니스 관리자센터에서 운영, 개발 채널을 생성하고 동일한 앱에 연결을 완료하였다면 챗봇 관리자센터에서 해당 채널-앱을 설정 합니다. 상세한 설정 방법은 카카오톡 채널 연결하기를 참고하시길 바랍니다.
챗봇 관리자센터 내 ‘인증블록’에서 필수 파라미터 설정 후 일반 블록과 연결하여 플러그인을 이용할 수 있습니다.
Caution. 만일, 인증블록 설정 후 채널/앱 정보에 변동사항이 있는 경우 플러그인이 정상 동작하지 않을 수 있습니다.
아래 사항을 확인한 후 반드시 인증블록을 초기화 및 재설정 해주시기 바랍니다. 또한 인증블록과 연결된 블록 버튼도 재설정이 필요합니다.
운영 채널 또는 개발 채널만 연결되어 있는지 확인 – 두 채널 모두 봇과 연결 필요 두 채널이 모두 같은 앱에 연결되어 있는지 확인 – 두 채널이 같은 앱에 연결 필요
(운영, 개발채널 설정탭에서 채널의 빨간색 글씨 및 느낌표가 출력되는것은 운영, 개발채널에 연결된 앱이 서로 다른 경우) 디벨로퍼스 앱 제품 설정에서 ‘카카오 로그인 활성화’가 ON으로 되어 있어야 함 (싱크,회원가입 플러그인의 경우)디벨로퍼스 앱 제품 설정에서 ‘간편가입 사용 여부’가 ON으로 되어 있어야 함 봇 마스터가 채널과 연결된 디벨로퍼스 앱에 권한이 있는지 확인 – 봇 마스터가 채널과 연결된 앱에 EDITOR 이상의 권한 필요 (싱크,회원가입 플러그인의 경우)디벨로퍼스의 ‘카카오싱크 플러그인 Redirect URI’가 정상적으로 입력되어있는지 확인 – URI가 유효해야 함 설정을 완료한 후 운영채널에서만 동작하지 않는다면 ‘배포’를 시행했는지 확인
엔티티 설정하기
엔티티 등록하기
아래와 같이 두 가지 방법으로 챗봇 관리자센터에 엔티티를 등록할 수 있습니다.
엔티티에서 등록하기
엔티티 버튼을 눌러 엔티티를 미리 정의할 수 있습니다.
엔티티 설정 위치 : 봇 생성 후 우측 상단에서 확인 가능합니다.
엔티티 설정 팝업 화면: 엔티티 생성을 눌러 단어를 추가합니다.
미리 정의해 둔 엔티티가 있다면, 발화를 입력할 때마다 손쉽게 해당 엔티티를 사용자 발화 패턴에서 태깅이 가능하도록 밑줄 하이라이트가 표시 됩니다.
밑줄 하이라이트 : 예상 발화를 입력하면, 엔티티로 태깅 될 수 있는 단어가 밑줄로 표시됩니다.
엔티티 태깅: 밑줄로 하이라이트 된 단어를 마우스로 드래그 하면, 선택된 부분에 필요한 엔티티를 태깅할 수 있습니다. 봇 작업자가 부여할 수 있는 추천 엔티티, 또는 더 넓게 찾아볼수 있는 전체 엔티티 메뉴를 제공합니다.
엔티티 태깅 중 새 엔티티 추가하기 버튼을 통해 등록하기
봇 작업자는 발화 입력 후 중요하게 생각하는 단어를 즉시 엔티티로 만들 수 있습니다. 입력된 발화 중 특정 단어를 드래그하면 태깅이 가능한 엔티티 메뉴를 볼 수 있습니다. 필요에 따라 팝업창 하단의 새 엔티티로 추가하기 버튼을 통해 추가 엔티티 설정이 가능합니다.
발화 작성시 특정 단어 드래그를 통한 추가 엔티티 작성 및 반영 모습
블록 내 ‘발화입력’ 화면 : ‘라떼’에 해당하는 ‘coffee_name’ 엔티티가 매핑되어 박스로 표시되는 모습
나의 엔티티 작성 예시
엔티티 작성의 좋은 예
엔티티를 잘 작성한다는 것은 사용자의 발화문에서 의미있는 단어를 추출해내는 기초 작업을 튼튼히 하는 것을 뜻합니다. 그래야 발화 패턴을 인식하는 자연어처리 로직을 십분 활용할 수 있고, 다양한 발화 형태 속에 존재하는 중요한 단어를 보다 정확히 발췌할 수 있습니다. 올바르게 작성된 엔티티 예시는 아래와 같습니다.
바람직한 엔티티 작성 예시
Tip. 의미있는 데이터 중심으로 엔티티를 구분 합니다. 예) cafe_name(카페명), coffee_name(커피메뉴), user_action_order(사용자행동패턴), service_type(주문서비스방식))
엔티티 간 단어들이 중복되지 않고, 의미가 겹치지 않도록 합니다.
엔티티 목록만 보아도 누구나 의미를 쉽게 유추할 수 있도록, 엔티티명을 명확하게 정의합니다.
엔티티 작성의 나쁜 예
봇 디자이너가 사용자 발화의 모든 형태를 정확한 매칭(exact matching)으로 잡아내겠다는 의지로 모든 발생 가능할 단어를 엔티티로 등록해버리면 발화 패턴이 매우 복잡해집니다. 뿐만 아니라 향후 엔티티 유지보수 또한 어려워지게 됩니다. 결국엔 하나의 등록으로 충분한 발화패턴을, 굳이 수십여개로 만들어내야하는 엔티티 작성 부담을 불필요하게 발생시킬수 있습니다. 엔티티 작성의 핵심 포인트는, 사용자 발화입력 패턴을 잡아내는데 있어서 가장 필수적인 단어(또한, 여러 형태로 변경 가능한 단어)를 엔티티로 일괄 등록하는 것 입니다.
부적절한 엔티티 작성 예시는 아래와 같습니다.
사용자가 엔티티 등록시 지양해야하는 작성 예시
Tip. ‘좀, 그렇게, 어떻게’ 등 발화문장에서 큰 의미가 없는 모든 발생가능한 단어들을 엔티티로 등록하는 것은 피하도록 합니다. 엔티티 태깅을 통해 중요 정보를 추출해내는 관점에서 크게 중요하지 않기 때문입니다.
유의미한 데이터로 구성한 카테고리가 아닌, 사용자 발화 중 중요하지 않은 단어들을 모두 번거롭게 등록할 필요는 없습니다. 향후 의미없는 작업노고를 발생시키는 원인이 됩니다. 예) ‘네’, ‘갑니다’, ‘주세요’, ‘안되겠네’ 등과 같은 서술어미 종류
발화 패턴 만들기
봇 작업자가 사용자 발화 패턴 설정란에 사용자 예상 발화를 입력하고 난 후, 직접 태깅을 통해서 필요한대로 발화 패턴을 정의할 수 있습니다. 챗봇 관리자센터에서는 태깅이 필요할 것으로 예상하는 엔티티 단어에 대해서 밑줄(Underline)을 자체적으로 표시해주는데, 이를 확인하고 봇 작업자는 밑줄이 가르치는 단어를 드래그하여 필요한 엔티티를 직접 부여하실 수 있습니다.
다음과 같은 작업 순서 예시를 확인하십시오.
Step 1. 발화 중 밑줄이 표시된 ‘라이언’에 인물 엔티티를 태깅합니다. (엔티티명: @sys.person.name )
밑줄이 나타난 단어를 드래그하면, 엔티티를 고를수 있는 팝업이 나타납니다. 필요에 따라 봇 작업자는 추천 엔티티 또는 전체 엔티티 목록에서 희망하는 엔티티를 부여할 수 있습니다.
Step 2. 밑줄이 없더라도 ‘나이’처럼 특정 단어에 엔티티 태깅을 할 수 있습니다. (엔티티명 : @age )
나이라는 단어에 직접 드래그 하여 별도의 엔티티를 강제 부여하는 모습입니다.
입력된 발화에 대해서 최종적으로 엔티티 태깅이 완료하고 나면 패턴 발화가 생성됩니다.
Step 3. 의도 확인에 중요한 정보는 {sys.person.name} , {age} 엔티티에 있음을 확인합니다.
패턴이 잡혀진 발화의 예시 모습입니다.
결론적으로 본 테스트 블록의 사용자 의도는 나이 묻기이며, 이러한 의도를 확인하기 위한 패턴은 아래와 같다는 것을 알 수 있습니다.
패턴 발화 : {인물이름} {나이} <어떻게> <되다>
위 같은 방식으로, 본 블록이 나타내고자 하는 의도에 알맞는 발화패턴을 입력하고 태깅하는 작업하는 과정을 이어서 하면 됩니다. 하나의 블록 안에서 패턴을 충분히 포함 할 수록, 실제 사용자 발화에 블록이 대응할 수 있는 확률이 높아집니다.
되묻기 질문 등록하기
되묻기 질문은 챗봇이 대화 중에 사용자에게 거꾸로 질문을 던지는 액션을 말합니다. 봇은 대화를 이해하며 사용자와 인터랙션을 이어가기 위해 사용자 발화 안에 특정 값이 있는지 지속해서 확인하고, 필요로 하는 값이 있다면 이를 추출하여 외부 스킬 서버 및 플러그인과 연동합니다. 특정한 의도가 있는 응답을 구현하기 위해서는, 사용자 발화로부터 특정 값이 필수적으로 접수 되어야 합니다. 만약 발화 중 특정 필수 값이 부재한다면, 봇 사용자가 해당 값을 입력하도록 유도하는 되묻기 질문을 설정할 수 있습니다.
챗봇 관리자센터 안에서는 봇이 받고자 하는 값을 사용자 발화 안에 있는 엔티티를 통해서만 인지할 수 있는데, 이러한 엔티티를 칭하여, 새로운 파라미터로 정의합니다. (주요개념 > 파라미터 설정에서 더 상세하게 확인할 수 있습니다.) 이때, 되묻기 기능을 사용하기 위해서는 해당 파라미터를 ‘필수’로 표시하여 필수 파라미터로 설정해야 합니다. 아래 예시를 통해 커피를 주문하는 의도를 가진 블록에서 되묻기 기능을 활용하는 과정을 볼 수 있습니다.
필수 파라미터 설정하기
봇 작업자는 발화 ‘주문 할게요.’를 등록하였습니다. 그리고 해당 블록이 실행될 때 사용자 예상 발화 안에 커피 이름(CoffeeName) 과 수량(CupCount)을 필수 파라미터로 설정하였습니다. 이때 필수 파라미터 박스안에서 되묻기 질문 버튼이 활성화 된 것을 확인할 수 있습니다.
되묻기 질문이 필수 파라미터 설정을 통해 활성화 된 모습입니다. 되묻기가 정상적으로 끝나 필요 파라미터 값이 모두 수신되면 설정한 응답형식이 출력되는 형태입니다.
되묻기 질문 설정하기
되묻기 질문 버튼을 클릭하면 각 필수 파라미터에 값이 채워지도록, 사용자를 유도하는 되묻기 질문을 설정할 수 있습니다. 각 필수 파라미터에 대한 되묻기 질문 작성 예시는 다음 화면과 같습니다.
CoffeeName 파라미터를 얻기 위한 되묻기 설정 화면: 사용자가 주문할 커피 이름을 묻는 질문으로 구성되었습니다
CupCount 파라미터를 얻기 위한 되묻기 설정 화면 : 사용자가 주문하고자 하는 수량을 묻는 질문으로 구성되었습니다
되묻기 질문 팝업의 상세 메뉴 구성은 다음과 같습니다.
되묻기 질문 응답 : 되묻기 질문을 정의합니다. 총 3개까지 정의할 수 있고, 사용자에게 출력되는 허용횟수 안에서 무작위 순으로 출력됩니다.
: 되묻기 질문을 정의합니다. 총 3개까지 정의할 수 있고, 사용자에게 출력되는 허용횟수 안에서 무작위 순으로 출력됩니다. 바로 연결 응답 : 사용자가 되묻기 상황에서 입력할 파라미터 값을 직접 ‘바로 연결’ 버튼으로 클릭해 보낼 수 있도록 세팅합니다.
: 사용자가 되묻기 상황에서 입력할 파라미터 값을 직접 ‘바로 연결’ 버튼으로 클릭해 보낼 수 있도록 세팅합니다. 되묻기 허용 횟수 설정 : 되묻기 질문이 실행될 횟수를 선택합니다. 최대 허용 횟수가 끝나서 결국 원하는 파라미터값을 획득하지 못했을 때 봇이 사용자에게 출력할 안내 메시지를 정의합니다.
설정된 되묻기 질문 확인하기
모든 설정을 마친 후, 카카오톡 화면에서 최종 응답을 아래 화면과 같이 확인할 수 있습니다. 봇은 되묻기 질문을 통해 필수 파라미터 값인 커피이름 아메(아메리카노의 약자)와 커피수량 2를 수신받고 최종 응답을 출력하였습니다.
커피 주문 – 되묻기가 모두 실행된 카카오톡 사용자 화면
컨텍스트 사용하기
챗봇 관리자센터의 고급 기능 중에 하나인 컨텍스트를 손쉽게 쓸 수 있도록, 다음과 같이 세 가지 활용 방법을 안내합니다.
컨텍스트 조건 설정하기
먼저, 시나리오 > 블록 > 컨텍스트 설정에서 컨텍스트 명칭을 등록합니다. (설정 개수에는 제한이 없습니다)
컨텍스트 설정 선택 팝업 위치
다른 블록으로 컨텍스트를 내보낸다면, Output 컨텍스트에 명칭을 등록합니다.
Output 컨텍스트에 Ordering 이라는 컨텍스트 명칭을 등록중인 화면
다른 블록에서 내보낸 컨텍스트를 받는다면, Input 컨텍스트에 명칭을 등록합니다.
Input 컨텍스트에 Ordering 이라는 컨텍스트 명칭을 등록중인 화면
특히, Output 컨텍스트 부분은 봇 작업자들이 컨텍스트를 생성하여 연결할 때 가장 먼저 설정 작업을 하고, 주요 정보를 등록하는 중요한 공간입니다.
Output 컨텍스트를 등록할 때는 필수로 다음 세 가지를 입력해야 합니다.
컨텍스트 구성 값 의미 값 비고 컨텍스트 명칭 컨텍스트 내용을 설명하는 이름 컨텍스트 수명 컨텍스트가 지속되는 블록 횟수 0/1/3/5/10 (회) 끝나면 컨텍스트가 만료됩니다.
0은 즉시 만료됩니다.(초기화) 유효시간 컨텍스트가 지속되는 시간 1/3/5/10/15/30/60 (분) 끝나면 컨텍스트가 만료됩니다.
Output 컨텍스트의 수명 정보 설정 모습
Output 컨텍스트의 유효 시간 정보 설정 모습
컨텍스트 정보를 스킬 요청(request)에서 활용하기
컨텍스트에 담겨진 정보는 스킬 요청시에도 사용할 수 있습니다. 아래 화면과 같이 블록 안의 파라미터 만들기 메뉴 안에서 ‘값’ 입력란에, 원하는 컨텍스트와 파라미터 명을 다음 형식을 따라 참조할 수 있습니다.
파라미터 설정 안에서 파라미터 만들기 메뉴 안의 ‘값’ 설정 부분
형식
#[컨텍스트명].[파라미터명]
반드시 참조한 컨텍스트를 내보내는(Output) 블록이 존재해야 하며, 설정중인 블록에서 해당 컨텍스트를 받아야(Input) 합니다. 이처럼 블록 간 컨텍스트가 설정되어 있지 않다면, 컨텍스트와 파라미터명을 참조해도 동작하지 않습니다.
형식 예시
컨텍스트 정보를 스킬 응답(response)에서 활용하기
스킬 응답에서 ‘Output 컨텍스트’의 정보를 직접 업데이트 할 수 있습니다. 예를 들어 다음과 같은 스킬 응답 포맷이 있다고 하겠습니다.
{ “version” : “2.0” , “template” : { … }, “context” : { “values” : [{ “name” : …, “lifeSpan” : …, “params” : … },{ “name” : …, “lifeSpan” : …, “params” : … }, … ] } }
스킬 응답의 Structure 예시
다음처럼,
복수의 Output 컨텍스트들 중 특정 컨텍스트만 Output 되도록 변경할 수 있습니다. → name
컨텍스트의 수명(lifespan)을 변경할 수 있습니다. → lifeSpan
컨텍스트와 관련해 전달하고 싶은 값을 추가할 수 있습니다. → params
스킬 응답의 Output 컨텍스트에 들어있는 내용이 현재 블록의 Output 컨텍스트란에 존재하는 경우에는, 스킬에 들어있는 값으로 현재 Output 컨텍스트를 덮어쓰기합니다.
Information. 인풋(Input)으로 설정한 컨텍스트가 만료될 경우 해당 블록은 설정된 응답이 아닌 폴백 메시지로 응답하게 됩니다. 폴백 메시지가 설정되어 있지 않으면 빈 말풍선이 나가게 되므로 기본 시나리오> 폴백블록 에서 설정 상태를 확인해 주세요.
컨텍스트 갱신
스킬 응답으로 컨텍스트를 수정하는 경우, 변경하려는 output 컨텍스트가 미리 블록에서 설정되어야 합니다. 스킬 응답의 context 필드는 값을 수정할 뿐, 새로운 output 컨텍스트를 만들 수는 없습니다.
Example. 예를 들어 abc 라는 output 컨텍스트를 블록에서 생성했다면, 스킬 응답으로 abc name을 가지는 context의 lieSpan, params를 수정할 수 있습니다.
하지만 def 라는 output 컨텍스트를 블록에서 생성하지 않은 상황에서, 스킬 응답으로 def 라는 name을 가지는 context를 수정한다면 이는 반영되지 않습니다.
응답 타입별 JSON 포맷 > ContextControl
봇 학습시키기
학습대기에서 발화를 학습 하는 방법
Step 1. 학습대기 목록에서 블록에 매칭시킬 발화를 선택합니다.
학습대기 목록에 노출된 2018년 11월 14일에 들어온 폴백 발화들
학습대기 목록은 설정된 기간동안 들어온 폴백 발화들을 빈도가 높은 순으로 정렬하여 노출합니다.
Step 2. 발화 학습 상세화면에서 매칭 블록을 지정하거나 엔티티를 태깅 후 학습을 누릅니다.
학습대기목록에서 빠히바게트에서 빵이요 발화를 선택하고 엔티티 태깅 후 베이커리 주문 블록으로 연결
연결블록을 지정하지 않으면 무시만 가능하고 연결블록을 지정해야 학습 버튼이 활성화 됩니다.
Step 3. 학습한 발화는 매칭한 블록으로 등록되고 학습대기에서 학습이력으로 이동됩니다.
베이커리 주문 블록에 학습대기에서 매칭했던 빠히바게트 빵이요 발화 및 엔티티 추가된 화면
학습이력에서 학습시킨 발화는 학습이력으로 이동되고 업데이트일, 학습상태가 목록에 노출
학습이력에서 이미 학습한 발화를 변경하는 방법
Step 1. 이미 학습한 발화를 선택하기 위해 학습이력 목록을 들어갑니다.
11월 1일 에서 11월 15일까지 학습한 이력들
Step 2. 학습이력 목록에서 학습한 빠히바게트에서 빵이요를 선택하고 연결 블록을 변경합니다.
학습이력 팝업에서 빠히바게트에서 빵이요 발화가 베이커리 주문 블록에서 빠히바게트 블록 으로 변경된 화면
학습이력의 상세화면에선 선택한 발화를 업데이트 한 일시, 작업자ID가 표기되고 발화 연결블록과 엔티티 정보가 함께 노출됩니다. 학습이력에서 무시한 문장은 블록에 매칭될 경우 매칭되었던 블록에서 발화가 삭제되고 다시 폴백 블록으로 매칭되어, 사용자가 해당 발화를 다시 입력한 경우에도 학습대기 목록에 노출되지 않습니다.
Step 3. 변경한 발화는 기존 블록에서 삭제되고 매칭한 블록에 새롭게 등록됩니다.
빠히바게트에서 빵이요 발화가 베이커리 주문 블록에서 빠히바게트 블록 으로 변경된 화면
학습 대기 목록 필터링 하기
기간 변경
학습대기 에선 어제까지의 날짜, 학습이력에선 오늘을 포함한 어제 날짜를 선택할 수 있습니다.
기간 탭에서 어제를 선택하면 현재일 전날의 날짜가 지정됩니다. 학습이력에서 어제를 선택하면 어제부터 오늘까지의 날짜가 선택됩니다
날짜 탭을 선택하여 직접 조회할 날짜를 선택할 수 있습니다.
달력에서 날짜를 직접 지정할 경우 목록조회 시작 날짜와 종료 날짜를 지정할 수 있습니다. 설정할 수 있는 기간은 최대 30일 입니다.
검색필터 추가
학습대기 목록에서 검색필터를 추가하여 목록을 필터링 할 수 있습니다. 검색 필터 추가 버튼을 누른 후 텍스트 메뉴에서 발화포함 혹은 발화제외를 지정하면 검색할 단어(최대 12자)를 입력할 수 있습니다. 발화 값에서 발화빈도 혹은 빌화길이를 선택하면 일정 숫자 이상 혹은 이하의 숫자(최대 99,999,999)를 입력하여 필터링 할 수 있습니다.
학습대기에서 텍스트 검색필터 조건을 발화포함 으로 하고 아니 라는 단어를 입력
설정된 기간동안 발화에 아니 가 포함된 목록과 빈도
일반사용자 봇과 카카오톡 채널 연결하기
카카오톡 채널은 카카오톡 채널 관리자센터에서 생성하기
Step 2. 인증 및 이용약관 동의
Step 3. ‘새 채널 만들기’ 클릭
Step 4. 채널 정보 입력하기
Step 5. 채널 개설 완료
카카오톡 채널 연결하기
카카오톡 채널 연결은 봇 설정에서 간단하게 연결할 수 있습니다.
만약 채널 연결이 불가하다면 아래 내용을 확인하여 주시기 바랍니다.
봇은채널과 1:1의 구조로, 다른 봇에 채널이 연결되어 있을 경우 추가로 연결할 수 없습니다.
[카카오톡 채널관리자 센터 > 스마트채팅 > 채팅방메뉴]의 채팅방 메뉴 사용 설정이 ON으로 되었는지 확인 부탁드립니다. 채팅방 메뉴와 챗봇은 동시사용이 불가하므로, 채팅방 메뉴 사용 설정을 OFF로 하면 채널이 챗봇과 연결 가능한 상태로 변경됩니다.챗봇에선 마스터권한, 채널에서는 매니저 이상의 권한일 경우 연결 가능합니다.
Step 1. 설정 메뉴의 ‘카카오톡 채널 연결’ 영역으로 이동
Step 2. ‘운영 채널’의 선택 영역 클릭
Step 3. ‘개발 채널’의 선택 영역 클릭
지식 베이스 설정하기
지식 관리자센터에서 지식 베이스를 생성하여 질문과 답변 데이터를 관리하고 있다면, 봇과 연동할 수 있습니다. 지식 베이스란?
지식 베이스 설정
설정 메뉴의 지식 베이스 정보를 통해 봇 작업자는 지식 베이스를 설정할 수 있습니다. 봇 작업자는 자신이 마스터 권한으로 있는 지식 베이스를 선택하여 연동할 수 있습니다.
지식 베이스를 선택하고, 지식 베이스의 버전을 선택하는 방식은 2가지가 있습니다.
(1) 수동 선택한 버전을 사용
봇 작업자가 특정 버전을 선택하여 사용할 수 있습니다. 설정 후, 봇 배포를 해야 운영 채널에도 설정한 지식 베이스 버전이 반영됩니다.
(2) 최신 배포 버전을 사용
봇 작업자는 항상 지식 베이스의 최신 배포 버전을 사용할 수 있습니다. 단, ‘최신 배포 버전을 사용’ 설정 후에 봇을 배포해야 운영 채널에 해당 설정이 반영됩니다. 설정 후, 1회의 봇 배포 이후에는 별도의 봇 배포 없이도 운영 채널에 지식 베이스의 최신 배포 버전이 적용됩니다.
답변 출력 종류
지식 베이스를 설정하셨다면, 카카오톡에서 답변의 출력 형태를 정해야 합니다.
답변 출력 형태는 아래와 같이 3가지가 있으며, 용도에 맞게 답변 형태를 선택하시면 됩니다.
질의자의 질문형태에 가장 정확한 것으로 판단되는 답변하나만 전달하는 즉문즉답형
정확도순으로 Top3 유사질문 리스트를 보여주는 답안추천형
사용자가 스킬을 이용하여 자유롭게 답변을 구성하는 스킬형
답변출력 형태 예시 – (1) 즉문즉답형 (2) 답안추천형 (3) 스킬형
답변 출력 설정 방법
(1) 즉문즉답형 말풍선 설정
즉문즉답형 출력 말풍선에서는 다음의 3가지를 설정할 수 있습니다.
최소 답변 정확도 답변 제공의 기준이 되는 최소 정확도를 설정하는 영역입니다. 설정된 정확도 이상의 지식 베이스 답변을 제공합니다.
가이드 말풍선 답변이 제시되기 전에 안내문구를 꾸미는 영역입니다. 텍스트로 가이드문구를 넣어주거나, 또는 희망하시는 이미지를 넣어줄수 있습니다. 이 부분을 선택적으로 On/Off할수도 있습니다.
피드백 버튼 답변이 제공된후, ‘좋아요’ 또는 ‘나빠요’에 해당하는 사용자 피드백 버튼을 넣어줄수 있습니다. 이 부분도 선택적으로 On/Off할수 있습니다.
*참고. 피드백 버튼으로부터 누적된 결과를 바탕으로 답변 검색 로직을 강화하고, 분석 메뉴에서 블록별로 현황을 보여주는 feature가 향후 데이터 누적후 제공될 예정입니다.
(2) 답안추천형 말풍선 설정
답안추천형 출력 말풍선에서는 다음의 4가지를 설정할 수 있습니다.
가이드 말풍선 즉문즉답형에서 꾸미는 방식과 동일합니다. 답변 출력전 안내문구를 넣어주거나 이미지를 넣어줄수 있습니다.
답변설정 답안추천형에서는 사용자 질의 문장에 대해 유사한 것으로 판단되는 유사질문 Top3를 캐로셀 형태로 제공합니다. 이때, 봇작업자는 이미지를 첨부하여 카드형 말풍선으로 답변을 꾸밀수 있습니다.
<사용법 참고>
이미지가 필수로 들어가는 카드형 말풍선에서 봇 작업자가 기존에 저장해 둔 Q&A 지식 정보 세트 정보 중에서 image info (URL)에 해당하는 정보가 있다면 → 우선적으로 해당 image info 이미지가 보여집니다.
image info (URL)가 없다면 → 위에서 사용자가 파일로 업로드한 이미지가 디폴트로 출력됩니다. 예시로, 추출된 Top3 유사질문 리스트에서, 1개만 image url 정보가 있었고 2개는 image url정보가 없었다면, 해당 2개의 이미지는 봇 작업자가 여기 말풍선 상세 메뉴에서 업로드 해 둔 디폴트 이미지가 출력되는 것입니다.
버튼명 설정 답변을 보기 위한 버튼에 대해 ‘버튼명’을 정의할수 있습니다.
피드백 설정 답변이 제공된후, ‘좋아요’ 또는 ‘나빠요’에 해당하는 사용자 피드백 버튼을 넣어줄수 있습니다. 선택적으로 On/Off할수 있습니다.
(3) 스킬형형 말풍선 설정
스킬형을 선택하면 발화가 지식 베이스의 질문에 일치하는 경우, 스킬 payload를 통하여 지식의 목록과 정보가 전달됩니다.
스킬형 출력 말풍선에서는 다음의 2가지를 설정할 수 있습니다.
스킬 설정 지식 정보를 전송할 스킬을 선택할 수 있습니다. 스킬 선택을 위해서는 ‘스킬’ 메뉴에서 스킬을 등록해야 합니다.
최소 답변 정확도 답변 제공의 기준이 되는 최소 정확도를 설정하는 영역입니다. 설정된 정확도 이상의 답변 정보를 제공합니다.
SkillPayload
스킬 payload는 스킬 실행시 봇 시스템이 스킬 서버에게 전달하는 정보입니다. payload는 사용자의 정보, 발화, 실행 블록, 파라미터 등의 정보를 포함합니다.
intent
userRequest
bot
action
intent
발화와 일치하는 블록의 정보를 담고 있는 필드입니다. 발화가 지식 베이스 질문과 일치하는 경우, 일치하는 지식의 목록을 포함합니다.
상세필드
이름 타입 설명 id string 블록 id입니다. name string 블록명이며, 지식의 경우 “지식+”로 노출합니다.
상세필드
이름 타입 설명 matchedKnowledges array 발화에 일치한 지식 목록입니다.
knowledge
상세필드
이름 타입 설명 answer string 지식의 답변입니다. question string 지식의 질문입니다. categories array QA의 카테고리입니다. landingUrl string 지식 답변에서 링크 더보기입니다. imageUrl string 답안 추천형 지식 답변에서 썸네일 이미지입니다.
에제 코드
{ “bot” : { “id” : “<봇 id>” , “name” : “<봇 이름>” }, “intent” : { “id” : “<블록 id>” , “name” : “지식+” , “extra” : { “reason” : { “code” : 1 , “message” : “OK” }, “knowledge” : { “responseType” : “skill” , “matchedKnowledges” : [ { “categories” : [ “<카테고리 1>” , “<카테고리 2>” , “<카테고리 3>” , “<카테고리 4>” ], “question” : “<질문>” , “answer” : “<답변>” , “imageUrl” : “<이미지 url>” , “landingUrl” : “<랜딩 url>” }, { “categories” : [ “<카테고리 1>” , “<카테고리 2>” , “<카테고리 3>” , “<카테고리 4>” ], “question” : “<질문>” , “answer” : “<답변>” , “imageUrl” : “<이미지 url>” , “landingUrl” : “<랜딩 url>” } ] } } }, “action” : { “id” : “<액션 id>” , “name” : “<액션 이름>” , “params” : {}, “detailParams” : {}, “clientExtra” : {} }, “userRequest” : { “block” : { “id” : “<블록 id>” , “name” : “<블록 이름>” }, “user” : { “id” : “<사용자 botUserKey>” , “type” : “botUserKey” , “properties” : { “botUserKey” : “<사용자 botUserKey>” , } }, “utterance” : “<사용자 발화>” , “params” : { “surface” : “BuilderBotTest” , “ignoreMe” : “true” }, “lang” : “kr” , “timezone” : “Asia/Seoul” }, “contexts” : [] }
패턴발화가 등록된 블록과 연계한 응용 활용 방법
사용자 질의에 응대하기 위해 이미 패턴발화를 블록에 수없이 등록했는데, 본 메뉴에서도 지식정보 Q&A 세트를 또 업로드해서 사용할 수 있는 것인가요? 두 개 메뉴에 해당하는 기능을 동시에 사용할 수 있나요?
물론입니다.
패턴발화를 등록한 블록들과, 지식 베이스 설정에 대한 ‘배포’ 과정을 통해 하나의 봇을 만들수 있습니다. 단, 이때에는 사용자 질의에 대해, 우선적으로 패턴발화를 등록했던 블록 중에서 정확하다고 판단되는 블록이 선택되어 그에 연결된 답변이 출력됩니다.
만약 사용자 의도가 추출이 되지 않는 질문이라고 하면 그 다음에 순차적으로 지식 베이스에서 유사 질문이 검색되어 연결된 답변이 출력됩니다. (즉, 챗봇이 질문을 이해하지 못하여 ‘폴백’ 메시지를 내놓을수 있는 확률이 줄어듭니다.)
그러므로, 봇작업자께서는 보다 중요하고 의미있는 질문들을 처리하기 위한 내용들은 시나리오 메뉴의 ‘블록’들을 통해 답변 작성을 해두시고, 이외 기타 수많은 형태의 질문-답변 세트는 지식 베이스에 업로드하면, 사용자 질의에 대해서 보다 답변 응대력이 향상된 봇을 만들수 있습니다.
Tip. 시간이 없고, 무조건 빨리 시일내 가장 기본적인 봇을 만들려고 한다면, 시나리오에 블록을 만들지 않고서도, 지식 베이스 설정으로 ‘간단 답변 검색형’ 봇을 만들수도 있습니다..
머신러닝 사용하기
머신러닝을 사용하여 똑똑한 챗봇을 만들기 위해서는 크게 4가지 단계를 거쳐야 합니다. 그럼 아래에서 하나씩 살펴볼까요?
머신러닝 발화 입력
머신러닝을 하기 위해서는 머신러닝 발화가 필요합니다. 그리고 머신러닝 발화를 입력하는 방법은 아래 3가지가 있습니다.
Step 1. 직접 입력
우선 머신러닝 발화를 직접 입력하는 방식이 있습니다. 이 방식을 사용하기 위한 방법은 아래와 같습니다.
1.1 블록 상세에서 머신러닝 발화 관리 버튼을 눌러주세요.
1.2 머신러닝 발화 관리 팝업에서 머신러닝 발화를 입력해주세요.
Step 2. 패턴 발화 복사
머신러닝 발화를 따로 입력하시는게 귀찮고, 번거로우시다면 패턴 발화에 입력된 발화를 복사하여 머신러닝 발화에 붙여넣는 기능이 있습니다. 패턴 발화와 머신러닝 발화를 따로 관리하지 않아도 된다는 것이 장점인 기능입니다. 사용 방법은 아래와 같습니다.
2.1 머신러닝 발화 관리 팝업에서 ‘패턴 발화를 머신러닝 발화로 복사’ 기능을 ON으로 바꿔주세요.
2.2 패턴 발화가 머신러닝 발화로 복사된 것을 확인하실 수 있습니다.
Caution. 패턴 발화 복사는 최신 입력순으로 최대 2000개 까지만 복사됩니다.
까지만 복사됩니다. 기능을 해제하면 복사되었던 모든 패턴 발화가 삭제됩니다.
Step 3. 업로드
혹시 서비스를 위한 사용자 예상 발화를 엑셀로 관리하고 계셨나요? 많은 발화를 한번에 업로드할 수 있는 방식도 있습니다. 사용법은 아래와 같습니다.
3.1 머신러닝 발화 관리 팝업에서 기능탭의 ‘파일 업로드’를 눌러주세요.
3.2 utf-8로 인코딩된 CSV로 발화를 업로드해주세요. 샘플 파일 받기
Caution. 업로드 파일은 CSV utf-8 만 지원합니다. 샘플 파일 받기
만 지원합니다. 샘플 파일 받기 업로드는 한번에 최대 2000개까지 지원합니다.
머신러닝 발화 작성 시, 똑똑한 챗봇을 만들기 위한 몇 가지 팁을 다음과 같이 알려드립니다.
TIP 서술어를 다양하게 쓰기
예) 노래 틀어줘 , 노래 불러봐 , 노래 시작 등 엔트리를 다양하게 쓰기
예) 아이유 노래, 방탄 노래, 너바나 노래, 스탄 게츠 노래 등 어순을 다양하게 쓰기
예) 노래 틀어줘, 틀어줘 노래 등
Caution. 동일한 서술어, 어순, 엔트리를 많이 입력할 경우, 오버피팅 현상이 발생하여 챗봇의 인탠트 구분 정확도가 떨어질 수 있습니다.
머신러닝 실행
머신러닝 발화를 모두 입력했다면 이제 학습 모델을 만들기 위하여 머신러닝을 실행하셔야 합니다! 그 전에 머신러닝을 실행하기 위한 조건이 충족되었는지 확인 한 번 해볼까요?
머신러닝 실행 조건은 아래와 같습니다
(1) 2개 이상의 머신러닝 대상 블록
(2) 각 블록당 패턴 발화 1개 이상, 머신러닝 발화 20개 이상 존재
만약 실행 조건을 충족시키셨다면 실행 방법은 간단합니다. 아래를 참조해주세요.
오른쪽 상단의 머신러닝 실행 버튼을 눌러주세요.
머신러닝 대상 블록과 예상 소요 시간을 확인하고, ‘실행’ 버튼을 눌러주세요.
머신러닝 예상 소요 시간을 확인할 수 있으며, 예상 소요 시간이 길 경우에는 ‘확인’ 버튼을 눌러 머신러닝 진행과 병행하여 작업을 할 수 있습니다.
성능 테스트 및 최소 답변 정확도 조절
한 번의 머신러닝 실행이 끝났다고 챗봇이 완벽해지기는 힘듭니다. 그래서 학습 모델의 완성도를 측정하기 위해 테스트를 진행해야 합니다.
테스트를 위해서는 우선 테스트 발화 세트를 구성해야합니다. 구성 방법은 아래와 같습니다.
기존의 패턴 발화, 머신러닝 발화에 입력된 발화 말고, 새로운 발화를 모읍니다. 간단한 발화로 작동하는 블록은 5~10개, 복잡한 발화로 작동될 수 있는 블록은 20~30개정도를 준비합니다.
테스트 발화가 준비되었다면, 이제 챗봇에 테스트 발화를 입력하시면 됩니다.
테스트를 진행해보면 발화를 입력하고 연결된 블록이 적절하지 않거나, 틀린 경우가 발생할 수 있습니다. 이럴 경우에는 최소 답변의 정확도를 설정하여 정확도가 낮은 발화에 대해 블록이 연결되지 않게 설정할 수 있습니다.
최소 답변 정확도 설정은 ‘머신러닝’ 페이지에서 할 수 있으며, 설정값이 높을수록 정확도가 높은 발화에 대해서만 블록을 연결합니다.
최소 답변 정확도 답변 제공의 기준이 되는 최소 정확도를 의미합니다. 예를 들어, 최소 답변 정확도가 100이라면 정확도가 100인 답변만 제공하며, 최소 답변 정확도가 60이면 정확도가 60 이상인 경우에만 답변을 제공합니다.
머신러닝의 최소 답변 정확도는 머신러닝 페이지에서 설정이 가능하며, 지식+의 최소 답변 정확도는 즉문즉답형 응답에서 설정할 수 있습니다.
오매칭 발화 추가 입력
챗봇이 모든 테스트 발화에 제대로 작동하나요? 만약 생각보다 정답률이 낮다면 아래의 방법으로 챗봇을 튜닝해주세요.
오매칭 발화와 비슷한 발화를 머신러닝 발화에 입력 오매칭 발화를 패턴발화에 입력
이 방법을 반복하시면, 정말 똑똑한 봇을 만드실 수 있습니다!
Event API 사용하기
Event API 사전 설정
Event API 메시지를 발송하기 위해서는 다음과 같은 사전 설정이 필요합니다.
Step 1. 비즈니스 인증 채널과 디벨로퍼스 앱 연결하기
비즈니스 인증을 받은 채널과 비즈니스 인증을 받은 앱을 연결해야 합니다. 비즈니스 인증 채널을 신청하실 때에는 실제 서비스에서 사용할 카카오톡 채널로 신청해야 합니다.
Caution 이 때 디벨로퍼스 앱 사용자 설정에서 “카카오 로그인 활성화” ON 필수입니다.
봇을 제작하는 마스터가 카카오톡 채널 관리자센터에서 비즈 카카오톡 채널 인증을 받고 카카오 디벨로퍼스에서 비즈앱 인증을 각각 받습니다. 그리고 카카오비즈니스 관리자센터에서 위에서 만든 비즈니스 인증 채널 및 비즈 앱을 연결해줍니다. 카카오비즈니스 관리자센터 > 카카오싱크 신청 1단계: 채널-앱 연결하기 화면
Step2. 챗봇 관리자센터에 카카오톡 채널 연결하기
Event API를 사용하기 위해서는 챗봇 관리자센터에 카카오톡 채널 연결해야 합니다.
(운영채널과 개발채널 모두 Event API 발송을 지원하나 개발채널의 경우 이벤트 블록 호출 API url 내 파라미터값의 형태가 다릅니다. 자세한 내용은 개발가이드를 참고해주세요.)
챗봇 관리자센터 내 Event API 설정
챗봇이 건낼 수 있는 다양한 메시지 중 정확히 어떤 메시지(블록)를 전송할 지 정의해야 합니다. 이를 정의하기 위해서는 해당하는 블록 내에서 이벤트 이름을 설정하는 과정이 필요합니다.
블록 > […] > 이벤트 설정 > 이벤트 설정 팝업 에서 이벤트 이름을 작성한 뒤 엔터를 누르고 확인 버튼을 눌러주세요.
광고성 내용 포함
발송하려는 메시지가 광고성 내용을 포함하는 경우 이벤트 설정 팝업의 “광고성 내용 포함” 토글을 ON해야 합니다. 자세한 내용은 Event API 광고표시 의무 를 확인해주세요.
이벤트 이름은 중복되어 저장될 수 없습니다. 동일 봇에서 동일 이벤트명을 사용 중인 경우, 다음과 같은 경고 알림이 노출됩니다.
Event API 를 설정한 블록에서는 필수 파라미터를 지원하지 않습니다. 필수 파라미터가 설정된 경우, Event API 메시지가 발송되지 않으니 주의해주시길 바랍니다.
챗봇 관리자센터에서 Event API 설정 및 시나리오 수정을 완료한 뒤에는, 배포를 완료해야 Event API 메시지 발송이 가능합니다.
Event API 광고표시 의무
한국 인터넷 진흥원 광고표시 가이드
한국 인터넷 진흥원에서 배포한 불법 스팸 방지를 위한 정보통신망법 안내서에 따라 광고성 메시지 작성 시에는 하기 가이드를 준수하여야 합니다. 아래 내용을 참고하여 발송할 메시지가 광고성 내용을 포함할 경우, 말풍선 설정에서 광고성 내용 포함을 체크해야 합니다.
한국 인터넷 진흥원 광고표시 가이드
1. 광고표시 광고성 내용이 포함된 메시지 맨 앞에 (광고)를 표시해야 합니다.
광고성 메시지에 대한 판단 기준
1)특가/할인 상품 안내
2)상품 및 서비스 홍보를 위한 프로모션 또는 이벤트
3)정보를 ‘주’로 나타내더라도 [위 1,2]의 내용이 혼재된 경우
2. 전송자의 연락처 표시 의무사항
전송자의 명칭, 전송자 연락처는 메시지 본문보다 상단에 작성되어야 합니다.
전송자 명칭과 전송자 연락처의 경우 채팅방 상단에 노출됩니다.
연락처의 경우 전화번호 또는 주소 중에서 하나를 선택하여 기입해 주셔야 합니다.
3. 수신거부 의사표시를 쉽게 할 수 있는 조치 및 방법 표시 의무사항 메시지에 수신의 거부 및 수신동의 철회의 의사표시를 쉽게 할 수 있는 조치 및 방법을 광고 본문에 표기하여 구체적으로 밝혀야 합니다. 동 조치 및 방법으로 수신의 거부 또는 수신동의 철회가 쉽게 이루어지지 않거나 불가능 할 경우에는 이를 표기하지 않는 것으로 간주합니다.
전자우편을 수신 거부하기 위하여 웹사이트에 로그인하도록 하는 등 별도의 추가적인 조치를 거쳐야 하는 것은 수신의 거부 또는 수신동의 철회를 어렵게 하는 것으로 법 위반에 해당합니다.
챗봇 관리자센터 광고성 메시지 전송 정책
챗봇 관리자센터 챗봇을 이용해 Event API를 사용하여 광고성 메시지 발송 시 한국 인터넷 진흥원의 광고표시 가이드에 따라 다음 정책을 지켜야 합니다.
광고성 메시지 전송 정책 광고성 메시지 발송이 가능한 시간은 오전 8시 ~ 오후 8시 50분 입니다. 광고성 메시지는 톡채널과 친구를 맺은 사용자에게만 발송이 가능합니다. 카카오톡 채널 채팅방 상단에 고객센터 연락처를 노출해야 합니다.
위 세 가지 중 한 가지라도 위반하는 경우 Event API 메시지 발송이 실패합니다.
3번 카카오톡 채널 채팅방 상단 고객센터 연락처 설정은 카카오톡 채널 관리자 센터에서 할 수 있으며 방법은 다음과 같습니다.
[채널 > 관리 > 상세설정 > 채널정보 > 고객센터 연락처] 에서 고객센터 연락처를 작성한 뒤 확인 버튼을 눌러 저장합니다.설정이 완료되면 채널 채팅방 내 프로필명 아래에 다음과 같이 고객센터 전화번호가 노출됩니다.
사용자가 알림을 신청을 한 경우에 보내는 정보는 광고성 메시지에 해당되나요?
‘고객의 요청에 의해 발송하는 1회성 정보’의 경우, 영리목적 광고성 정보의 예외 사유에 해당되어 광고표시 가이드 제한 없이 발송할 수 있습니다.
다만, 사용자의 요청이 있었다고 하더라도 1회가 아닌 지속적인 발송은 광고성 정보의 예외 사유에 해당하지 않아 광고표시 가이드를 준수하여 (광고 표시를 하여) 메시지를 전송해야 합니다.
Event API 활용 예시를 살펴보면, 정보성 메시지 예시의 3)재입고 알림 시나리오는 ‘고객의 요청에 의해 발송하는 1회성 정보’에 해당하여 광고표시 가이드 제한 없이 발송이 가능합니다
그러나, 광고성 메시지 예시의 2)관심상품 알림 시나리오의 경우, 1회가 아닌 해당 카테고리에 포함된 제품에 대해 지속적으로 메시지를 발송하는 경우에 해당하여 광고표시 가이드를 준수하여 Event API 메시지를 발송해야 합니다.
챗봇 관리자센터 광고성 메시지 설정 방법
광고성 메시지를 Event API로 전송하기 위해서는 챗봇 관리자센터에서 다음과 같은 설정이 필요합니다.
블록상세 > […] > 이벤트설정
2)이벤트설정>광고성 내용 포함 ON
광고성 내용 포함 설정 팝업 확인
광고성 내용을 포함하는 Event API 메시지는 다음과 같은 말풍선 형태에서만 발송 가능합니다.
광고성 메시지 말풍선 사용 정책
Event API를 사용하여 광고성 메시지를 전송하고자 하는 경우 해당 메시지는 아래 요건을 준수하여야 합니다. Skill응답 생성 시 아래 요건을 만족하지 않는 메시지는 발송되지 않습니다.
광고성 메시지는 말풍선 1개만 포함하여야 합니다.
광고성 메시지로 발송 가능한 말풍선 타입은 아래와 같습니다.
a. 커머스 (CommerceCard)
b. 카드 (BasicCard)
c. 리스트 (ListCard) (단일형만 지원)
d. 아이템형 (itemCard) (스킬 형태로만 지원하는 말풍선입니다)
단일형이 아닌 말풍선을 연속적으로 사용하는 케로셀형 사용 시, 케로셀 헤드가 설정되어야 합니다.
광고성 내용 포함 설정 ON 시, 챗봇 관리자센터에서는 다음과 같이 작성가능한 봇 응답 개수는 3개에서 1개로 변경되며 사용 가능한 말풍선 타입은 카드, 커머스, 리스트, 스킬데이터로 변경됩니다.
광고성 내용 포함 설정이 정상적으로 적용되어 Event API 메시지가 발송되면 다음과 같이 말풍선의 채널명 왼쪽에 (광고)가 노출되며, 말풍선 우측 하단에 수신거부 방법이 표기되어 발송됩니다.
수신거부 방법 표기는 말풍선이 단일형인 경우 해당 말풍선에, 말풍선이 케로셀형인 경우 케로셀헤드에 표기되어 발송됩니다.
Event API 개발 가이드
이벤트 블록 호출 API
앞의 사전설정이 모두 완료되었다면, 이벤트 블록 호출 API를 통해 이벤트 블록을 실행해 카카오톡 채널로 메시지를 전송할 수 있습니다.
Request
POST https://bot-api.kakao.com/v2/bots/{botId}/talk
운영채널로 Event API 발송 시 : botid
개발채널로 Event API 발송 시 : botid!
Request Header
Authorization: KakaoAK {Rest Api Key} Content-Type: application/json
해당 rest api key 는 https://developers.kakao.com 에서 생성한 앱의 앱키 중 REST API 키 로 보내주셔야 합니다.
Request Payload
키 설명 타입 필수여부 event 봇 이벤트 정보 JSON object O user 유저 정보 JSON object O params event param (skill 서버까지 전달) JSON object X option Event API 사용 특수 옵션 JSON object X
1. event (JSON object)
event name은 챗봇 관리자센터 > 블록상세 > 이벤트 설정에 정의한 이름과 동일해야 합니다.
키 설명 타입 필수여부 name 봇 이벤트 정보 string O data 봇 이벤트 Custom parameters JSON(
) X 챗봇 관리자센터의 봇 응답형식 설정(말풍선 설정)에서 event >data 의 파라미터 값을 텍스트 영역에 사용할 수 있습니다. {{#current.event.data.paramName}}을 말풍선에 넣어서 사용할 수 있습니다.
2.user (JSON array of objects)(max.100)
이벤트를 발송할 대상 유저들에 대한 정보입니다. 유저 id 는 중복은 허용되지 않으며, list 의 size max (요청 한번당 최대 발송 건수)는 100개 입니다. 톡채널 정책 상 Event API는 친구관계인 경우에만 메시지를 전송할 수 있으므로, 톡채널과 해당 유저가 친구관계가 아닐 경우 전송은 실패합니다.
유저 아이디 타입은 appUserId (카카오 디벨로퍼스 앱유저 아이디), plusfriendUserKey (skill서버에 전달되는 톡채널 유저 식별값), botUserKey (skill 서버에 전달되는 봇 유저 식별값) 중 하나여야 합니다.
유저 별로 추가적으로 skill 서버에 전달할 데이터가 있을 경우 properties 필드에 담긴 값이 skill payload 의 userRequest.user.properties 필드에 포함되어 전달됩니다.
키 설명 타입 필수여부 type 유저 아이디 타입 (아래 값 중 하나)
– appUserId
– plusfriendUserKey
– botUserKey String O id 유저 아이디 값 String O properties 유저 별 추가 페이로드 JSON(
X 3.params (JSON object)
params의 경우에는 type 에 제한이 없으면 skill server까지 값이 그대로 전달되며, skill 서버에서는 request body 의 userRequest -> params 로 그 값을 전달받을 수 있습니다.
챗봇 관리자센터의 봇 응답형식 설정(말풍선 설정)에서 params 의 파라미터 값을 텍스트 영역에 사용할 수 있습니다. {{#current.params.paramName}}을 말풍선에 넣어서 사용할 수 있습니다.
Request Body Sample
{ “event” : { “name” : “bot_test_event” , “data” : { “text” : “Hello World” } }, “user” : [ { “type” : “botUserKey” , “id” : “12345” }, { “type” : “botUserKey” , “id” : “12346” } ], “params” :{ “foo” : “bar” } }
Response
Response Body
결과가 SUCCESS 가 아닐 경우 아래의 GET API 이벤트 발송 성공여부 조회가 되지 않습니다.
status의 SUCCESS는 ‘요청’에 대한 성공/실패 결과값으로 실제 사용자에게 메시지가 발송되었는지 여부는 아래 이벤트 발송 성공여부 조회 API를 통해 확인할 수 있습니다.
키 설명 타입 필수여부 taskId 해당 리퀘스트에 대한 uuid ( 결과조회를 위한 Id ) String O status one of [“SUCCESS”, “FAIL”, “ERROR”] String O message 상태에 대한 세부 메시지 String X timestamp task 생성 unixtimestamp long O
1.status
STATUS message SUCCESS FAIL ~~~ ERROR ~~~
Request Sample
curl -v -X POST https://bot-api.kakao.com/v2/bots/5b3c85911073e946641ebb6d/talk \ -H ‘Authorization: KakaoAK {kakao developers rest api key}’ \ -H ‘Content-Type: application/json’ \ -d $'{ “event”: { “name”: “home” }, “user”: [ {“type”: “botUserKey”, “id”: “12345”}, {“type”: “botUserKey”, “id”: “12346”} ] }’
※ cURL을 사용하여 개발채널에 이벤트 메시지를 발송하는 경우, {botid!}에 그냥 !만 붙이면 에러가 나기 때문에 다음과 같이 botid 전체를 ‘ ’ 로 감싸줘야 합니다.
POST https://bot-api.kakao.com/v2/bots/’5b3c85911073e946641ebb6d!’/talk
이벤트 발송 성공여부 조회 API
이벤트 발송 결과를 조회하는 API 입니다. 위의 이벤트 블록 호출 API 응답에 있는 status 값이 SUCCESS 일 경우에만 조회가 가능합니다.
Request
GET https://bot-api.kakao.com/v1/tasks/{taskId}
키 설명 타입 필수여부 taskId talk POST 요청 response의 taskId String O
Request Header
Authorization: KakaoAK {Rest Api Key} Content-Type: application/json
해당 rest api key 는 https://developers.kakao.com 에서 생성한 앱의 앱키 중 REST API 키 로 보내주셔야 합니다.
Response
Response Body
POST api 호출 결과가 SUCCESS 가 아닐 경우 결과 조회가 되지 않습니다.
키 설명 타입 필수여부 taskId 실행 결과를 조회하고자 하는 taskId String O status one of [“ALL SUCCESS”, “N FAIL”]
(N: Fail count) String O allRequestCount 전체 요청 횟수
(POST request시 user.ids의 size와 동일) int O successCount 성공적으로 처리된 요청 횟수 int O fail 실패 결과에 대한 정보 JSON Object X(status = “ALL SUCCESS”가 아닌 경우 필수)
1.fail
처리 결과 실패로 끝난 요청에 대한 정보
키 설명 타입 필수여부 count 처리 결과 실패 건 수 int O list 실패 요청에 대한 정보 JSON Object O
2.list
키 설명 타입 필수여부 userId 실패 처리된 userId String O reqUserType 실패 처리된 userId의 종류 String O createdAt 실패 처리된 시각 String O errorMsg 실패 처리된 원인 String O
fail>list>errorMsg 케이스
errorType msg 설명 비고 2 Request user is not a friend of talk channel’s 채널 추가하지 않은 유저 ※ 각 설명에 따라 수정해주세요 (채널추가하지 않은 유저에게는 Event API 메시지 발송이 불가능합니다)
※ 6번 말풍선 제한정책 위반의 경우, 말풍선 도움말 내 제한 및 유의사항을 참고하여 json format을 수정해주세요 6 Invalid skill-json format json format error 혹은 말풍선 정책 위반 99 Invalid parameter format. 주로 json parsing error 104 Skill server returns http error code response. Bot skill server의 에러 응답 ※ 스킬서버 문제일 가능성이 높은 에러 로, 스킬서버 내 이슈가 없는지 먼저 확인해주세요 201 Skill server returns http error code response. Skill server Http 실패 202 Connection to skill server timed out. Skill server 타임아웃 204 Skill server returns http error code response. Block Validation Http 실패 101 Internal server error occured. 봇 내부 통신 에러 ※ 봇 내부 통신 에러일 가능성이 높은 케이스로, 스킬서버 등 이슈가 없는지 확인 후 문의해주세요 102 103 301 501 503 999
월렛 설정하기
우측 상단 계정 레이어 에서 ‘내 월렛’을 선택하여 월렛 화면으로 진입할 수 있습니다. 월렛 화면에서는 월렛을 생성하고 관리할 수 있으며, 월렛을 생성한 사람에게는 자동으로 월렛 마스터 권한이 부여됩니다.
나의 월렛 목록 화면
사업자 월렛 생성하기
Step 1. 월렛 생성 버튼 클릭
내 챗봇 월렛 목록 우측 상단에서 ‘새로운 월렛 생성’ 버튼을 클릭합니다.
Step 2. 유형 선택
월렛 유형 선택시 사업자 월렛을 선택 후 다음 버튼을 클릭합니다.
Step 3. 사업자등록번호 입력
정보입력 단계에서 사업자등록번호를 입력 후 확인 버튼을 클릭합니다.
이미 카카오 서비스에서 비즈니스 채널 인증 등을 통해 비즈니스 정보를 등록한 경우 아래와 같이 조회됩니다.
신규 등록이라면 사업자 이름, 대표자 이름, 업태, 종목, 사업자 주소를 필수로 입력 후 다음 버튼을 클릭합니다.
Step 4. 월렛 이름 입력
원하는 월렛 이름을 입력 후 저장을 클릭해 월렛 생성을 완료합니다.
사업자 월렛으로 생성하는 경우, 아래 기능을 추가로 이용할 수 있습니다.
무통장 입금을 통해 유상캐시를 충전할 수 있습니다.
세금계산서가 발급됩니다.
개인 월렛 생성하기
Step 1. 내 챗봇 월렛 목록 우측 상단의 새로운 월렛 생성버튼 클릭
Step 2. 유형 선택시 ‘개인 월렛’ 선택
Step 3. 본인 확인
‘본인 확인’ 버튼 클릭시 챗봇 관리자센터에 로그인한 카카오 계정을 통해 본인 확인이 자동으로 완료됩니다.
개인정보가 올바르게 입력되어 있는지 확인 후 개인정보 수집 및 이용에 동의합니다. 필수로 동의해야 월렛을 생성할 수 있습니다.
Step 4. 월렛 이름 입력
원하는 월렛 이름을 입력 후 저장을 클릭해 월렛 생성을 완료합니다.
봇과 월렛 연결하기
50,000 건의 무료 사용 구간에서는 월렛 연결 없이도 기존과 동일하게 이용할 수 있으나, 유료 사용 구간 진입시 요금 납부를 위해서 챗봇과 월렛을 필수로 연결해야 합니다. 월렛은 채널 연결과 마찬가지로 봇 설정 메뉴를 통해 연결할 수 있습니다. 설정 메뉴에 추가된 ‘지불 정보’ 탭에서 월렛을 연결하거나 연결된 월렛 정보를 확인할 수 있습니다. 생성된 월렛을 연결하는 방법은 아래와 같습니다.
Step 1. 월렛 연결하기 버튼 클릭
봇 설정 > 지불 정보 탭에서 ‘월렛 연결하기’ 버튼을 클릭합니다.
월렛 미연결 상태라면 월렛 작업 권한을 가진 모든 챗봇 작업자는 본인이 생성한 월렛을 챗봇에 연결할 수 있습니다. 만일, 월렛 작업 권한을 보유하지 않은 작업자는 지불 정보 탭을 확인할 수 없습니다.
Information.
‘새 월렛 만들기’ 버튼을 이용해 나의 월렛 목록을 이동하지 않고도 월렛을 생성할 수 있습니다.
Step 2. 연결할 월렛 선택
연결하고자 하는 월렛을 선택 후 확인 버튼을 클릭합니다. 이때, ‘연결 대기중’ 상태의 월렛만 챗봇에 연결할 수 있습니다.
Step 3. 연결된 월렛 정보 확인
월렛 연결이 완료되었다면, 월렛 작업 권한을 보유한 모든 작업자가 지불 정보 탭에서 연결된 월렛 정보를 확인할 수 있습니다.
월렛 이름, 영업권, 캐시 잔액 클릭시 곧바로 상세 화면에 진입할 수 있습니다.
‘내 챗봇’ 목록에서도 봇과 연결된 월렛 정보를 한 눈에 확인할 수 있습니다.
카카오톡 봇 만들기 – 1 – 간단 설명
이 시리즈의 목적은
특정 채팅에 반응해서 대답하는 봇을
카카오톡 단톡방에 추가하는것이다
모든 기본 정보는 앱 제작자 다크토네이도 블로그에서 얻었으니
더 자세한 정보를 원하는 경우 꼭 방문해보길 바란다
앱 종류는 몇개 더 있으나 일단은 초보자도 쓰기쉬운 다크토네이도님 앱으로 진행하겠다
먼저 앱이 어떤식으로 돌아가는지 설명
( 제작자 블로그 글에 더 자세히 나와있으니 이해가안가면 참고하시길 )
간단하게 말하자면, 카톡 부계정을 만들어서 봇처럼 쓰는것이다
친구를 단톡방에 초대하듯이, 단톡방에 카톡 부계정을 초대해서 쓸수있다
카카오톡 플러스 친구를 이용하는게 아니다 !
나는 봇을 친구들끼리 모여있는 단톡방에 초대해서 쓰고싶었는데,
카카오톡 봇을 검색해보면 자꾸 플러스친구를 만드는법이 나와서 짜증났다
이방법은 그렇지않다, 그래서 딱 내 요구사항에 맞았다
( 하지만 은근히 귀찮은 세팅을 해야하는데 그건 다음 글부터 적겠다 )
봇은 서버개념으로 생각하면된다
만약 이 봇을 24시간 쓰고싶다면 nox나 스마트폰 공기계를 서버처럼 24시간 켜놔야한다
작동방식은
카카오톡 “상단의 알림을 읽어온다음” 그걸 바탕으로 답장을 보내는것이다
굉장히 중요한 포인트기때문에 빨간색으로 표시했다
아마 카카오톡봇이 작동하지않는 이유중 대다수는 알림이 오지않았기 때문일것이다
작동방식이 저렇기때문에 봇의 카카오톡 알림을 꺼놨거나, 카톡방을 보고있어서 알림이 오지않으면 답장을 못한다
중요하니까 꼭 기억하고있어야하는 포인트.
봇이 답장을 할때는 “안드로이드 웨어” 앱을 이용해야하는데 나중에 설치할것이다
그리고 추가적으로 안드로이드 버전이 너무 낮을경우 작동하지않는데
이건 웬만하면 해당되지않기때문에 설명은 생략하겠다 제작자블로그에 가보면 자세히 나와있으니 참고
그외에 귀찮고 많은 준비가 필요하니까 잘 따라오길 바란다
개인적으로 카톡봇 전용 구글이메일 새로 만드는것을 강력추천
카카오톡 챗봇 만들기(Javascript)
반응형
파이썬으로 제공되는 해당 코드로 카카오톡 챗봇을 만들었었는데 자꾸 영정을 먹었다(이거로 본계도 영정먹어서 탈퇴하고 고생함 ㅠ)
이게 로코프로토콜을 써서 만든건지 뭔진 모르겠는데.. 안전한 방식으로 찾기로 하였다.
그래서 대안을 찾아보니 자바스크립트로 짜는방법을 찾았는데,,
이 녀석을 통해 만들면 된다. 제공되는 응답 봇중 가장 인기가 많은것 같았다.
이 앱은 핸드폰에서 카카오톡 메세지가 플로팅(알림)으로 오는걸 읽어서 답장 보내는 방식으로 작동한다.
따라서 내가 봇계정으로 봇을 작동시키려는 방에 들어가 있거나 카톡 알림 또는 플로팅 기능을 꺼놓으면 작동하지 않는다. 또한 자기자신에게 메세지를 보내도 당연히 작동되지 않는다. 계정을 따로 파서 1:1톡을 날려서 실험해보자
추가로 이 앱을 설치해줘야 봇이 작동한다. Wear OS를 통해 카톡 메세지를 응답하여 보낸다고 한다.
필자 같은 경우 계속 봇을 돌릴 여분의 폰이 없어서 NOX앱으로 가상 핸드폰에 해당 앱들을 깔았다.
맨처음 채팅 자동응답 봇 앱을 들어가면 권한 설정을 해달라고 하는데 전부 해주면 된다.
정상적으로 설치되면 사진과 같이 나온다
환결 설정에 들어가면 몇버전의 자바스크립트 문법을 사용하는지 알 수 있다.
따로 설정에 손댈필요는 없다.
ECMA Script 6 문법을 사용한다
해당 블로그에 기능들이 잘 설명되어 있다.
Mozila Documentation에 있는 API들이 작동 안되면 아~ 버전이 낮아서 사용 할 수 없는거구나 하고 넘어가면 될 것같다.
이제 내가 친 채팅을 그대로 따라치는 봇을 만들어보자.
원래 화면으로 돌아가 오른쪽위에 땡땡이를 눌러주자
봇 추가
봇의 이름을 적어주고, 언어는 자바스크립트로 만들어주자.
본인이 잘쓰는 언어가 있다면 그거로 선택해도 무관하다.
봇 추가
봇이 잘 생성된것을 확인 할 수 있다.
기본적으로 봇이 꺼져있는데 작동을 위해 켜주도록하자
봇 on
이제 봇에 소스코드를 작성할 차례이다.
땡땡이와 수정버튼을 눌러준다.
봇 수정
그럼 다음과 같은 소스를 입력하는 창과 여러 메뉴가 보인다
봇 수정 창
기본적으로 response라는 함수가 선언되어 있는데, 이 함수는 카톡에서 메세지가 왔을때 실행(응답)하는 함수이다.
각각의 파라미터의 의미는 다음과 같다.
파라미터 의미 room 채팅방 이름 msg 보낸 메세지 sender 메세지 보낸 사람 이름 isGroupChat 단체 채팅방이면 true, 아니면 false 반환 replier 답장 메서드 객체 ImageDB 이미지 정보가 담겨 있는 객체 (화질 bad)
기본적으로 replier.reply(보낼메세지)를 통해 메세지를 보낸다.
이를 통해 내가 적은 메세지를 그대로 따라서 응답하는 봇을 만들어보자
function response(room, msg, sender, isGroupChat, replier, ImageDB, packageName) { replier.reply(msg); }
해당 소스를 작성해주고, 빨간색 네모표시한 저장 버튼과 리로드 버튼을 눌러서 수정한 코드가 봇에 적용되게 해주자.
저장&리로드를 했는데 스크립트 리로드 완료가 아닌 다른 메세지가 뜬다면 해당 메세지를 보고 오류를 고쳐나가야 된다.
저장 및 리로드
이제 왼쪽 아래에 있는 메뉴인 디버깅 룸으로 들어가서 내가 원하는대로 작동하는지 확인 할 수 있다.
따라하지말라구!!
디버깅 룸에서 정상작동한다면 코드가 원하는대로 작동한다는 것이다.
이제 카톡에서 1:1 톡을 걸어서 정상작동하는지 확인해보자
완성!
카톡에서도 정상작동한다면 기본적인 세팅이 끝난것이다.
이제 자바스크립트를 통해 원하는대로 카톡봇을 만들면된다.
만약 지금까지 다 따라했는데, 디버깅 룸에서는 작동하는데 카톡메세지를 읽어와서 응답하는게 작동이 안된다면 베타버전을 깔아서 다시 시도해보자(현재 일부 기종에서 안되는 문제가 있음)
다시 깔고 나면 스크립트 리로드하고 디버깅 룸에서 작동하는지 먼저 확인해보고 테스팅 gogo
앱을 완전히 지우고 다시 까는것을 권장한다
반응형
#1 카카오톡 봇을 만들어보자! – 앱 설치, 가상번호만들기
유튜브로는 코드 공유의 한계가 있어서 티스토리에도 포스팅을 하려고 합니다.
제 유튜브 채널도 놀러 와 주세요!
카카오톡 봇 만들기 (유튜브 ) 카카오톡 봇 만들기! #1 짧고 쉽고 간단하게~ https://youtu.be/It1uQuxegx0 카카오톡 봇 만들기! #2 가위바위보 https://youtu.be/VaQiSzzxLxs 카카오톡 봇 만들기! #3 실시간 검색어 순위 https://youtu.be/Wv0Sv83oLTg 카카오톡 봇 만들기! #번외1 메신져봇으로 갈아타자
https://youtu.be/ojgqvCK26XE 카카오톡 봇 만들기! #4 기능설명, 접어보기, 전체보기 https://youtu.be/Dg1IX-tIEu0 카카오톡 봇 만들기! #5 날씨 알려주기
https://youtu.be/7DNaqFJYm5A 카카오톡 봇 만들기! #6 ftp 원격코딩, 코드관리
https://youtu.be/0nVmajTTNv4 메신져봇 앱으로 카카오톡 봇 만들기! #7 파일 읽고 저장하기
https://youtu.be/PMi7S-92VII 취소선은 2020년 3월 8일 22시 기준 작동불가인것
이때 당시에는 JS 카카오톳봇을 사용했었습니다.
지금은 메신져봇이나 메신저봇 R을 사용하는데, 근본적인 동작방식은 대동소이하므로 편한 걸 사용하면 됩니다.
다만,
1. JS카카오톳봇은 한국에서는 합법적인 경로로 구하기가 힘들고
2. 메신져봇은 제작자가 “최신 패치를 진행하지 않는다” 했으므로
3. 메신져봇 R을 사용하길 권장합니다.
카톡 앱이 하루 종일 작동해야 하기에 공기계 사용을 추천합니다.
안드로이드 에뮬레이터는 비추해요. 컴퓨터를 하루종일 켜둘수는 없으니까요.
아 그리고 아이폰은 당연히 안됩니다. ㅎㅎ
지금(20년 03월 09일)은 JS카카오톡 봇이 없습니다. ‘메신저 자동응답봇’이나 ‘메신져봇R’을 설치해주시면 됩니다.
카톡봇앱을 구동하기 위해서는 몇가지 설정이 필요합니다.
1. Wear OS가 깔려 있어야 하고
2. 알림설정이 되어야 합니다.
이 부분은 앱을 설치하면 앱에서 잘 알려주니 시키는 대로 따라하시면 됩니다.
카카오톡을 설치해 주세요.
이제 봇 전용으로 카카오톡 계정을 만들어줘야 하는데, 카톡계정을 만들려면 전화번호가 필요합니다.
안쓰는 번호로 카톡계정을 생성하는게 베스트입니다. 저같은 경우는 에넥스텔레콤 의 0원유심을 사용하고 있구요.
카톡봇을 계속 쓰실려면 0원유심을 신청하셔서 새로운 전화번호를 받으시는게 좋습니다.
비싸봤자 만원 안쪽입니다!
새로운 번호를 만들 수 없다면, textPlus같은걸로 가상번호를 만들어서 가입하셔야 합니다.
다만 이럴경우 한달에 두어번정도 계정인증이 풀리기도하고, 카카오톡측에서 지속적인 업데이트로 계정정지같은 조치가 들어오기도 하니 추천하진 않습니다.
구글에 ‘ 카카오톡 부계정 만들기 ‘라 검색하시면 여러 방법이 나오니 따라하시면 됩니다.
계정을 다 만드셨다면 아래의 코드를 넣어서 동작시켜보세요!
function response(room, msg, sender, isGroupChat, replier, ImageDB, packageName, threadId){ /*(이 내용은 길잡이일 뿐이니 지우셔도 무방합니다) *(String) room: 메시지를 받은 방 이름 *(String) msg: 메시지 내용 *(String) sender: 전송자 닉네임 *(boolean) isGroupChat: 단체/오픈채팅 여부 *replier: 응답용 객체. replier.reply(“메시지”) 또는 replier.reply(“방이름”,”메시지”)로 전송 *(String) ImageDB.getProfileImage(): 전송자의 프로필 이미지를 Base64로 인코딩하여 반환 *(String) packageName: 메시지를 받은 메신저의 패키지 이름. (카카오톡: com.kakao.talk, 페메: com.facebook.orca, 라인: jp.naver.line.android *(int) threadId: 현재 쓰레드의 순번(스크립트별로 따로 매김) *Api,Utils객체에 대해서는 설정의 도움말 참조*/ if(msg == ‘안녕’){ replier.reply(‘안녕하세요’); } if(msg == ‘바보’){ replier.reply(‘바부야’); } }
“안녕”이라 보내면 “안녕하세요”라고 답해주네요.
코드 설명은 영상에 자세히 나와있습니다.
(추가) 메신저봇R인경우 코드 추가하는방법!
카카오톡 봇 만들기 ( python, pc 카톡, 비활성 ) – 1편
반응형
3줄 선 요약
플러스친구 아님
모바일 어플을 활용한 방법 아님
pc카톡, python 으로 pc 환경에서 봇을 제작함
서론
카카오톡 오픈 톡방에 봇이 있으면 좋을 것 같아서 만들려고 보니
카톡 api로는 자신에게 보내기 밖에 안됨
이경우 알람도 안 뜨고, 단톡과 오픈톡에 초대는 당연히 안됩니다.
검색을 하면 플러스친구 (플친) 만드는 법이 뜬다던가
스마트폰 어플로 만드는 자동응답 설정법이 주로 뜸
텔레그램 같은건 api로 간단하게 몇 줄이면 가능하지만
대부분 메신저는 카톡을 사용하기 때문에
기존에 몇 없는 자료들을 정리할 겸, 공유하는 글을 작성합니다.
환경
윈도우10
카카오톡 pc버전 ( MS store 카톡 X )
python ( pycharm )
카카오톡 봇
기본 기능 + 추가 기능으로 구성
기본 기능 채팅방에 메시지 전송 특정 방 선택 입장
추가 기능 주기적인 알람 (시간별 날씨, 특정 사이트의 새로운 게시글 등) 채팅 인식 (유저 입장 시 인사말 + 공지사항 알림, 명령어로 봇 컨트롤 등)
추가 기능에 들어갈 수 있는 것들 python으로 가능한 것 ( 이 글에선 출력을 문자로 한정한다 ) 대표적으로 웹 크롤링
※주의사항
카카오톡 정지 (밴) 에는 크게 두 가지가 있다
신고에 의한 정지 비정상적 패턴 감지에 의한 정지
카톡 봇 사용 시 두 가지 모두 조심해야 하나
특히 2번 패턴 정지를 조심해야 한다.
패턴 정지는 자동으로 탐지해서 잡는 거라, 문의를 해도 상담사가 할 수 있는 게 없다. 그냥 기다리라고만 함
연속적으로 다량의 채팅을 전송하거나
같은 채팅 내용을 다수에게 한 번에 보내는 행위 등이 해당됨
채팅방에 메시지 전송
import time, win32con, win32api, win32gui # # 카톡창 이름 (열려있는 상태, 최소화 X, 창뒤에 숨어있는 비활성화 상태 가능) kakao_opentalk_name = ‘메모장’ def kakao_sendtext(text): win32api.SendMessage(hwndEdit, win32con.WM_SETTEXT, 0, text) SendReturn(hwndEdit) # # 엔터 def SendReturn(hwnd): win32api.PostMessage(hwnd, win32con.WM_KEYDOWN, win32con.VK_RETURN, 0) time.sleep(0.01) win32api.PostMessage(hwnd, win32con.WM_KEYUP, win32con.VK_RETURN, 0) # # 핸들 hwndMain = win32gui.FindWindow( None, kakao_opentalk_name) hwndEdit = win32gui.FindWindowEx( hwndMain, None, “RichEdit20W”, None) hwndListControl = win32gui.FindWindowEx( hwndMain, None, “EVA_VH_ListControl_Dblclk”, None) # # 채팅 전송 text = “SETTEXT_test” kakao_sendtext(text)
위 소스의 동작부터 설명하면
열려있는 ‘메모장’ 이라는 이름의 채팅방에 채팅을 쓰고, 전송한다.
‘메모장’ 부분에 각자 본인이 원하는 채팅방 이름을 덮어쓰시면 됩니다.
우리가 하려고 하는 건 채팅방의 ‘RichEdit20W’ 라는 텍스트 박스에
원하는 메시지를 입력하고, 엔터 (전송)을 하려고 함
그래서 ‘RichEdit20W’ 의 핸들을 가져오기 위해 사용한 게
FindWindow / FindWindowEx
spy++ 로 어떻게 생겼나 확인해봄
핸들 부분 설명
hwndMain = win32gui.FindWindow( None, ‘메모장’)
–> FindWindow를 이용해 캡션(이름)이 ‘메모장’ 이라는 창을 찾아서 핸들을 hwndMain 에 저장
hwndEdit = win32gui.FindWindowEx( hwndMain, None, “RichEdit20W”, None)
–> FindWindowEx를 이용해 hwndMain(메모장) 의 자식인 RichEdit20W(텍스트박스) 의 핸들을 hwndEdit 에 저장
hwndListControl = win32gui.FindWindowEx( hwndMain, None, “EVA_VH_ListControl_Dblclk”, None)
–> 이건 글이 올라오는 대화창의 핸들을 가져온 건데, 나중에 채팅내용 인식 (명령어) 할 때 쓸 거예요
간단하게 채팅방 구조를 확인했고, 채팅 전송 기능을 만들어봤습니다.
다음 글에선 열려있는 채팅방이 아닌, 유저 목록 또는 채팅방 목록에서
원하는 채팅방을 선택해서 열고, 메시지를 보내는 방법을 알아보겠습니다.
반응형
[카카오톡 봇 만들기] 1. 수업시간 / 취침시간 자동응답 구현하기
옛날에 읽었던 소설책이 떠올라 최근에 다시 읽기 시작했다.
그 책 속에 천재 프로그래머가 자신에게 온 문자를 상황에 맞게 봇에게 대신 답장하도록 하는 장면이 나왔다.
그 내용을 보고나서 카카오톡 자동응답 봇을 만들어 보고 싶다고 생각했다.
이 책을 처음 읽었을 때도 같은 생각을 했었는데,
이번에는 컴공과에 재학하면서 배운 내용도 있으니 뭔가 할 수 있을 것 같다는 생각이 들었다.
또 최근 피곤해서 평소보다 일찍 잤던 적이 있었다.
그 때 내가 안잘거라고 생각한 친구가 카톡을 보냈었고, 나는 답장하지 못했었다.
만약 그럴 때 내가 자고 있다는 자동응답을 보냈다면, 그 친구는 하염없이 기다리지 않아도 되지 않았을까?
이런 계기로 나는 관련 정보를 찾기 시작했다.
구글을 통해 알아보니 능력있으신 분들이 이미 자동응답 앱을 개발한 것이 보였다.
단순히 버튼을 조작해서 자동응답을 시키는 단순한 앱도 있었던 것 같다.
그러나 내가 구현하고 싶은 기능들을 모두 구현하려면 그 앱의 기능만으로는 부족할 것 같았다.
그러던 중 “메신저 봇” 이라는 앱을 알게되었다.
그 앱은 자바스크립트를 통해 봇을 작동시킬 수 있었다.
그 앱은 내가 원하는 기능을 충족시켜줄 것 같았고, 바로 그 앱에 대한 정보를 찾아 코딩을 시작했다.
https://deviolet.tistory.com/
이 블로그가 그 앱을 개발하신 분의 블로그라고 한다.
올해(2020년) 수능보는 고3이라고 하신다..
능력이 있으신 분이니 꼭 좋은 대학에서 재능을 발휘하셨으면 좋겠다.
이 분의 블로그를 통해 함수 정보를 얻고, 구글링을 통해 얻은 강좌글들로 예제를 수집했다.
자바스크립트 언어는 처음이었지만, 자바, 파이썬, c언어와 문법적으로 비슷한 부분들이 있어
검색을 통해 비교적 편하게 배울 수 있었다.
앱에서 새로운 봇을 만들면 다음과 같은 기본 틀이 있다.
const scriptName = “실명봇헬퍼”; /** * (string) room * (string) sender * (boolean) isGroupChat * (void) replier.reply(message) * (boolean) replier.reply(room, message, hideErrorToast = false) // 전송 성공시 true, 실패시 false 반환 * (string) imageDB.getProfileBase64() * (string) packageName */ function response(room, msg, sender, isGroupChat, replier, imageDB, packageName) { } //아래 4개의 메소드는 액티비티 화면을 수정할때 사용됩니다. function onCreate(savedInstanceState, activity) { var textView = new android.widget.TextView(activity); textView.setText(“Hello, World!”); textView.setTextColor(android.graphics.Color.DKGRAY); activity.setContentView(textView); } function onStart(activity) {} function onResume(activity) {} function onPause(activity) {} function onStop(activity) {}
이 앱이 작동하는 기본적인 원리는 개발자님 블로그에도 소개되어있다시피
카톡 알림이 오면, 알림창에서 바로 답장보내는 기능을 이용하는 것이다.
알림을 앱이 캐치를 해서, 앱에서 코딩한대로 “알림창에서 답장보내는 통로”를 통해 답장을 보낸다.
그 답장을 보내는 함수가 function response 함수이다.
room = 카톡이 온 채팅방 이름
sender = 카톡을 보내온 사람의 이름
isGroupChat = 카톡이 온 채팅방이 단톡방인지 아닌지
replier = 카톡이 온 채팅방으로 답장을 보낼 때 사용하는 객체.
여기에 카톡이 온 채팅방의 정보가 담겨있다.
이 정보를 토대로 다음과 같이 코딩을 해보았다.
const scriptName = “test”; /** * (string) room * (string) sender * (boolean) isGroupChat * (void) replier.reply(message) * (boolean) replier.reply(room, message, hideErrorToast = false) // 전송 성공시 true, 실패시 false 반환 * (string) imageDB.getProfileBase64() * (string) packageName */ //var let date; let msg_send; let msg_introduce = “안녕하세요! 저는 실명님의 봇 ‘아직 무명’ 이에요!” + ‘
‘ + “앞으로 실명님이 답장하실 수 없을 때는 제가 대신 답장을 하니 너무 놀라지 말아주세요 :)”; let msg_sleep = “지금은 실명님이 자고 있어요! 나중에 다시 연락해주시면 감사하겠습니다!”; let msg_study; let now_day; let now_hour; let now_sec; let sleep; let study; //function function set_study(day, start, end) { if (now_day == day) { if (start <= now_hour && now_hour < end) { study = true; msg_study = "실명님은 지금 수업중이에요!" + ' ' + end + "시에 수업이 끝나니 그때 연락주세요!"; } else { study = false; } } } function set_sleep(start, end) { if (start <= now_hour && now_hour < end) { sleep = true; } else { sleep = false; } } function response(room, msg, sender, isGroupChat, replier, imageDB, packageName) { DataBase.appendDataBase("testDB", msg + ' '); //value set date = new Date(); now_hour = date.getHours(); now_sec = date.getSeconds(); now_day = date.getDay(); //auto setting set_sleep(0, 9); set_study(1, 11, 14); set_study(2, 9, 11); set_study(2, 14, 17); set_study(2, 19, 20); set_study(3, 11, 18); set_study(3, 19, 20); set_study(4, 9, 14); set_study(5, 11, 12); set_study(6, 12, 13); //user setting //sleep = false; //reply if (!isGroupChat && (sender != "친구이름")) { if (msg == "hello" || msg == "안녕") { replier.reply("안녕"); } java.lang.Thread.sleep(1500); if (sleep) { replier.reply(msg_sleep); } else if (study) { replier.reply(msg_study); } } } //아래 4개의 메소드는 액티비티 화면을 수정할때 사용됩니다. function onCreate(savedInstanceState, activity) { var textView = new android.widget.TextView(activity); textView.setText("Hello, World!"); textView.setTextColor(android.graphics.Color.DKGRAY); activity.setContentView(textView); } function onStart(activity) { } function onResume(activity) { } function onPause(activity) { } function onStop(activity) { } 글을 쓰는 시점에서는 개발이 더 진행되어있는 코드를 적절히 편집해 올린 것이라 현재 코드상에 의미 없이 선언된 듯 보이는 변수들도 있을 것 같다. 우선 이 코드는 내가 실제 일상에서 쓰는 카톡에 적용되어있는 코드이고 두가지 기능을 수행한다. 1. 취침 시간 자동 응답 밤 12시부터 오전 9시까지는 자고 있는 것으로 간주한다. 그래서 이 시간대에 온 카톡에는 지금 자고 있으니 나중에 연락을 달라는 답을 하게 된다. 아직 이 앱과 자바스크립트에 익숙하지 않아서 간단한 if문으로 코드를 짰지만, 원하는 목표는 저렇게 굳이 시간을 정하지 않고, 내가 자기전에 명령어를 딱 보냈을 때, 그 시간 이후로 오는 모든 카톡에 대해 취침 응답을 보내는 것. 그리고 일어나서 다시 명령어를 보내면, 그 시간 이후로 취침응답을 취소하는 것이다. 현재 내가 갖고 있는 지식으로는, 이 앱만으로 그걸 구현할 수는 없었다. 그래서 안쓰는 공기계와 가상전화번호를 이용해 카톡 부계정을 파서 서로 상호 연동으로 구현시킬 예정이다. (이미 부계정은 파놓았는데, 다른 기능을 구현중이라 아직 취침시간 자유 설정은 구현하지 않았다.) 2. 수업 시간 자동 응답 학교 시간표에 맞게 요일별로 시간대를 정해, 정한 시간대에는 수업중이라는 안내메세지를 보내도록 하였다. 수업이 끝나는 시간 정보도 같이 담아 보내, 언제쯤에 다시 보내야 할지 알 수 있게 하였다. ============================================= 이 앱을 통해 코딩하면서 한가지 헷갈린 점이 있었다. 이 앱에서의 "컴파일" 의 의미가 내가 알던 컴파일의 의미와 조금 다르게 느껴졌다. 이 앱은 컴파일 완료를 "컴파일 후 실행 완료 " 로 간주한다. 중요한 점은 "실행 중" 이 아니다. "실행 완료" 라는 점이다. 따라서 함수 밖에 있는 코드는, 컴파일 후 실행을 끝낼 때까지, 단 한번만 실행된다. 다른 사람에게 카톡을 받아서 자동으로 응답하는 과정 중에는 함수 밖의 코드가 전혀 실행되지 않는다. 또한 함수 밖에 있는 코드에 무한 루프를 도는 코드가 있다면, 컴파일 자체가 안된다. 무한 루프를 도는 상황은 "컴파일 후 실행 중" 이지. "컴파일 후 실행 완료" 가 아니기 때문이다. 다만 함수 밖 변수의 값은 계속해서 읽고 쓰기가 가능하다. 그래서 함수가 실행될 때마다 변수를 초기화 하거나, 값을 수정할 수 있다. 이것과 관련한 예시로, date = new Date(); 라는 코드가 함수 안에 있음을 알 수 있다. Date() 객체를 함수가 실행될 때마다 생성해야한다. 나는 처음에 아무렇지 않게 함수 밖에서 생성했다가 낭패를 봤다. 함수 밖에서 Date 객체를 생성하면, 현재 요일/시간 정보가 "컴파일 시점"을 기준으로 하게 되어 영원히 변하지 않는다. 그래서 만약 컴파일을 새벽에 했다면, 다음날 낮이 되어도 봇은 현재 시간을 새벽으로 인식한다. 따라서 메세지를 수신해서 reponse 함수가 실행될 때마다 Date 객체를 생성하여 메세지를 받은 순간의 요일/시간 정보를 받아야 한다. 이 정보를 알기까지 수많은 시행착오를 겪었기 때문에, 만약 나처럼 자바스크립트와 안드로이드 구동 방식에 무지한 사람은 이 글을 통해 더 적은 시행착오를 겪었으면 좋겠다.. 반응형
카카오톡 자동응답ㅣ카카오톡 봇 만들기ㅣ카톡 자동응답 하는법ㅣ자영업 사장님들 꼭 하세요~! | 카카오 톡 자동 답장 최신
We are using cookies to give you the best experience on our website.
You can find out more about which cookies we are using or switch them off in settings.
[카카오톡 채팅 봇] 일반채팅 단톡방 친구들과 대화 가능한 봇 만드는 법 (코드 제공)
반응형
이 포스트에서는 카카오톡 일반채팅 단톡방에 대화가 가능한 봇을 만드는 법을 다루고 있습니다.
(오픈채팅이나 플러스친구로 만드는 그런 봇이 아니고, 아무 채팅방에서나 높은 자유도로 사용 가능한 봇입니다.)
참고로 코드는 그대로 가져다 쓰셔도 되지만, 자유도 높은 개조를 위해서는 Python과 각종 라이브러리에 대한 배경 지식이나 이해가 필요합니다.
다운로드 링크 / 소스 코드
설명이 필요없이 링크나 소스 코드만 필요하신 분들도 있을 것 같아 링크와 코드 먼저 첨부합니다.
↑ 제 GitHub 링크입니다. 들어가셔서 main.py 파일을 다운해주시면 됩니다.
chatlog.txt는 예시 채팅 파일입니다.
카카오톡에서 채팅 내보내기 하시고, 앞에 글자를 지워줘야 하는데 이 부분을 자동화 시키는 프로그램 역시 빨리 만들어서 추가 업로드하겠습니다.
import win32gui, win32con, win32api, ctypes, time import pandas as pd from pywinauto import clipboard from difflib import SequenceMatcher room = win32gui.FindWindow(None, “채팅방 이름”) inBox = win32gui.FindWindowEx(room, None , “RICHEDIT50W” , None) # 채팅창의 메세지 입력창 with open(“chatlog.txt”, “r”, encoding=”UTF-8″) as f: lines = f.readlines() PBYTE256 = ctypes.c_ubyte * 256 _user32 = ctypes.WinDLL(“user32”) GetKeyboardState = _user32.GetKeyboardState SetKeyboardState = _user32.SetKeyboardState PostMessage = win32api.PostMessage SendMessage = win32gui.SendMessage FindWindow = win32gui.FindWindow IsWindow = win32gui.IsWindow GetCurrentThreadId = win32api.GetCurrentThreadId GetWindowThreadProcessId = _user32.GetWindowThreadProcessId AttachThreadInput = _user32.AttachThreadInput MapVirtualKeyA = _user32.MapVirtualKeyA MapVirtualKeyW = _user32.MapVirtualKeyW MakeLong = win32api.MAKELONG w = win32con def kakao_sendtext(inText): win32api.SendMessage(inBox, win32con.WM_SETTEXT, 0, inText) # 채팅창 입력 win32api.PostMessage(inBox, win32con.WM_KEYDOWN, win32con.VK_RETURN, 0) win32api.PostMessage(inBox, win32con.WM_KEYUP, win32con.VK_RETURN, 0) # 엔터키 def get_chat(): hwndListControl = win32gui.FindWindowEx(room, None, “EVA_VH_ListControl_Dblclk”, None) PostKeyEx(hwndListControl, ord(‘A’), [w.VK_CONTROL], False) time.sleep(1) PostKeyEx(hwndListControl, ord(‘C’), [w.VK_CONTROL], False) get_text = clipboard.GetData() return get_text def PostKeyEx(hwnd, key, shift, specialkey): if IsWindow(hwnd): ThreadId = GetWindowThreadProcessId(hwnd, None) lparam = MakeLong(0, MapVirtualKeyA(key, 0)) msg_down = w.WM_KEYDOWN msg_up = w.WM_KEYUP if specialkey: lparam = lparam | 0x1000000 if len(shift) > 0: pKeyBuffers = PBYTE256() pKeyBuffers_old = PBYTE256() SendMessage(hwnd, w.WM_ACTIVATE, w.WA_ACTIVE, 0) AttachThreadInput(GetCurrentThreadId(), ThreadId, True) GetKeyboardState(ctypes.byref(pKeyBuffers_old)) for modkey in shift: if modkey == w.VK_MENU: lparam = lparam | 0x20000000 msg_down = w.WM_SYSKEYDOWN msg_up = w.WM_SYSKEYUP pKeyBuffers[modkey] |= 128 SetKeyboardState(ctypes.byref(pKeyBuffers)) time.sleep(0.01) PostMessage(hwnd, msg_down, key, lparam) time.sleep(0.01) PostMessage(hwnd, msg_up, key, lparam | 0xC0000000) time.sleep(0.01) SetKeyboardState(ctypes.byref(pKeyBuffers_old)) time.sleep(0.01) AttachThreadInput(GetCurrentThreadId(), ThreadId, False) else: SendMessage(hwnd, msg_down, key, lparam) SendMessage(hwnd, msg_up, key, lparam | 0xC0000000) def chat_last_save(): getText = get_chat() getText = getText.split(‘\r
‘) getText = pd.DataFrame(getText) getText[0] = getText[0].str.replace(‘\[([\S\s]+)\] \[(오전|오후)([0-9:\s]+)\] ‘, ”) return getText.index[-2], getText.iloc[-2, 0] def chat_check_command(cls, clst): getText = get_chat() getText = getText.split(‘\r
‘) getText = pd.DataFrame(getText) getText[0] = getText[0].str.replace(‘\[([\S\s]+)\] \[(오전|오후)([0-9:\s]+)\] ‘, ”) if getText.iloc[-2, 0] != clst: getText_ = getText.iloc[cls+1:, 0] getStr = str(getText_) if “조용” in getStr: kakao_sendtext(“죄송합니다. 5분간 반응하지 않습니다.”) time.sleep(300) return if “개발자” in getStr: kakao_sendtext(“개발자는 현재 자리에 없습니다.”) return check = 0 s1 = str(); s2 = str(); s3 = str(); s4 = str(); s5 = str(); r1 = 0; r2 = 0; r3 = 0; r4 = 0; r5 = 0; for line in lines: line = line.strip(”
“) if check == 1: s1 = line r1 = SequenceMatcher(None, getStr, s1).ratio() if check == 2: s2 = line r2 = SequenceMatcher(None, getStr, s2).ratio() if check == 3: s3 = line r3 = SequenceMatcher(None, getStr, s3).ratio() if check == 4: s4 = line r4 = SequenceMatcher(None, getStr, s4).ratio() if check == 5: s5 = line r5 = SequenceMatcher(None, getStr, s5).ratio() if check >= 1: check += 1 if check > 5: print(r1, r2, r3, r4, r5) printStr = str() if r1 >= r2 and r1 >= r3 and r1 >= r4 and r1 >= r5: printStr = s1 elif r2 >= r1 and r2 >= r3 and r2 >= r4 and r2 >= r5: printStr = s2 elif r3 >= r1 and r3 >= r2 and r3 >= r4 and r3 >= r5: printStr = s3 elif r4 >= r1 and r4 >= r2 and r4 >= r3 and r4 >= r5: printStr = s4 elif r5 >= r1 and r5 >= r2 and r5 >= r3 and r5 >= r4: printStr = s5 kakao_sendtext(printStr.strip(”
“)) break if getStr.find(line) != -1 or SequenceMatcher(None, getStr, line).ratio() > 0.5: print(getStr+” “+line+” “+str(SequenceMatcher(None, getStr, line).ratio())) check += 1 def main(): print(“Total chat data count : ” + str(len(lines))) cls, clst = chat_last_save() while True: chat_check_command(cls, clst) cls, clst = chat_last_save() time.sleep(10) if __name__ == ‘__main__’: main()
↑ main.py 소스코드입니다.
import 하고 뒤에 써 있는 모듈들만 설치해주세요. (Python이나 모듈 설치 방법은 구글링 해보면 나옵니다.)
사용 방법
먼저 chatlog.txt 파일을 위해 채팅 로그를 추출해야 합니다.
이 부분은 제가 채팅 로그들을 가져와서 올리고 싶으나, 사생활 문제나 기타 여러 윤리적 문제가 발생하기 때문에 제가 만들어드릴 수가 없습니다.
따라서 하는 방법만 알려드리겠습니다.
먼저 카카오톡 채팅방에 들어가서, 오른쪽 위에 벨 모양 오른쪽에 있는 ▤ 모양 아이콘을 눌러줍니다.
그 다음 대화 내용 > 대화 내보내기를 클릭해서 메모장 형식으로 대화를 추출해줍니다.
마지막으로 대화 왼쪽에 있는 [번호][이름][시간] 부분만 모두 지워주신 후, chatlog.txt로 이름을 바꿔서 원래 chatlog 파일이 있던 자리에 바꿔 넣어주시면 됩니다.
이제 자동 대화를 원하는 카카오톡 채팅방의 이름을 찾아줍니다.
저는 예시로 제가 들어가 있는 롤 듀오 구하는 채팅방의 이름을 가져오겠습니다.
그 다음 python 편집기나 아니면 메모장에 열어서 6행의 room 부분의 빨간 네모 박스로 표시한 부분에 톡방 이름을 적어줍니다 .(프로세스에서 채팅방 이름을 따와서 그 창을 찾을 것이기 때문에 필요합니다.)
이제, 해당 카카오톡 채팅방 창이 켜진 상태로 프로그램을 실행해주면 코드가 작동됩니다.
실행 원리 & 원하는대로 추가 개발하는 방법
기본 실행 원리는, 카카오톡의 해당 채팅방 이름에 해당하는 프로세스를 찾아, 키(ctrl+c, v나 엔터 등)를 직접 입력하도록 명령하는 방식입니다. 키 입력에 대한 자세한 원리는 제가 개발에 참고한 포스트(https://airfox1.tistory.com/5?category=1118519)를 참고하시면 좋습니다.
여기에 추가로, 저는 단톡방의 대화를 가져와 데이터로 사용했기 때문에 대답할 문장을 선택하는 알고리즘을 조금 다르게 짰습니다.
새로운 카톡에 데이터의 어떤 줄이 포함될 경우, 다음 5줄 중에서 문장 유사도가 가장 높은 한 줄을 대답으로 선택하도록 했습니다. (왜냐하면 3명 이상이 동시에 말할 경우 질문과 대답 사이에 다른 카톡이 섞여있는 경우가 아주 많기 때문)
제 코드에 추가로 개발하는 방법은, ‘chat_check_command’ 함수의 if 문에 제가 해놓은 것처럼 추출할 문자열을 넣고, 그 아래 함수를 호출하거나 구현할 기능을 추가해주시면 됩니다.
저의 경우에는 “조용” 명령어를 추가하여 봇이 자꾸 오작동하거나 대화에 개입하는 것이 싫을 때 5분간 작동하지 않도록 설정하였습니다.
질문 사항 있으시면 댓글 남겨주세요.
반응형
키워드에 대한 정보 카카오 톡 봇 만들기
다음은 Bing에서 카카오 톡 봇 만들기 주제에 대한 검색 결과입니다. 필요한 경우 더 읽을 수 있습니다.
이 기사는 인터넷의 다양한 출처에서 편집되었습니다. 이 기사가 유용했기를 바랍니다. 이 기사가 유용하다고 생각되면 공유하십시오. 매우 감사합니다!
사람들이 주제에 대해 자주 검색하는 키워드 24시간 구동되는 카카오톡 봇 만들기!
- 카카오톡 봇
- 24시간봇
- 자바스크립트
- 파이썬
- 코딩
- 프로그래밍
- python
- JavaScript
- bot
- 카톡봇
- 매크로
- coding
- pyautogui
- 파이썬
- 음성인식
- 구글 api
24시간 #구동되는 #카카오톡 #봇 #만들기!
YouTube에서 카카오 톡 봇 만들기 주제의 다른 동영상 보기
주제에 대한 기사를 시청해 주셔서 감사합니다 24시간 구동되는 카카오톡 봇 만들기! | 카카오 톡 봇 만들기, 이 기사가 유용하다고 생각되면 공유하십시오, 매우 감사합니다.