이번에도 라울님과 대화할 수 있는 LINE bot을 만들어 보려고 그만뒀습니다 → 움직였습니다
라울님이란?
드라쿠에 10에서 No.1 꽃미남 분입니다.
정말 멋지고 올해 나이트 총선에서 1위를 차지했습니다.
그런 라울님과 항상 대화하고 싶다! 그 소원을 실현합시다.
bot를 어떻게 움직이는가?
흩어져서 heroku로 했습니다.
준비
mkdir linebot
cd linebot/
virtualenv venv27
source venv27/bin/activate
pip install flask
구현
중요한 callback는 이런 느낌입니다.
app.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import random
import requests
import json
from flask import Flask
from flask import request
from flask import abort
from flask import jsonify
app = Flask(__name__)
def messages(text):
raul = [u'俺のそばに来い!',
u'くじけるな!',
u'……手のかかる娘だ!',
u'その扉にはさわらないほうがいい。命が惜しいならな。',
u'元気そうでなによりだ。',
u'……名はラウルだ。よろしく頼むよ命知らずのお嬢さん? ',
u'オバケが怖いのか?',
u'キミは面白いな…。',
u'ああ…だが無理はするなよ。',
u'……キミと同着だったようにみえたが?',
u'……キミは 知らないほうがいいことだ。',
u'……いいいやしの術だ。天国の親父が手をふってるのが見える。',
u'すこし 眠りたいな……。',
u'子守歌がわりにキミの話を聞かせてくれ。']
if u'ラウル' in text:
return raul[random.randint(0, len(raul))]
elif u'抱いて' in text:
return u'……俺のそばを 離れるなよ'
return u'…'
@app.route('/callback', methods=['POST'])
def callback():
if not request.json:
abort(400)
results = request.json['result']
headers = {'Content-Type': 'application/json; charset=UTF-8',
'X-Line-ChannelID': 'xxxxxxxxxxxxxx',
'X-Line-ChannelSecret': 'xxxxxxxxxxxx',
'X-Line-Trusted-User-With-ACL': 'xxxxxxxxxx'}
proxies = {'https': 'fixie の Proxy URL'}
data = {'to': '',
'toChannel': 1383378250,
'eventType': '138311608800106203',
'content': {'contentType': 1,
'toType': 1,
'text': ''}}
for result in results:
data['to'] = [result['content']['from']]
data['content']['text'] = messages(result['content']['text'])
r = requests.post('https://trialbot-api.line.me/v1/events',
data=json.dumps(data),
headers=headers,
proxies=proxies)
print r.text
return jsonify('OK')
if __name__ == '__main__':
app.run()
그리고 배포에~
그런데, 실장하면,로 풀어 봅니다.
gunicorn을 사용합니다. 방법은 만마코 거리입니다.
pip install gunicorn
pip freeze > requirements.txt
echo web: gunicorn app:app --log-file - > Procfile
git init
git add .
git commit -m 'initial'
heroku login
heroku create
git push heroku master
heroku open
그리고 어쩐지 여러가지 빠져들어 있는 것 같습니다만 이 기사 를 참고로 fixie 사용하기로 했습니다. 적당히 놓으십시오.
덧붙여서 자신이 제일은 빠진 것은 fixie의 화면에서 어디에 IP가 쓰여 있는지 몰라서 20분 정도 어색하거나 이쪽이거나 하고 있었습니다! ! 111
아래 이미지에서 말하면 오른쪽 상단의 Account라는 버튼을 누르자.
그래서 이것으로 움직여 OK! 흥미로운
InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning.
같아서 버리면,
pip install requests[security]
하자.
그래서 이것으로 마침내 움직일 것입니다.
{"statusCode":"500","statusMessage":"unexpected error found at call bot api sendMessage"}
가 돌아오고, 이제 귀찮아서 일단 여기까지 했습니다. 나중에 신경이 쓰면 한다. 500이라면 정말 무슨 일이 일어나고 있는지 모르겠네요.
우선 heroku와 fixie는 편리하다고 하는 일기가 되었습니다.
하라 울과 대화하고 싶습니다.
추가
코멘트의 지적에 있듯이, content 안에 포함되는 from 에 보내 주지 않으면 안 되었던 것 같습니다. 잘 생각하면 그렇다고 하네요. 그래서 코드도 수정했습니다. 여러분 감사합니다 m (__) m
짱
Reference
이 문제에 관하여(이번에도 라울님과 대화할 수 있는 LINE bot을 만들어 보려고 그만뒀습니다 → 움직였습니다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mayutan/items/b25d4ac6d8eee07a3e54텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)