새우와 LINE하는 기분이 될 수 있는 ChatBot을 PictRuby로 만들어 보았다
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는 샘플이 잘 되어 있어, 학연 과학의 후로쿠와 같은 두근두근감을 맛볼 수 있습니다!
이쪽으로부터의 온가에시는 이상입니다! ! ! ! ! @ 온가에시
Reference
이 문제에 관하여(새우와 LINE하는 기분이 될 수 있는 ChatBot을 PictRuby로 만들어 보았다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/cherenkov/items/c6a744639a39a693810b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)