새우와 LINE하는 기분이 될 수 있는 ChatBot을 PictRuby로 만들어 보았다

안녕하세요. 중간 20 체렌코프입니다.
qiita 첫 투고입니다. 잘 부탁드립니다.

최근 ChatBot이 뜨겁고,
요 전날 LINE의 BOT API가 공개되어 조속히 @masuidrive씨가 놀고 계신다.
우선 LINE BOT API로 앵무새를 만들어 보았다 - Qiita

총재의 블로그는 점심에서 연결되지 않는다.
하테나 북마크 - 2016년 후반은 bot이 올 것이다. LINE-bot 만들었지만 진짜로 위험하다. | 후쿠 유키 블로그

탈 수밖에 없다 이 빅 웨이브에

새우와 LINE이 하고 싶어서



PictRuby v0.5에서 LINE BLOG 기사를 사용하여 ChatBot을 만들었습니다.
※기사는 RSS로 취득합니다.


놀이 방법



ios 앱의 PictRuby을 설치하고 아래 코드를 복사하여 실행.
최신 10건의 타이틀이 표시되므로 대응하는 숫자를 중얼거리면 대화가 시작됩니다.
LINE 고유? 의 이모티콘은 깨진 것 같습니다 😢
RSS의 URL을 바꾸면 다른 아이돌의 LINE BLOG도 갈 수 있습니다.

line_like_chatbot.rb
#line_like_chatbot v0.1
class Chat
  def initialize
    feed = "http://lineblog.me/ebichu/index.rdf"
    count = 10
    url = "https://query.yahooapis.com/v1/public/yql?q=SELECT%20title%2Clink%2Cencoded%20FROM%20rss%20WHERE%20url%3D%22" + URI.encode_www_form_component(feed) + "%22%20%7C%20truncate(count%3D" + count.to_s + ")&format=json"
    data = Browser.json url
    @menu = []
    @text = []
    data['query']['results']['item'].each_with_index {|item,i|
      @menu.push "#{i+1}:#{item['title']}"
      @text.push item['encoded']
    }
    @menu = @menu.join("\n")
    @select_index = nil
    @stdout = nil
    @i = -1
  end

  def welcome
    @menu
  end

  def call(input)
    if @select_index == nil
      @select_index = input.to_i 
      src = @text[@select_index-1]
      url = "http://api.dan.co.jp/lleval.cgi?l=rb&s=" + URI.encode_www_form_component("p '#{src}'")+".gsub(%2F%5Cn%5Cs%2B%7C(%3Cbr%5Cs%5C%2F%3E)%2B%2F%2C%22%5Cn%22).gsub(%2F%3C(%22%5B%5E%22%5D*%22%7C'%5B%5E'%5D*'%7C%5B%5E'%22%3E%5D)*%3E%2F%2C'').gsub(%2F(%5CA%5Cn%2B%7C%5Cn%2B%5Cz)%2F%2C%22%22).split(%2F%5Cs*%5Cn%2B%5Cs*%2F)"
      json = Browser.json url
      @stdout = eval(json['stdout'])
      @i += 1
      @stdout[@i].strip
    else
      @i += 1
      @i < @stdout.size ? @stdout[@i].strip : "おわり🍤"
    end
  end
end

감상



Ruby 거의 쓴 적이 없고 여러가지 빠져서 힘들었다. 밤 냄새 맡기기 5 일. p와 puts로 멀티바이트 문자열의 보이는 방법이 바뀌어 8진수 표기의 문자열 어떻게 하면 에넨! 라든지.
PictRuby는 JSON을 가지고 이것 때문에 YQL 에서 기사를 JSON으로 가공하여 취득했다.
그리고 PictRuby0.5에서는 정규 표현에 대응하고 있지 않기 때문에 @ 단코가이씨의 lleval 로 HTML 태그 제거에 성공했다. 진짜 감사.
gsub의 정규 표현의 더블 쿼테이션이라든가 이스케이프 해도 leval로 에러로 돌아왔기 때문에, 사전에 encode 해 붙이면 잘 갔다.
PictRuby 0.5 출시 - 챗봇, eval, irb - 블로그 완고
※ 차기 버전에서 정규 표현 대응한다는 것. 기대! !

PictRuby는 샘플이 잘 되어 있어, 학연 과학의 후로쿠와 같은 두근두근감을 맛볼 수 있습니다!

이쪽으로부터의 온가에시는 이상입니다! ! ! ! ! @ 온가에시

좋은 웹페이지 즐겨찾기