💨
cloud functions ✖︎ LINE bot
概要
LINE botにメッセージを送ると何かしらのメッセージを返してくれるbotを作っていきます。
今回はcloud functions と node.js 16で開発してきます。
LINE developerの設定
チャネルシークレット、チャネルアクセストークンを取得
LINE チャンネルの作成・設定をに沿って、チャンネル設定とチャネルシークレット、チャネルアクセストークンの取得をします。
ローカル開発環境構築
gcloud cliをインストール
gcloud cliをインストールするとgcloudコマンドが使えるようになります。
下記の設定を終えると、google cloudのプロジェクトへの認証が完了します。
gcloud CLI 公式ドキュメント
GCPのgcloudコマンドのインストールと最初の認証までを初心者向けに細かく解説
ライブラリ
node.js 16
@line/bot-sdk 7.5.2
@google-cloud/functions-framework 3.1.3
dotenv 16.0.3
ディレクトリ構成
.
├── .env
├── index.js
├── package.json
└── yarn.lock
コード
index.js
const line = require('@line/bot-sdk');
const functions = require('@google-cloud/functions-framework');
require('dotenv').config();
functions.http('main',async (req, res) => {
const events = req.body.events;
const client = new line.Client({
channelAccessToken: process.env.CHANNEL_ACCESS_TOKEN,
channelSecret: process.env.CHANNEL_SECRET,
});
const result = await client.replyMessage(events[0].replyToken, { type: 'text', text: 'こんにちわーるど' });
res.json(result);
});
cloud functionsへデプロイ
gcloud functions deploy test-func
--gen2 /
--region=asia-northeast1 /
--runtime=nodejs16 /
--source=./ /
--entry-point=main /
--trigger-http /
--allow-unauthenticated /
webhookの設定
ハマったポイント
デプロイの際に--allow-unauthenticatedオプションを忘れていた為、 HTTPを送っても403エラーが返ってくるようになり、少しハマってしまいました。--allow-unauthenticatedを付与してあげることで、cloud functionsに未認証でもアクセスできるようになります。
Discussion