SlideShare a Scribd company logo
1 of 73
Download to read offline
레일즈로 카카오톡 봇 만들기
로켓현
가정
루비온레일즈로
CRUD를 할 줄 안다.
1. JSON 응답 서버 만드는 법
(사용자) (서버)
(사용자) (서버)
URL요청
(사용자) (서버)
URL요청
.html
(클라이언트) (서버)
요청
(클라이언트) (서버)
요청
JSON
서로 다른 언어끼리
데이터를 주고 받는 방법 중 하나로
약속된 텍스트 형식을 의미한다.
JSON 이란?
JSON 이란?
루비 자바스크립트
Hash 형태의 데이터
{ key1 => “value” }
자바스크립트에는
Hash 형태가 없는데…?
Java에도, Swift에도, 파이썬에도…
전송
JSON 이란?
루비 자바스크립트
JSON 등장!
JSON 이란?
다 내가 말하는 대로 데이터 형식을 바꿔!
{
“key1”: “value1”,
“key2”: “value2”
}
JSON 이란?
루비 자바스크립트
{ key1 => “value” } { “key1”: “value” } { key1: “value” }
Hash 형식 JSON 형식 Object 형식
JSON 이란?
루비
Hash 형식 JSON 형식
JSON 이란?
루비
Hash 형식 JSON 형식
(사용자) (서버)
URL요청
.html
<%= @users %>
Index.html.erb
<%= @users %>
Index.html.erb
render “index.html.erb” 사실 이부분이 생략..
JSON
{
{
“name”: ”유저1”,
“password”: ”123”
},
{
“name”: “유저2”,
“password”: ”456”
}
}
JSON
{
{
“name”: ”유저1”,
“password”: ”123”
},
{
“name”: “유저2”,
“password”: ”456”
}
}
서버 테스트를 위한 툴
포스트맨
2. 카카오톡 채팅봇 원리
(카카오톡 사용자) (레일즈 서버)
요청
(카카오톡 서버)
요청
응답 응답
1 2
34
(카카오톡 사용자) (레일즈 서버)
요청
응답
(*카카오톡 서버 생략)
카카오톡 사용자
레일즈 서버
요청 응답
요청
안녕 라이언?
요청=사용자의 메세지
요청
content 라는 이름으로
parameter
params[:content] 로
요청을 받는다.
안녕 라이언?
요청=사용자의 메세지
요청
요청을 처리
안녕 라이언?
요청=사용자의 메세지
요청
카카오톡에서 정한
json 형식으로 응답!
안녕 라이언?
요청=사용자의 메세지
요청 응답
@msg =
{
message: {
text: “안녕 아이유”
},
keyboard: {
type: “buttons”,
buttons: [“ㅎㅇ”,“ㅃㅇ”, “ㄲㅈ”]
}
}
render json: @msg
안녕 라이언?
요청=사용자의 메세지
요청 응답
안녕 라이언?
요청=사용자의 메세지
안녕 아이유
응답=
챗봇의 메시지 + 키보드 형태
@msg =
{
message: {
text: “안녕 아이유”
},
keyboard: {
type: “buttons”,
buttons: [“ㅎㅇ”,“ㅃㅇ”, “ㄲㅈ”]
}
}
요청 응답
안녕 라이언?
요청=사용자의 메세지
안녕 아이유
응답=
챗봇의 메시지 + 키보드 형태
ㅎㅇ
ㅃㅇ
ㄲㅈ
@msg =
{
message: {
text: “안녕 아이유”
},
keyboard: {
type: “buttons”,
buttons: [“ㅎㅇ”,“ㅃㅇ”, “ㄲㅈ”]
}
}
응답 안녕 아이유
응답=
챗봇의 메시지 + 키보드 형태
ㅎㅇ
ㅃㅇ
ㄲㅈ
응답 안녕 아이유
응답=
챗봇의 메시지 + 키보드 형태
ㅎㅇ
ㅃㅇ
ㄲㅈ
요청
ㅃㅇ
요청=사용자의 메세지
요청
ㅃㅇ
요청=사용자의 메세지
content 라는 이름으로
parameter
params[:content] 로
요청을 받는다.
요청
요청을 처리
ㅃㅇ
요청=사용자의 메세지
요청 응답
@msg =
{
message: {
text: “오케이 바이…”
},
keyboard: {
type: “text”
}
}
render json: @msg
ㅃㅇ
요청=사용자의 메세지
요청 응답
@msg =
{
message: {
text: “오케이 바이…”
},
keyboard: {
type: “text”
}
}
ㅃㅇ
요청=사용자의 메세지
오케이 바이..
응답=
챗봇의 메시지 + 키보드 형태
사실 개발보다
기획이 더 중요…
(if elsif elsif의 향연…)
3. 카카오톡 채팅봇 개발 가이드
https://github.com/plusfriend/auto_reply
(카카오톡 사용자) (레일즈 서버)
요청
(카카오톡 서버)
요청
응답 응답
1 2
34
(카카오톡 사용자) (레일즈 서버)
요청
(카카오톡 서버)
요청
URL
[GET] /keyboard
[POST] /message
1. 채팅 시작시 키보드 상태 결정
유저가 카톡 봇과 채팅을 시작할 때
키보드의 상태를 결정
ㅎㅇ
ㅃㅇ
ㄲㅈ
Text 타입 Buttons 타입
요청
요청=
사용자가 카톡 봇과
채팅을 시작
[get] /keyboard
요청
요청=
사용자가 카톡 봇과
채팅을 시작
사용자가
무슨 키보드를
써야하는지 알려줘!
요청
사용자가
무슨 키보드를
써야하는지 알려줘!
응답
@msg =
{
type: “text”
}
render json: @msg
요청
사용자가
무슨 키보드를
써야하는지 알려줘!
응답
@msg =
{
type: “buttons”,
buttons: [“ㅎㅇ”,”ㅃㅇ”,”ㄲㅈ”]
}
render json: @msg
ㅎㅇ
ㅃㅇ
ㄲㅈ
config/routes.rb
컨트롤러의 액션 부분
2. 사용자의 채팅을 처리
사용자의 메시지는
Content라는 이름으로 온다
Params[:content]
요청
안녕 라이언?
요청=사용자의 메세지
[post] /message
응답은
응답 메세지와 사용자 키보드 상태!
응답
오케이 바이..
응답=
챗봇의 메시지 + 키보드 형태
응답 JSON 형태
@msg =
{
message: {
text: “응답하겠습니다!”
},
keyboard: {
type: “text”
}
}
@msg =
{
message: {
text: “응답하겠습니다!”
},
keyboard: {
type: “buttons”,
buttons: [“1번”, “2번”]
}
}
응답 JSON 형태
@msg =
{
message: {
text: “응답하겠습니다!”
},
keyboard: {
type: “text”
}
}
응답하겠습니다!
응답=
챗봇의 메시지 + 키보드 형태
응답 JSON 형태
응답하겠습니다!
응답=
챗봇의 메시지 + 키보드 형태
@msg =
{
message: {
text: “응답하겠습니다!”
},
keyboard: {
type: “buttons”,
buttons: [“1번”, “2번”]
}
}
1번
2번
컨트롤러의 액션 부분
config/routes.rb
컨트롤러의 액션 부분
config/routes.rb
요청
안녕 라이언?
요청=사용자의 메세지
[post] /message
content 이름으로
사용자의 메시지가 전송됨
params[:content]
요청
안녕 라이언?
요청=사용자의 메세지
[post] /message
content 이름으로
사용자의 메시지가 전송됨
params[:content]
user_key 이름으로
사용자의 고유번호가 전송됨
요청
안녕 라이언?
요청=사용자의 메세지
[post] /message
content 이름으로
사용자의 메시지가 전송됨
params[:content]
user_key 이름으로
사용자의 고유번호가 전송됨
params[:user_key]
카카오톡 플러스친구 깃헙
https://github.com/plusfriend/auto_reply
레일즈 예시 코드
https://github.com/Rocket-Hyun/__RailsAPI__kakaoBot/blob/master/app/controllers/basic_controller.rb
https://center-pf.kakao.com/login
루비온레일즈로 카카오톡 봇 만들기
루비온레일즈로 카카오톡 봇 만들기
루비온레일즈로 카카오톡 봇 만들기
루비온레일즈로 카카오톡 봇 만들기
루비온레일즈로 카카오톡 봇 만들기

More Related Content

Similar to 루비온레일즈로 카카오톡 봇 만들기

chatbot-seminar-1806
chatbot-seminar-1806chatbot-seminar-1806
chatbot-seminar-1806juneyoungdev
 
Node-express 채팅 서버 개발기
Node-express 채팅 서버 개발기Node-express 채팅 서버 개발기
Node-express 채팅 서버 개발기정웅 박
 
엄준일 04일차 HTML/Javascript 교육
엄준일 04일차 HTML/Javascript 교육엄준일 04일차 HTML/Javascript 교육
엄준일 04일차 HTML/Javascript 교육준일 엄
 
웹 서버 실행 환경
웹 서버 실행 환경웹 서버 실행 환경
웹 서버 실행 환경성균 전
 
Web server page_ed10
Web server page_ed10Web server page_ed10
Web server page_ed10hungrok
 
리스펙토링 세미나 - 웹 브라우저 동작 개념, Node.js를 통한 서버 이해, REST API
리스펙토링 세미나 - 웹 브라우저 동작 개념, Node.js를 통한 서버 이해, REST API리스펙토링 세미나 - 웹 브라우저 동작 개념, Node.js를 통한 서버 이해, REST API
리스펙토링 세미나 - 웹 브라우저 동작 개념, Node.js를 통한 서버 이해, REST APIWooyoung Ko
 
Python을 활용한 챗봇 서비스 개발 1일차
Python을 활용한 챗봇 서비스 개발 1일차Python을 활용한 챗봇 서비스 개발 1일차
Python을 활용한 챗봇 서비스 개발 1일차Taekyung Han
 
Ksug 세미나 (윤성준) (20121208)
Ksug 세미나 (윤성준) (20121208)Ksug 세미나 (윤성준) (20121208)
Ksug 세미나 (윤성준) (20121208)Sungjoon Yoon
 
모바일 메신저 아키텍쳐 소개
모바일 메신저 아키텍쳐 소개모바일 메신저 아키텍쳐 소개
모바일 메신저 아키텍쳐 소개Hyogi Jung
 
Java script PPT #1 : 개요.
Java script PPT #1 : 개요.Java script PPT #1 : 개요.
Java script PPT #1 : 개요.Hong Jin Baek
 
[2021 오픈소스 컨트리뷰션 아카데미] #6 XML파일구조 및 리브레오피스의 자동교정 기능 소개 등
[2021 오픈소스 컨트리뷰션 아카데미] #6 XML파일구조 및 리브레오피스의 자동교정 기능 소개 등[2021 오픈소스 컨트리뷰션 아카데미] #6 XML파일구조 및 리브레오피스의 자동교정 기능 소개 등
[2021 오픈소스 컨트리뷰션 아카데미] #6 XML파일구조 및 리브레오피스의 자동교정 기능 소개 등DaeHyun Sung
 
Smalltalk at Altlang 2008
Smalltalk at Altlang 2008Smalltalk at Altlang 2008
Smalltalk at Altlang 2008daliot
 
Spring 4.x Web Application 살펴보기
Spring 4.x Web Application  살펴보기Spring 4.x Web Application  살펴보기
Spring 4.x Web Application 살펴보기Ji Heon Kim
 
비영리 섹터를 위한 챗봇 발표
비영리 섹터를 위한 챗봇 발표비영리 섹터를 위한 챗봇 발표
비영리 섹터를 위한 챗봇 발표Hong Min Kim
 
Node js[stg]onimusha 20140822
Node js[stg]onimusha 20140822Node js[stg]onimusha 20140822
Node js[stg]onimusha 20140822병헌 정
 
Amazon Lex를 통한 쉽고 빠른 음성 및 텍스트 기반 챗봇 만들기
Amazon Lex를 통한 쉽고 빠른 음성 및 텍스트 기반 챗봇 만들기 Amazon Lex를 통한 쉽고 빠른 음성 및 텍스트 기반 챗봇 만들기
Amazon Lex를 통한 쉽고 빠른 음성 및 텍스트 기반 챗봇 만들기 Amazon Web Services Korea
 
챗봇 시작해보기
챗봇 시작해보기챗봇 시작해보기
챗봇 시작해보기성일 한
 
ASP.NET MVC Framework 개발자를 위한 Razor Syntax.pdf
ASP.NET MVC Framework 개발자를 위한 Razor Syntax.pdfASP.NET MVC Framework 개발자를 위한 Razor Syntax.pdf
ASP.NET MVC Framework 개발자를 위한 Razor Syntax.pdfSangHoon Han
 

Similar to 루비온레일즈로 카카오톡 봇 만들기 (20)

chatbot-seminar-1806
chatbot-seminar-1806chatbot-seminar-1806
chatbot-seminar-1806
 
Node-express 채팅 서버 개발기
Node-express 채팅 서버 개발기Node-express 채팅 서버 개발기
Node-express 채팅 서버 개발기
 
엄준일 04일차 HTML/Javascript 교육
엄준일 04일차 HTML/Javascript 교육엄준일 04일차 HTML/Javascript 교육
엄준일 04일차 HTML/Javascript 교육
 
웹 서버 실행 환경
웹 서버 실행 환경웹 서버 실행 환경
웹 서버 실행 환경
 
Web server page_ed10
Web server page_ed10Web server page_ed10
Web server page_ed10
 
리스펙토링 세미나 - 웹 브라우저 동작 개념, Node.js를 통한 서버 이해, REST API
리스펙토링 세미나 - 웹 브라우저 동작 개념, Node.js를 통한 서버 이해, REST API리스펙토링 세미나 - 웹 브라우저 동작 개념, Node.js를 통한 서버 이해, REST API
리스펙토링 세미나 - 웹 브라우저 동작 개념, Node.js를 통한 서버 이해, REST API
 
Linebot
LinebotLinebot
Linebot
 
Python을 활용한 챗봇 서비스 개발 1일차
Python을 활용한 챗봇 서비스 개발 1일차Python을 활용한 챗봇 서비스 개발 1일차
Python을 활용한 챗봇 서비스 개발 1일차
 
챗봇 스터디
챗봇 스터디챗봇 스터디
챗봇 스터디
 
Ksug 세미나 (윤성준) (20121208)
Ksug 세미나 (윤성준) (20121208)Ksug 세미나 (윤성준) (20121208)
Ksug 세미나 (윤성준) (20121208)
 
모바일 메신저 아키텍쳐 소개
모바일 메신저 아키텍쳐 소개모바일 메신저 아키텍쳐 소개
모바일 메신저 아키텍쳐 소개
 
Java script PPT #1 : 개요.
Java script PPT #1 : 개요.Java script PPT #1 : 개요.
Java script PPT #1 : 개요.
 
[2021 오픈소스 컨트리뷰션 아카데미] #6 XML파일구조 및 리브레오피스의 자동교정 기능 소개 등
[2021 오픈소스 컨트리뷰션 아카데미] #6 XML파일구조 및 리브레오피스의 자동교정 기능 소개 등[2021 오픈소스 컨트리뷰션 아카데미] #6 XML파일구조 및 리브레오피스의 자동교정 기능 소개 등
[2021 오픈소스 컨트리뷰션 아카데미] #6 XML파일구조 및 리브레오피스의 자동교정 기능 소개 등
 
Smalltalk at Altlang 2008
Smalltalk at Altlang 2008Smalltalk at Altlang 2008
Smalltalk at Altlang 2008
 
Spring 4.x Web Application 살펴보기
Spring 4.x Web Application  살펴보기Spring 4.x Web Application  살펴보기
Spring 4.x Web Application 살펴보기
 
비영리 섹터를 위한 챗봇 발표
비영리 섹터를 위한 챗봇 발표비영리 섹터를 위한 챗봇 발표
비영리 섹터를 위한 챗봇 발표
 
Node js[stg]onimusha 20140822
Node js[stg]onimusha 20140822Node js[stg]onimusha 20140822
Node js[stg]onimusha 20140822
 
Amazon Lex를 통한 쉽고 빠른 음성 및 텍스트 기반 챗봇 만들기
Amazon Lex를 통한 쉽고 빠른 음성 및 텍스트 기반 챗봇 만들기 Amazon Lex를 통한 쉽고 빠른 음성 및 텍스트 기반 챗봇 만들기
Amazon Lex를 통한 쉽고 빠른 음성 및 텍스트 기반 챗봇 만들기
 
챗봇 시작해보기
챗봇 시작해보기챗봇 시작해보기
챗봇 시작해보기
 
ASP.NET MVC Framework 개발자를 위한 Razor Syntax.pdf
ASP.NET MVC Framework 개발자를 위한 Razor Syntax.pdfASP.NET MVC Framework 개발자를 위한 Razor Syntax.pdf
ASP.NET MVC Framework 개발자를 위한 Razor Syntax.pdf
 

More from Junghyun Park

Pandas governance 한국어 정리
Pandas governance 한국어 정리Pandas governance 한국어 정리
Pandas governance 한국어 정리Junghyun Park
 
루비온레일즈(Ruby on rails) 뷰헬퍼(view helper) Top4 사용법
루비온레일즈(Ruby on rails) 뷰헬퍼(view helper) Top4 사용법루비온레일즈(Ruby on rails) 뷰헬퍼(view helper) Top4 사용법
루비온레일즈(Ruby on rails) 뷰헬퍼(view helper) Top4 사용법Junghyun Park
 
루비온레일즈(Ruby on rails)와 친숙해지기
루비온레일즈(Ruby on rails)와 친숙해지기루비온레일즈(Ruby on rails)와 친숙해지기
루비온레일즈(Ruby on rails)와 친숙해지기Junghyun Park
 
루비온레일즈 API 서버 - 4) api 서버 인증 구현 (쿠키/세션/토큰)
루비온레일즈 API 서버 - 4) api 서버 인증 구현 (쿠키/세션/토큰)루비온레일즈 API 서버 - 4) api 서버 인증 구현 (쿠키/세션/토큰)
루비온레일즈 API 서버 - 4) api 서버 인증 구현 (쿠키/세션/토큰)Junghyun Park
 
루비온레일즈 API 서버 - 3) api 서버 CRUD
루비온레일즈 API 서버 - 3) api 서버 CRUD루비온레일즈 API 서버 - 3) api 서버 CRUD
루비온레일즈 API 서버 - 3) api 서버 CRUDJunghyun Park
 
루비온레일즈 API 서버 - 2) api 서버에 대한 이해 및 맛보기
루비온레일즈 API 서버 - 2) api 서버에 대한 이해 및 맛보기루비온레일즈 API 서버 - 2) api 서버에 대한 이해 및 맛보기
루비온레일즈 API 서버 - 2) api 서버에 대한 이해 및 맛보기Junghyun Park
 
루비온레일즈 API 서버 - 1) 인터넷 구조에 대한 대략적인 이해
루비온레일즈 API 서버 - 1) 인터넷 구조에 대한 대략적인 이해루비온레일즈 API 서버 - 1) 인터넷 구조에 대한 대략적인 이해
루비온레일즈 API 서버 - 1) 인터넷 구조에 대한 대략적인 이해Junghyun Park
 

More from Junghyun Park (7)

Pandas governance 한국어 정리
Pandas governance 한국어 정리Pandas governance 한국어 정리
Pandas governance 한국어 정리
 
루비온레일즈(Ruby on rails) 뷰헬퍼(view helper) Top4 사용법
루비온레일즈(Ruby on rails) 뷰헬퍼(view helper) Top4 사용법루비온레일즈(Ruby on rails) 뷰헬퍼(view helper) Top4 사용법
루비온레일즈(Ruby on rails) 뷰헬퍼(view helper) Top4 사용법
 
루비온레일즈(Ruby on rails)와 친숙해지기
루비온레일즈(Ruby on rails)와 친숙해지기루비온레일즈(Ruby on rails)와 친숙해지기
루비온레일즈(Ruby on rails)와 친숙해지기
 
루비온레일즈 API 서버 - 4) api 서버 인증 구현 (쿠키/세션/토큰)
루비온레일즈 API 서버 - 4) api 서버 인증 구현 (쿠키/세션/토큰)루비온레일즈 API 서버 - 4) api 서버 인증 구현 (쿠키/세션/토큰)
루비온레일즈 API 서버 - 4) api 서버 인증 구현 (쿠키/세션/토큰)
 
루비온레일즈 API 서버 - 3) api 서버 CRUD
루비온레일즈 API 서버 - 3) api 서버 CRUD루비온레일즈 API 서버 - 3) api 서버 CRUD
루비온레일즈 API 서버 - 3) api 서버 CRUD
 
루비온레일즈 API 서버 - 2) api 서버에 대한 이해 및 맛보기
루비온레일즈 API 서버 - 2) api 서버에 대한 이해 및 맛보기루비온레일즈 API 서버 - 2) api 서버에 대한 이해 및 맛보기
루비온레일즈 API 서버 - 2) api 서버에 대한 이해 및 맛보기
 
루비온레일즈 API 서버 - 1) 인터넷 구조에 대한 대략적인 이해
루비온레일즈 API 서버 - 1) 인터넷 구조에 대한 대략적인 이해루비온레일즈 API 서버 - 1) 인터넷 구조에 대한 대략적인 이해
루비온레일즈 API 서버 - 1) 인터넷 구조에 대한 대략적인 이해
 

루비온레일즈로 카카오톡 봇 만들기