LINE Notify を AWS Lambda (Node.js) から利用してみた

  • 25
    いいね
  • 1
    コメント

先日の LINE DEVELOPER DAY 2016 で LINE Notify が発表されました。これを利用して独自のボットが作れそうなので、今回は AWS Lambda で簡単なボットの作成を試してみました。

screenshot0.jpg

Lambda を利用することで、自分にサーバを持たずにボットを運用することができます(いわゆるサーバレス)。

トークンの取得

  • https://notify-bot.line.me/ja/ にログインし マイページ にアクセスします。

    ログインの為の ID とパスワードは LINE アプリで登録・確認できると思います。

    スクリーンショット 2016-10-04 16.12.09.png

  • トークンを発行する ボタンを押下します。

    スクリーンショット 2016-10-04 16.12.33.png

  • ボット名を適当に入力し 1:1で〜 を選択します。

    自分はほぼ LINE を利用してないのでよく分かりませんが、画面を見る限りトークルーム?なるものも選択できるのでしょうか。

    スクリーンショット 2016-10-04 16.15.48.png

  • トークンが発行されるのでメモっておきます。

    スクリーンショット_2016-10-04_16_16_12.png

  • マイページに戻ると、次のように「連携済みのサービス」が追加されています。

    スクリーンショット 2016-10-04 16.16.51.png

とりあえず LINE Notify の動作確認

curl コマンドで POST してみます。

curl -X POST -H 'Authorization: Bearer __YOUR_TOKEN__' -F "message=Hello!" https://notify-api.line.me/api/notify

__YOUR_TOKEN__ の箇所は先程メモしたトークンに置き換えてください。

自身の LINE アプリにメッセージが届けば OK です。

screenshot0.jpg

Lambda でボットの作成

Node.js で作成しました。ソースコードはこちら。
https://github.com/hkusu/lambda-linenotify-bot

Babel ベースの ES2015 を利用 & npm でモジュール管理しています。

利用できる npm scripts は README.md もしくは package.json を参照ください。$ npm run build で Babel でのトランスパイル、および、AWS へアップロードする用のアーカイブが生成できるようになっています。生成されたアーカイブを AWS のコンソールからアップロードすれば Lambda で動きます。Lambda の TriggersCloudWatch Events(Schedule) を選択すれば、cron のように定期実行が可能です。

ボット本体は src/handler.js です。下記のように POST で Hello! というメッセージを送るだけの単純なものです。

src/handler.js
// ...

axios(
  {
    method: 'post',
    url: 'https://notify-api.line.me/api/notify',
    headers: {
      Authorization: `Bearer ${token}`,
      'Content-Type': 'application/x-www-form-urlencoded',
    },
    data: querystring.stringify({
      message: 'Hello!',
    }),
  }
)
 .then(res => callback(null, res.data))
 .catch(err => callback(err))

// ...

AWS の他のリソース(例:DynamoDB等)は利用していないので、ローカルでも実行できるはずです。

$ npm run local-run

screenshot0.jpg

参考にさせて頂いた記事

ほか

LINE Notify ではありませんが、今回と同じように Lambda で作った Twitter ボットのソースコードです。ご参考まで。
https://github.com/hkusu/lambda-twitter-bot