- なんだか難しそう,,
- botの意味もよく分からない,,
- 途中で有料になりそうで不安だな,,
私も最初はそう思っていましたが、やってみると全無料で、サクッと作成できました。 最後まで読んでいただくと**メッセージ自動送信bot**、が作成できます。
〜目次〜
[1. LINEMessagingAPI](#1-linemessagingapi) [2. Lineの操作](#2-lineの操作) [2-1. モジュールのインストール](#2-1-モジュールのインストール) [2-2. jsonファイルの作成](#2-2-jsonファイルの作成) [2-3. jsonの読み込み](#2-3-jsonの読み込み) [2-4. 送信モジュールのインポート](#2-4-送信モジュールのインポート) [2-5. 使用するチャンネルの指定](#2-5-使用するチャンネルの指定) [2-6. テキストの作成](#2-6-テキストの作成) [2-7. LINEメッセージの送信](#2-7-lineメッセージの送信) [3. GitHubの登録とファイルのpush](#3-githubの登録とファイルのpush) [3-1. GitHubの登録](#3-1-githubの登録) [3-2. Repositoryと作業ディレクトリの紐付け](#3-2-repositoryと作業ディレクトリの紐付け) [4. GitHubActionsで送信の自動化](#4-githubactionsで送信の自動化) [4-1. pythonファイルの作成](#4-1-pythonファイルの作成) [4-2. main.pyのpush](#4-2-mainpyのpush) [4-3. GitHubActionsの設定](#4-3-githubactionsの設定) [4-4. 自動送信のタイミング指定](#4-4-自動送信のタイミング指定) [5. 終わりに](#5-終わりに)#1. LINEMessagingAPI
LINEMessagingAPIからログイン
ログインアカウントは自分の個人アカウント。ビジネスアカウントがある方はどちらを使用していただいても構いません。
ダッシュボード画面が表示されたら、Provider(誰が提供するか)を作成 nameは自由に決めて下さい。
モバイル画像のLINE Messaging API選択がある方はそちらを選択して下さい。 ikon画像(誰から届くか)の選択 Channel nameはメッセージを送ってくる人の名前や企業名など
description(今から作成する自動メッセージbotの説明) 記入は必要ですが、詳しく書く必要はありません。 Categoryは当てはまる項目を選択しましょう。
2つのチェックボックスにチェックを入れたら、createを押して作成を完了します。
MessagingAPIのタブを選択するとIDとQRコードが出来上がっているはずです。 どちらかを使って友達登録をしていきます。 LINEにデフォルトメッセージが送信されていることも確認しておきましょう。
そのまま下の方にスクロールしていくと、Channel access tokenの項目があるので、ISSUEを押して、トークンを発行しておきましょう。
次にBasic settingsのタブに移動して、一番下にYour user IDが記載されていることも確認しておきましょう。 ![スクリーンショット_2021-04-09_11_10_18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/912206/fe47df66-2452-0309-64f7-e094df660b9a.png)
登録が完了したらbot作成準備は終わりです。
次は、コードを書いていきます。
#2. LINEの操作 ####2-1. モジュールのインストール ```python # LINE操作に必要なline-bot-sdkをインストール !pip install line-bot-sdk ```
####2-2. jsonファイルの作成 ```python # jsonでのクォーテーションは"ダブル"を使用 { "CHANNEL_ACCESS_TOKEN":"取得したアクセストークン" "USER_ID":"取得したYour user ID" } ``` ここで注意しなければならないのが、改行です。 トークンがかなり長いですので、勝手に改行されてしまいエラーになる場合があります。 ですので、改行は元に戻しておいて下さい。 戻したらjsonファイルは保存しておきます。
####2-3. jsonの読み込み ```python import json
r
はread読み込みのrです。
file = open('info.json','r')
info = json.load(file)
infoでjsonファイルを出力してファイルを読み込めているか確認してみましょう。
>`出力結果`
{'CHANNEL_ACCESS_TOKEN': 'EVRKXIelyjNBT---------=',
'USER_ID': 'U------'}
<br>
####2-4. 送信モジュールのインポート
```python
from linebot import LineBotApi
from linebot.models import TextSendMessage
LINEにテキストを送る為のものです。
####2-5. 使用するチャンネルの指定
CHANNEL_ACCESS_TOKEN = info["CHANNEL_ACCESS_TOKEN"]
line_bot_api = LineBotApi(CHANNEL_ACCESS_TOKEN)
一行目で作成した関数を使用して、LineBotApiで読み込みます。
チャンネルを使用する宣言だと思って下さい。
####2-6. テキストの作成
import random
rdm = ['aaa','bbb','ccc']
# choiceでランダムにリスト内のテキストを表示
val = random.choice(rdm)
val
毎日自動で送られてくるメッセージをランダムにします。
aaa,bbb,cccは後で、好きな名言やメッセージを自由に変更できます。
ですので今回は、動くコードの作成を優先して進めていきます。
出力結果
bbb
####2-7. LINEメッセージの送信
def main():
USER_ID = info["USER_ID"]
# どんなテキストを送るか
messages=TextSendMessage(val)
# 誰に送るか
line_bot_api.push_message(USER_ID,messages)
if __name__ == "__main__":
main()
これを実行すると、LINEメッセージが届きます。
#3. GitHubの登録とファイルのpush ####3-1. GitHubの登録 Repositoriesを作成します。 NEWを押してRepository nameを自由に決めて下さい。 public(公開)かprivate(非公開)を選択できるのですが今回はprivateを選択します。 選択が終わればcreating Repositoryを押して完了
ページを戻ると、アカウントの横にRepositoryが確認できるかと思います。 そのページの一段目のHTTPSをコピーして下さい。
####3-2. Repositoryと作業ディレクトリの紐付け jupyterに戻ってターミナルから紐付けていきます。
# jupyterターミナルに記述
git init
git initの出力結果
Reinitialized existing Git repository in /Users/name/.git/
git remote add origin コピーしたURL
add originの出力結果
origin コピーしたURL(fetch)
origin コピーしたURL(push)
# .(ドット)で全てをaddする
git add .
# 変更履歴の保存
git commit -m'1st commit'
commitの出力結果
master(root-commit)798asf9] 1st commit
5 file changeed, 468 insertions(+)
create mode 100644 json
create mode 100644 checkpoint
create mode 100644 info.json
create mode 100644 jpg
create mode 100644 ------.ipynb
5つのファイルを作成し、ローカル上での変更はできました。
次は変更した内容をGit上に送信します。
# Gitに作成したファイルをpush
git push origin master
ズラーっと読み込みが始まります。
GitHubのマイページを見ると作成や設定したファイルが追加されています。
#4. GitHubActionsで送信の自動化 ####4-1. pythonファイルの作成
import json
from linebot import LineBotApi
from linebot.models import TextSendMessage
file = open('info.json','r')
info = json.load(file)
import random
rdm = ['aaa','bbb','ccc']
val = random.choice(rdm)
val
CHANNEL_ACCESS_TOKEN = info["CHANNEL_ACCESS_TOKEN"]
line_bot_api = LineBotApi(CHANNEL_ACCESS_TOKEN)
def main():
USER_ID = info["USER_ID"]
messages=TextSendMessage(text="val")
line_bot_api.push_message(USER_ID,messages)
if __name__ == "__main__":
main()
jupyterでテキストファイルを追加して、名前をmain.pyに変更します。
実行に必要なコードだけを、ここコピペしておきます。
####4-2. main.pyのpush ```python # ターミナル上 # 追加の宣言 git add .
ローカル設定をGitHub上に追加
git commit -m'create main.py'
git push origin master
GitHubをリロードすると、main.py追加されていることが確認できます。
<br>
####4-3. GitHubActionsの設定
setup thisworkflowを選択しymlファイルを作成し下のコードをコピペして下さい。
ファイル名はmain.ymlに変更しておくと分かり易いです。
ちなみにymlはjsonよりも簡易なファイルだと思って下さい。
```python
# ワークフロー名
name: linechatbot
# 実行のタイミング
# 自動送信のイミングは後で変更可能
on:
push:
jobs:
build:
# Ubuntuの最新版環境内で処理を実行することを指定
runs-on: ubuntu-latest
# 実行する処理&コマンド指定
steps:
# リポジトリからチェックアウトして以下の処理を実行していく
- uses: actions/checkout@v2
- name: Set up Python 3.8
uses: actions/setup-python@v1
with:
python-version: 3.8
- name: Install dependencies
run: |
# pip更新
python -m pip install --upgrade pip
# 必要なパッケージインストール
pip install line-bot-sdk
- name: Run script
run: |
# main.pyの実行
python main.py
実行に時間は少しかかりますが、LINEメッセージが届くはずです。
ここでエラーになる場合は、指定のファイル名が違う可能性があるので確認してみて下さい。
####4-4. 自動送信のタイミング指定 ``` on: schedule: - cron: '0 22 * * *' ``` github actionsのcronの時刻はUTCなので、日本時間に合わせるためにUTCマイナス15をすれば合います。 朝7時に受信するなら'0 22 * * *'で記述します。
#5. 終わりに 最後まで読んで頂きありがとうございました。 次の投稿では、今回作成したbotのページに、自分のSNSやブログ、プロフィールも追加していきます。 まだまだ初学者ですので、もっと良い記述の方法があればご指摘お願い致します!