31
28

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2016-10-04

先日の 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

31
28
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
31
28

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?