RESTfm을 사용한 Chatbot 애플리케이션의 예
RESTfm을 사용한 Chatbot 애플리케이션의 예
마지막 날에는 드디어 RESTfm을 사용하는 응용 프로그램을 만들어 보겠습니다. 다만, 보통의 CRUD 를 할 수 있는 어플리케이션에서는 재미있지 않습니다 1
그래서 이번에는 Chatbot을 만들어 보겠습니다. Read 하고 싶은 레코드를 지정하면 bot 가 그 레코드의 내용을 돌려준다고 하는 간단한 것입니다.
환경
여러 사정이 있어 다음과 같은 구성으로 합니다. 본질적인 내용은 Hubot + Slack 등에서도 같습니다.
여러 사정이 있어 다음과 같은 구성으로 합니다. 본질적인 내용은 Hubot + Slack 등에서도 같습니다.
루보티
Ruboty 설치 및 시작
Ruboty 자체의 설치나 기동(상주) 방법에 대해서는 여기서는 생략합니다.
사용하는 데이터베이스
구체적인 예로 사용할 데이터베이스를 준비합니다. 다음과 같이 Staff
라는 데이터베이스의 StaffData
레이아웃의 staff_data
라는 테이블을 사용합니다.
다음 5개의 열이 정의되어 있음을 알 수 있습니다.
id
name
gender
work
point
이 테이블에 대해 7개의 데이터가 채워집니다.
Ruboty 사양
ChatWork 상의 bot 에 대해, 다음과 같이 던지면, 그 id
의 사람의 name
를 돌려주도록 해 보겠습니다 (여기에서는 id
는 2
이군요). bot 의 이름은 srm
로 합니다.
srm このID誰? 2
Ruboty의 스크립트 작성
이제 스크립트를 작성해 보겠습니다. FileMaker API for Ruby (ginjo-rfm)에 대한 기사도 참조하십시오.
우선 필요한 것을 require
합니다.
restfm_ruboty.rbrequire 'rfm'
require 'open-uri'
require 'json'
다음에 접속 정보를 써 줍니다.
restfm_ruboty.rbRFM_CONFIG = {
:host => 'FileMaker Server のアドレス',
:account_name => 'ユーザ名',
:password => 'ユーザ名に対するパスワード',
:database => 'Staff',
:layout => 'StaffData',
:ssl => false # デフォルトが true なので注意
}
다음으로 Ruboty의 핵 부분을 써 봅시다. 우선은 엄청난 부분입니다 2
restfm_ruboty.rbmodule Ruboty
module Handlers
class Restfm < Base
on(/このID誰? (.*)/, name: "who_is_this_id", description: "指定したIDの人は誰か")
메인 메소드를 작성합시다. check_who_is_this_id
라는 메소드에 의해 @name
에 이름이 들어간다는 설계입니다.
restfm_ruboty.rb def who_is_this_id(message)
id = message.match_data.to_s.match(/このID誰? (.*)/)[1].to_s
check_who_is_this_id(id)
message.reply("ID #{id} の人の名前は #{@name} です!")
end
check_who_is_this_id 메소드를 작성해 봅시다. RESTfm은 http://hogehoge/RESTfm/에 위치한다고 가정합니다.
restfm_ruboty.rb def check_who_is_this_id(id)
json = open("http://hogehoge/RESTfm/Staff/layout/StaffData/id%3D%3D%3D#{id}.json").read
json_parse = JSON.parse(json)
@name = json_parse["data"][0]["name"] # [0] を忘れない
end
루비 스크립트 완성
위의 스크립트를 조합하면 완성됩니다. 완성된 스크립트는 다음과 같습니다.
restfm_ruboty.rbrequire 'rfm'
require 'open-uri'
require 'json'
RFM_CONFIG = {
:host => 'FileMaker Server のアドレス',
:account_name => 'ユーザ名',
:password => 'ユーザ名に対するパスワード',
:database => 'Staff',
:layout => 'StaffData',
:ssl => false # デフォルトが true なので注意
}
module Ruboty
module Handlers
class Restfm < Base
on(/このID誰? (.*)/, name: "who_is_this_id", description: "指定したIDの人は誰か")
def who_is_this_id(message)
id = message.match_data.to_s.match(/このID誰? (.*)/)[1].to_s
check_who_is_this_id(id)
message.reply("ID #{id} の人の名前は #{@name} です!")
end
def check_who_is_this_id(id)
json = open("http://hogehoge/RESTfm/Staff/layout/StaffData/id%3D%3D%3D#{id}.json").read
json_parse = JSON.parse(json)
@name = json_parse["data"][0]["name"] # [0] を忘れない
end
end
end
end
테스트해보기
바로 Ruboty에서 시도해 봅시다. 아래와 같이 표시되면 성공입니다!
srm このID誰? 2
ID 2 の人の名前は higashino です!
다양한 응용 프로그램 만들기
이번에는 RESTfm을 사용하여 Chatbot을 만들어 보았습니다. 웹 API를 사용할 수 있다는 소위 CRUD가 가능한 웹 응용 프로그램뿐만 아니라 Chatbot과 같은 응용 프로그램도 쉽게 만들 수 있습니다.
아이디어를 활용하여 다양한 응용 프로그램을 만들어보십시오 3
샘플 응용 프로그램이 있으며 프레임 워크가 많이 있습니다. ↩
거친 정규식이므로 적절하게 수정하십시오. ↩
이제 Amazon Dash Button을 사용하는 애플리케이션이 흥미로울 것 같습니다. ↩
Reference
이 문제에 관하여(RESTfm을 사용한 Chatbot 애플리케이션의 예), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/corselia/items/37381d40fe462cac4c0c
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
이제 스크립트를 작성해 보겠습니다. FileMaker API for Ruby (ginjo-rfm)에 대한 기사도 참조하십시오.
우선 필요한 것을
require
합니다.restfm_ruboty.rb
require 'rfm'
require 'open-uri'
require 'json'
다음에 접속 정보를 써 줍니다.
restfm_ruboty.rb
RFM_CONFIG = {
:host => 'FileMaker Server のアドレス',
:account_name => 'ユーザ名',
:password => 'ユーザ名に対するパスワード',
:database => 'Staff',
:layout => 'StaffData',
:ssl => false # デフォルトが true なので注意
}
다음으로 Ruboty의 핵 부분을 써 봅시다. 우선은 엄청난 부분입니다 2
restfm_ruboty.rb
module Ruboty
module Handlers
class Restfm < Base
on(/このID誰? (.*)/, name: "who_is_this_id", description: "指定したIDの人は誰か")
메인 메소드를 작성합시다.
check_who_is_this_id
라는 메소드에 의해 @name
에 이름이 들어간다는 설계입니다.restfm_ruboty.rb
def who_is_this_id(message)
id = message.match_data.to_s.match(/このID誰? (.*)/)[1].to_s
check_who_is_this_id(id)
message.reply("ID #{id} の人の名前は #{@name} です!")
end
check_who_is_this_id 메소드를 작성해 봅시다. RESTfm은 http://hogehoge/RESTfm/에 위치한다고 가정합니다.
restfm_ruboty.rb
def check_who_is_this_id(id)
json = open("http://hogehoge/RESTfm/Staff/layout/StaffData/id%3D%3D%3D#{id}.json").read
json_parse = JSON.parse(json)
@name = json_parse["data"][0]["name"] # [0] を忘れない
end
루비 스크립트 완성
위의 스크립트를 조합하면 완성됩니다. 완성된 스크립트는 다음과 같습니다.
restfm_ruboty.rbrequire 'rfm'
require 'open-uri'
require 'json'
RFM_CONFIG = {
:host => 'FileMaker Server のアドレス',
:account_name => 'ユーザ名',
:password => 'ユーザ名に対するパスワード',
:database => 'Staff',
:layout => 'StaffData',
:ssl => false # デフォルトが true なので注意
}
module Ruboty
module Handlers
class Restfm < Base
on(/このID誰? (.*)/, name: "who_is_this_id", description: "指定したIDの人は誰か")
def who_is_this_id(message)
id = message.match_data.to_s.match(/このID誰? (.*)/)[1].to_s
check_who_is_this_id(id)
message.reply("ID #{id} の人の名前は #{@name} です!")
end
def check_who_is_this_id(id)
json = open("http://hogehoge/RESTfm/Staff/layout/StaffData/id%3D%3D%3D#{id}.json").read
json_parse = JSON.parse(json)
@name = json_parse["data"][0]["name"] # [0] を忘れない
end
end
end
end
테스트해보기
바로 Ruboty에서 시도해 봅시다. 아래와 같이 표시되면 성공입니다!
srm このID誰? 2
ID 2 の人の名前は higashino です!
다양한 응용 프로그램 만들기
이번에는 RESTfm을 사용하여 Chatbot을 만들어 보았습니다. 웹 API를 사용할 수 있다는 소위 CRUD가 가능한 웹 응용 프로그램뿐만 아니라 Chatbot과 같은 응용 프로그램도 쉽게 만들 수 있습니다.
아이디어를 활용하여 다양한 응용 프로그램을 만들어보십시오 3
샘플 응용 프로그램이 있으며 프레임 워크가 많이 있습니다. ↩
거친 정규식이므로 적절하게 수정하십시오. ↩
이제 Amazon Dash Button을 사용하는 애플리케이션이 흥미로울 것 같습니다. ↩
Reference
이 문제에 관하여(RESTfm을 사용한 Chatbot 애플리케이션의 예), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/corselia/items/37381d40fe462cac4c0c
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
require 'rfm'
require 'open-uri'
require 'json'
RFM_CONFIG = {
:host => 'FileMaker Server のアドレス',
:account_name => 'ユーザ名',
:password => 'ユーザ名に対するパスワード',
:database => 'Staff',
:layout => 'StaffData',
:ssl => false # デフォルトが true なので注意
}
module Ruboty
module Handlers
class Restfm < Base
on(/このID誰? (.*)/, name: "who_is_this_id", description: "指定したIDの人は誰か")
def who_is_this_id(message)
id = message.match_data.to_s.match(/このID誰? (.*)/)[1].to_s
check_who_is_this_id(id)
message.reply("ID #{id} の人の名前は #{@name} です!")
end
def check_who_is_this_id(id)
json = open("http://hogehoge/RESTfm/Staff/layout/StaffData/id%3D%3D%3D#{id}.json").read
json_parse = JSON.parse(json)
@name = json_parse["data"][0]["name"] # [0] を忘れない
end
end
end
end
바로 Ruboty에서 시도해 봅시다. 아래와 같이 표시되면 성공입니다!
srm このID誰? 2
ID 2 の人の名前は higashino です!
다양한 응용 프로그램 만들기
이번에는 RESTfm을 사용하여 Chatbot을 만들어 보았습니다. 웹 API를 사용할 수 있다는 소위 CRUD가 가능한 웹 응용 프로그램뿐만 아니라 Chatbot과 같은 응용 프로그램도 쉽게 만들 수 있습니다.
아이디어를 활용하여 다양한 응용 프로그램을 만들어보십시오 3
샘플 응용 프로그램이 있으며 프레임 워크가 많이 있습니다. ↩
거친 정규식이므로 적절하게 수정하십시오. ↩
이제 Amazon Dash Button을 사용하는 애플리케이션이 흥미로울 것 같습니다. ↩
Reference
이 문제에 관하여(RESTfm을 사용한 Chatbot 애플리케이션의 예), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/corselia/items/37381d40fe462cac4c0c
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(RESTfm을 사용한 Chatbot 애플리케이션의 예), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/corselia/items/37381d40fe462cac4c0c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)