2016年04月08日

LINE さんから Bot が作れる API がリリースされたということなのでikachanと昔なつかしYappocallの LINE 版を作ってみました。

実物はこちらhttp://yappocall.yappo.jp/
初代 Yappocall は APNs で実装してましたが、今度は LINE を使ってるので僕からのお知らせが表示されてて双方向インタラクションな未来が来てる!

LINE の開発者画面で Bot の作成を行い必要な設定を済ませた後、 Bot 連携するために必要な情報をソースコードに書いて実行するだけで簡単に ikachan のような単純な Web API が設置出来ます。
ソースコードの設定以外にも必要な作業があって、作成した LINE Bot を友だちに追加してから API で利用する appname の登録を行い api_token を生成する必要があります。
ln.yappo を利用した bot は以下の様なコマンドを受け付けているので、 add コマンドで appname の登録と api_token の取得が出来ます。 $SECRET は lnyappo.pl の中で設定した、連携時に使うパスワードのようなものです。知らない人には API の利用をさせないという安全弁です。

ln.yappo Help

1. add
  > $SECRET add $yourAppName

2. delete
  > $SECRET del $yourAppName

3. send message to callback url
  > $SECRET send $yourAppName $message

4. list
  > $SECRET list

5. help
  > $SECRET help

appname と api_token を lnyappo.pl に設定すると本格的に利用可能になるので API を呼ぶでも良いですし、立ち上げた http server にアクセスすると簡単にメッセージを送るフォームが出てくるので、それを利用すると以下の様な感じで LINE にリアルでメッセージが届きます。

これだけでもいいんですが ln.yappo には、LINE で発言したテキストを ln.yappo の Web UI で設定した callback url に送信する事が可能になってるので、より LINE らしいかたちの ikachan になりました。

たとえば

  • 監視アラート
  • Raspberry Pi から LINE にデータを送る
  • 外出先から Raspberry Pi にコマンドを送る
  • ぎっはぶ連携
  • LINE から Twitter にポストする
  • ほかほか
といった活用が考えられます。

特に現状の制限だと、一人あたり1個の Bot しか作れないとのことなので、この ikachan を Hub にして各種システムと連携すると、効率的に LINE Bot で遊べる事でしょう。
という理由もあって appname を登録して一人あたり複数の api_token を払い出し、複数の callback url を設定できる仕組みにしておきました。

ln.yappo を活用したサンプルとして Yappocall という、 Web 上で POST したメッセージを紐付けた人の LINE に送信する。 LINE から送信したお知らせを Web 上に表示するという簡単なアプリも書いてみたので参考にしてください。

ikachan は IRC ベースなので LINE 向けの Bot とは意識する場所が大きく違っていますが、差異に気をつければ古き好き IRC Bot 職人の皆様も簡単に LINE Bot がかけると思います。

  • IRC は irc server と常に接続し続けるが、 LINE は message が callback API に届く、 Bot からの送信は API を叩く
  • IRC は channel 単位に送信すれば全員に送信できるが、 LINE は個別に送信する
  • IRC はいきなり channel に送信しても問題ないが、 LINE だとトークの画面上で利用者の紐付け処理入れといたほうがよさそう
  • というか ikachan 的なの作りたい時は、外の別システムから誰に送りたいかを安全よりな方向で設計しときたい
  • IRC みたいに複数人に同報送信したい時は、複数人の api_token を管理しといて、送信したい人ぶん送っとけば良い

烏賊ソース
https://github.com/yappo/ln.yappo


どうぞご利用下さい。

Posted by Yappo at 16:21 | Comments (0) | TrackBack (0) | tech