LINEBOTを作る 2023/08/07
現在時刻 2023/8/6 13:51
外暑いですね。
クーラーガンガンにしながら室内作業ですよ。
さて、実は今LINEBOTのプロトタイプを公開しようとしておりまして
その流れでLINEBOTの作り方を記事にしてみようと思います。
必要なモノは
・LINE公式アカウント
・AWSのアカウント
AWS Lambdaを使用します。
AWS Lambdaって何?って方は以下参照
ざっくり流れは
LINE公式でチャネルアクセストークン・シークレットトークン発行
↓
AWS Lambdaの環境変数に追加
↓
SDKをインストールしてzipで固めてAWS Lambda
↓
そのzipをLambda関数のレイヤーに追加
↓
API Gatewayを設定
↓
そのURLを LINE Developerのwebhookに設定
↓
他に必要なSDKを同じ要領でインストール→zip→レイヤー追加
↓
ソースコード書いて終わり
LINEとAWS Lambdaを繋げるためにLINE Developersからチャネルアクセストークンを発行します。
チャネルアクセストークンについては以下参照
次にWindowsの方はWSLを連携させたVSCodeのターミナルを開く、
Macの方はターミナルを開く。
WSLが入っていない場合は以下にUbuntu環境を構築する方法とWSLとVSCodeの連携方法のURLを記載しておくのが連携しよう。
ターミナルを開いたら任意のフォルダで
mkdir python
cd python
pyhtonというフォルダを作ります。
これは、AWS LambdaにpyhtonのSDKをレイヤーとして追加するときの
zipファイルは必ずpythonという名前でフォルダを作らなきゃいけないからです。pythonフォルダに移動したあと…
sudo apt update
sudo apt install python3-pip
とりあえずアップデートしております。
そのあとでline-bot-sdkを取得します。
pip install line-bot-sdk -t . --no-user
ls
lsするとこんな感じ
aenum attrs frozenlist-1.4.0.dist-info past typing_extensions-4.7.1.dist-info
aenum-3.1.15.dist-info attrs-23.1.0.dist-info future pycache typing_extensions.py
aiohttp bin future-0.18.3.dist-info pydantic urllib3
aiohttp-3.8.5.dist-info certifi idna pydantic-2.1.1.dist-info urllib3-2.0.4.dist-info
aiosignal certifi-2023.7.22.dist-info idna-3.4.dist-info pydantic_core wrapt
aiosignal-1.3.1.dist-info charset_normalizer libfuturize pydantic_core-2.4.0.dist-info wrapt-1.15.0.dist-info
annotated_types charset_normalizer-3.2.0.dist-info libpasteurize python_dateutil-2.8.2.dist-info yarl
annotated_types-0.5.0.dist-info dateutil linebot requests yarl-1.9.2.dist-info
async_timeout deprecated line_bot_sdk-3.2.0.dist-info requests-2.31.0.dist-info
async_timeout-4.0.2.dist-info Deprecated-1.2.14.dist-info multidict six-1.16.0.dist-info
attr frozenlist multidict-6.0.4.dist-info six.py
ぎっしり入ってきます。
中が確認出来たら
cd ..
sudo apt install zip
cd .. で上の階層に戻ります。
zip -r python.zip python
戻った後でzipで固めます。
固めたらAWS Lambdaに移る!
レイヤー作ったら次関数の作成。
関数が出来上がったら…
次にAPI Gatewayを作成。
環境変数を設定する
Messaging API のチャネルアクセストークンとチャネルシークレットを
環境変数に設定します。
チャンネルシークレットはLINE Developersのプロバイダからチャンネル基本設定にある
環境変数を設定したら
LINE Developersコンソールに入りWebhook URLを設定。
Messaging API設定→応答メッセージ→編集
あとは同じ要領でOpenAIのシークレットキーとSDKを手に入れてzipで固めて
レイヤーに追加。
↑に飛んで、アカウントを登録していなければ登録しよう。
登録したあと
右上の
Pearsonal→View API Keys→Create New secret key
発行が終わるとシークレットキーをコピー出来る。
この時にコピーしておかないと再発行しないといけなくなるので要注意。
それをさっきと同じ要領でLambda側の環境変数にSECRET_KEYとかの名前で登録しておく。
SDKのインストールも同じで、さっきのpyhtonフォルダとpython.zipはどっかによけるかdeleteした上でもう一回…
mkdir python
cd python
pythonフォルダに移った後で、
pip install openai -t . --no-user
ls
インストールが終わっていればこんな感じ↓
aiohttp async_timeout-4.0.2.dist-info certifi frozenlist-1.4.0.dist-info openai tqdm-4.65.0.dist-info
aiohttp-3.8.5.dist-info attr certifi-2023.7.22.dist-info idna openai-0.27.8.dist-info urllib3
aiosignal attrs charset_normalizer idna-3.4.dist-info requests urllib3-2.0.4.dist-info
aiosignal-1.3.1.dist-info attrs-23.1.0.dist-info charset_normalizer-3.2.0.dist-info multidict requests-2.31.0.dist-info yarl
async_timeout bin frozenlist
そして一つ上の階層に戻ってpyhtonフォルダをzipに固める。
cd ..
zip -r python.zip python
ls
lsで中身を見るとzipが出来ているはず。
python python.zip
zipに固めたらさっきと同じ要領でレイヤー追加していく。
作成が終わったら関数にレイヤー追加。
ここまで出来たらラムダのタイムアウト設定をちょっと変えます。
編集ボタンを押下してタイムアウト時間をのばしましょう。
MAX15分までいけます。
あとは僕が前に書いた記事のboto3使う記事を参照して、
同じ要領でレイヤー追加して
これから書く有料記事を参照して
ソースコード貼っちゃえば
トレーニングBOTが完成します。(するはずw)
この記事が気に入ったらサポートをしてみませんか?