画像が送られた場合:
テキストが送られた場合: リアクション自由
LINEで送られた画像にはID番号が与えられており、実は先週B:でやったコードの最後の方:
@handler.add(MessageEvent, message=ImageMessage)
def handle_message(event):
line_bot_api.reply_message(
event.reply_token,
TextSendMessage(text=event.message.id))
ここは、画像が送られるとそのID番号を返すようになっています。ここを参考にしてください。
また、A:の方で先週まではファイルをopenして判定していましたが、これをLINEの画像に変えなければなりません。
ファイルをopenするコードは
image = np.array(Image.open(filepath).resize((25, 25)))
でしたが、トークンと画像のID番号を与えて、
channel_access_token = 'ImCMJxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx3ZxP+lbAdL4f4owwdB04t89/1O/w1cDnyilFU=' # トークン
ImageId = '7948553537596' # 画像のID番号
r = requests.get('https://api.line.me/v2/bot/message/' + ImageId + '/content', headers={'Authorization': 'Bearer ' + channel_access_token})
image = np.array(Image.open(BytesIO(r.content)).resize((25, 25)))
とするとLINEの画像をopenできます。(ただしrequestsというパッケージが必要)
注意:学内のPCからだとアクセス制限がかかっているようで、certificate verify failed
となり画像を取得できません。Herokuで実行してください。
必要となるパッケージの例は以下のようなものです
import os
import sys
import numpy as np
import requests
from flask import Flask, request, abort
from PIL import Image
from keras.models import model_from_json
from io import BytesIO
from linebot import (
LineBotApi, WebhookHandler
)
from linebot.exceptions import (
InvalidSignatureError
)
from linebot.models import (
MessageEvent, TextMessage, TextSendMessage, ImageMessage,
)
ポイントとなるコードの例を示します。
???
や:
の箇所は隠してありますので考えてみてください。
@handler.add(MessageEvent, message=ImageMessage)
def handle_message(event):
r = requests.get('https://api.line.me/v2/bot/message/' + ??? + '/content', headers={'Authorization': 'Bearer ' + channel_access_token})
image = np.array(Image.open(BytesIO(r.content)).resize((25, 25)))
:
:
result = ???
if result[0] == 1:
ans = "愛はすべてに打ち勝つ"
else:
ans = "いい画像ですね"
line_bot_api.reply_message(
event.reply_token,
TextSendMessage(text=???))
herokuコマンドを使い始める前には:
> $env:home = "F:"
(環境変数home
を一時的にUSBメモリにしておきます)
gitコマンドを使い始める前には:
> git config --global user.email "xxx@yyy"
(最初にメアドを登録しておきます)
が必要です。
> heroku logs
で出てくるログをがんばって解析してください。
git(for windows)とHeroku CLIをインストールすればできると思います。