こんな感じで画像を送ると画像を送り返してくれるLINE Botを作ってみます。
途中でGyazoのAPIに送っているのですが、GyazoのモジュールがMakeにないのでHTTPモジュールとJSONモジュールで処理を行なっています。
使うモジュールは5つ
- LINE: Watch Event
- LINE: Download a Message Attachement
- HTTP: Make a Request
- JSON: Parse json
- LINE: Send a Broadcast Message
これらを使っています。
また、Gyazoのアクセストークンを取得しておきます。
1. Download a Message Attachement
でファイルをダウンロードする
Download a Message AttachementにはMessage IDを入れることができるので、Watch Eventから送られたメッセージIDを設定します。
2. HTTPモジュールでGyazo APIを叩いてアップロードする
一つ前のDownload a Message Attachement
からバイナリデータが送られてきます。
Gyazo APIのドキュメントをみつつ、以下のように
- URL: https://upload.gyazo.com/api/upload
- Method: POST
- Body type: Multipart/form-data
- Item1:
- Field type: Text
- Key: access_token
- Value:
取得した自身Gyazoのアクセストークン
- Item2:
- Field type: File
- Key: imagedata
- File:
LINE - Download Message Attachement
を選択
画像を参考にして設定しましょう。
これでLINEからダウンロードした写真がGyazoにアップロードされます。
3. JSONモジュールでパースする
あとはGyazoにアップロードされたURLを取得したいのですが、このままだとDATAというKeyにJSONが丸っと返却されてくるのでJSONモジュールでパースします。
と言ってもDataを入れるだけ。
4. LINEで送信する
LINEで画像を送信する際にはMessage TypeをImageにする必要があるので設定します。
そして、パースされたJSONの中にURLというKEYがあるのでそれをOriginal Content URLとPreview Image URLに設定してあげればOKです。
5. Run Onceで試す。
最後にRun Onceで起動させて、画像を送ってみるとちゃんと画像を送り返してくれます。
画像を送ると画像を送り返してくれるだけですが、裏側ではGyazoに保存を咬ませている感じですね。
お疲れ様でした。