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.)