💨

cloud functions ✖︎ LINE bot

2023/01/03に公開

概要

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の設定

webhookの設定

ハマったポイント

デプロイの際に--allow-unauthenticatedオプションを忘れていた為、 HTTPを送っても403エラーが返ってくるようになり、少しハマってしまいました。--allow-unauthenticatedを付与してあげることで、cloud functionsに未認証でもアクセスできるようになります。

参考

google cloud 入門ガイド

Discussion