LINE Messaging API SDK for Pythonでメッセージを送ってみよう！

# LineBotAPI 3.xでメッセージを送ってみよう！

## はじめに
- LineBot触ってみようかなと思っても最新のv3の記事があまりにも少なかった
- メッセージを送ることができればどんどん拡張することができると思うので、手助けになればうれしい
- 今回の手順では、一方的にメッセージを送るBotを作成します！
:::note warn
この手順では、LINE Developers登録からAPIキーの発行までの手順を省略しています。
以下の手順でAPIキー発行まで実施してください
https://developers.line.biz/ja/docs/messaging-api/getting-started/
:::

## LINE Messaging API SDK for Pythonってまず何者？
- Pythonを使ってLINE Messaging APIを簡単に利用するためのSDK
- これを使ってLineのメッセージを使ったアプリケーションを開発できる

## まずは、環境を作ろう！
:::note info
この手順は、以下の資料を参考に作成されております
https://github.com/line/line-bot-sdk-python
:::
※PythonやPIPがインストールされている前提で記載します。

1. LINE Messaging API SDK for Pythonをインストール
    - 以下のコマンドをコマンドラインで実行します
        ```Shell
        pip install line-bot-sdk
        ```
2. APIキーを取得しよう！
    - 取得手順は以下のURLから！
        - https://developers.line.biz/ja/docs/messaging-api/getting-started/
    - 以下で必要な情報取得先
        - ユーザーID
            - チャネルの基本設定 -> あなたのユーザーID
        - APIキー
            - Messaging API設定 -> チャネルアクセストークン
3. Hello worldしてみよう！
    ```test.py
    import linebot.v3.messaging
    import pprint
    import json
    
    configuration = linebot.v3.messaging.Configuration(
        host = "https://api.line.me"
    )
    # access_tokenの取得方法は手順2で記載
    configuration = linebot.v3.messaging.Configuration(
        access_token="ここにAPIキーを入力する"
    )
    
    message = '{\"to\":\"ここにユーザーIDを入力する\",\"messages\":[{\"type\":\"text\",\"text\":\"\"}]}'
    
    message_dict = json.loads(message)
    # 送りたいメッセージを記載する.今回はHello World!
    message_dict['messages'][0]['text'] = "Hello World!"
    
    with linebot.v3.messaging.ApiClient(configuration) as api_client:
        api_instance = linebot.v3.messaging.MessagingApi(api_client)
        push_message_request = linebot.v3.messaging.PushMessageRequest.from_dict(message_dict)
    
        try:
            api_response = api_instance.push_message(push_message_request)
            print("The response of MessagingApi->push_message:\n")
            pprint(api_response)
        except Exception as e:
            print("Exception when calling MessagingApi->push_message: %s\n" % e)
    ```
4. 実行してみよう！
    ```Shell
    python 作ったファイル.py
    ```
送信できたかな？

## 今回使ったコードの解説
1. 今回必要なSDKの呼び出し
    ```python
    import linebot.v3.messaging
    import pprint
    import json
    ```
2. 必要な定義を行う
    - LINE BOT SDKを扱うにあたって必要な情報を与えます
        - host
            - どこに情報を渡すのか
        - access_token
            - 認証に使うTOKEN
    ```python
    configuration = linebot.v3.messaging.Configuration(
        host = "https://api.line.me"
    )
    # access_tokenの取得方法は手順2で記載
    configuration = linebot.v3.messaging.Configuration(
        access_token="ここにAPIキーを入力する"
    )
    ```
3. 送りたい情報を作成する
    - messageはJson型で作成して、編集しやすいようにDict型に変換、内容の代入を行っている
        ```python
        message = '{\"to\":\"ここにユーザーIDを入力する\",\"messages\":[{\"type\":\"text\",\"text\":\"\"}]}'
        
        message_dict = json.loads(message)
        # 送りたいメッセージを記載する.今回はHello World!
        message_dict['messages'][0]['text'] = "Hello World!"
        ```
4. 情報をLINEに送信する
    ```python
    with linebot.v3.messaging.ApiClient(configuration) as api_client:
        api_instance = linebot.v3.messaging.MessagingApi(api_client)
        push_message_request = linebot.v3.messaging.PushMessageRequest.from_dict(message_dict)
    
        try:
            api_response = api_instance.push_message(push_message_request)
            print("The response of MessagingApi->push_message:\n")
            pprint(api_response)
        except Exception as e:
            print("Exception when calling MessagingApi->push_message: %s\n" % e)
    ```

## まとめ
今回は、pythonを使ってLINEにメッセージを送ってみました
cronなどを使って決まった時間にメッセージを送ってもよいし、面白いことがいろいろできるとよいですね
間違いなどあれば指摘していただけると嬉しいです～！

## 参考資料
https://github.com/line/line-bot-sdk-python

https://developers.line.biz/ja/docs/messaging-api/overview/