RESTfm을 사용한 Chatbot 애플리케이션의 예

11478 단어 루보티FileMaker

RESTfm을 사용한 Chatbot 애플리케이션의 예



마지막 날에는 드디어 RESTfm을 사용하는 응용 프로그램을 만들어 보겠습니다. 다만, 보통의 CRUD 를 할 수 있는 어플리케이션에서는 재미있지 않습니다 1

그래서 이번에는 Chatbot을 만들어 보겠습니다. Read 하고 싶은 레코드를 지정하면 bot 가 그 레코드의 내용을 돌려준다고 하는 간단한 것입니다.

환경



여러 사정이 있어 다음과 같은 구성으로 합니다. 본질적인 내용은 Hubot + Slack 등에서도 같습니다.
  • ChatWork

  • 루보티
  • ruboty-chatwork


  • Ruboty 설치 및 시작



    Ruboty 자체의 설치나 기동(상주) 방법에 대해서는 여기서는 생략합니다.

    사용하는 데이터베이스



    구체적인 예로 사용할 데이터베이스를 준비합니다. 다음과 같이 Staff라는 데이터베이스의 StaffData 레이아웃의 staff_data라는 테이블을 사용합니다.





    다음 5개의 열이 정의되어 있음을 알 수 있습니다.
  • id
  • name
  • gender
  • work
  • point

  • 이 테이블에 대해 7개의 데이터가 채워집니다.

    Ruboty 사양



    ChatWork 상의 bot 에 대해, 다음과 같이 던지면, 그 id 의 사람의 name 를 돌려주도록 해 보겠습니다 (여기에서는 id2 이군요). bot 의 이름은 srm 로 합니다.
    srm このID誰? 2

    Ruboty의 스크립트 작성



    이제 스크립트를 작성해 보겠습니다. 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.rb
    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을 사용하는 애플리케이션이 흥미로울 것 같습니다.

    좋은 웹페이지 즐겨찾기