2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

API Lab for LINE WORKSAdvent Calendar 2024

Day 14

LINE WORKS API Bot とのトークルーム

Last updated at Posted at 2024-12-14

LINE WORKS Bot API を活用したトークルーム操作

LINE WORKS Bot API を使用して以下の操作を行う方法を解説します:

  1. トークルームの作成
  2. トークルームへのメッセージ送信
  3. トークルーム情報の取得
  4. トークルームから Bot の退室

この記事では、Pythonの実行可能なサンプルコードを提供し、それらをGoogle Colab上で簡単に試すことができます。

Google Colab のノートブック

こちらのリンクから、この記事で紹介するサンプルコードをすぐに試せます。
LINE WORKS Bot API - トークルーム操作 (Google Colab)

必要な準備

以下の準備を行ってください:

  1. Access Token
    bot スコープが必要です。

  2. Bot ID
    LINE WORKS の Bot ID を確認してください。

  3. ユーザー情報
    トークルームに追加するメンバーの ID を準備してください。

  4. Google Colab アクセス
    Google Colab にアクセス可能な環境を用意してください。

サンプルコード

以下のコードは、Google Colabで実行可能な形式で記述されています。セルごとに実行してください。

セル1: 初期設定

# 必要なライブラリのインストール
!pip install requests

# ライブラリのインポート
import requests
import json
import ast  # 文字列をリストに変換するために使用

# 設定変数
ACCESS_TOKEN = "your_access_token"  # @param {type:"string"}
BOT_ID = 1234567  # @param {type:"integer"}
API_SERVER = "https://www.worksapis.com"

# USERS を文字列として受け取り、リストに変換
USERS = "[\"user1@example.com\", \"user2@example.com\"]"  # @param {type:"string"}
try:
    USERS_LIST = ast.literal_eval(USERS)  # 文字列をリストに変換
    if not isinstance(USERS_LIST, list):
        raise ValueError("USERS はリスト形式で指定してください。")
except Exception as e:
    print(f"❌ USERS の形式が正しくありません: {e}")
    USERS_LIST = []

# トークルーム名の設定
ROOM_TITLE = "Sample Talk Room"  # @param {type:"string"}

セル2: トークルームの作成

# トークルームの作成
url = f"{API_SERVER}/v1.0/bots/{BOT_ID}/channels"
headers = {
    "Authorization": f"Bearer {ACCESS_TOKEN}",
    "Content-Type": "application/json"
}
payload = {
    "members": USERS_LIST,  # USERS_LIST をそのまま配列で使用
    "title": ROOM_TITLE     # トークルーム名を設定
}

response = requests.post(url, headers=headers, json=payload)

if response.status_code == 201:
    print("✅ トークルームが作成されました!")
    print(response.json())
    channel_id = response.json().get("channelId")  # チャンネルIDを保存
else:
    print("❌ トークルームの作成に失敗しました。")
    print(f"Status Code: {response.status_code}")
    print(f"Response: {response.text}")
    channel_id = None

セル3: トークルームへのメッセージ送信

# トークルームにメッセージを送信
if channel_id:
    api_url = f"{API_SERVER}/v1.0/bots/{BOT_ID}/channels/{channel_id}/messages"
    message_content = {
        "content": {
            "type": "text",
            "text": "こんにちは、これはテストメッセージです!"
        }
    }
    headers = {
        "Authorization": f"Bearer {ACCESS_TOKEN}",
        "Content-Type": "application/json"
    }

    response = requests.post(api_url, headers=headers, json=message_content)

    if response.status_code == 201:
        print("✅ メッセージが正常に送信されました!")
    else:
        print("❌ メッセージの送信に失敗しました。")
        print(f"Status Code: {response.status_code}")
        print(f"Response: {response.text}")
else:
    print("トークルームIDがありません。メッセージを送信できませんでした。")

セル4: トークルーム情報の取得

# トークルーム情報の取得
if channel_id:
    url = f"{API_SERVER}/v1.0/bots/{BOT_ID}/channels/{channel_id}"
    headers = {
        "Authorization": f"Bearer {ACCESS_TOKEN}",
    }

    response = requests.get(url, headers=headers)

    if response.status_code == 200:
        print("✅ トークルーム情報を取得しました!")
        print(json.dumps(response.json(), indent=4, ensure_ascii=False))
    else:
        print("❌ トークルーム情報の取得に失敗しました。")
        print(f"Status Code: {response.status_code}")
        print(f"Response: {response.text}")
else:
    print("トークルームIDがありません。トークルーム情報を取得できませんでした。")

セル5: Bot の退室

# トークルームからの退室
if channel_id:
    url = f"{API_SERVER}/v1.0/bots/{BOT_ID}/channels/{channel_id}"
    headers = {
        "Authorization": f"Bearer {ACCESS_TOKEN}",
    }

    response = requests.delete(url, headers=headers)

    if response.status_code == 204:
        print("✅ Bot がトークルームから退室しました!")
    else:
        print("❌ Bot の退室に失敗しました。")
        print(f"Status Code: {response.status_code}")
        print(f"Response: {response.text}")
else:
    print("トークルームIDがありません。Bot を退室させることができませんでした。")

参照先

この記事に関連する LINE WORKS Bot API の詳細な仕様については、以下の公式ドキュメントを参照してください:

  1. トークルームの作成 (POST /bots/{botId}/channels)

  2. トークルーム情報の取得 (GET /bots/{botId}/channels/{channelId})

  3. トークルームからの退室 (DELETE /bots/{botId}/channels/{channelId})

注意事項

  1. Botの設定

    • LINE WORKS Developer Console で Bot を複数人トークルームに参加可能な設定にしてください。
  2. トークルーム名 (ROOM_TITLE) の設定

    • トークルーム名は最大 1000 文字まで指定可能です。

以上で、LINE WORKS Bot APIを使ったトークルーム操作を試す準備が整いました!質問やフィードバックがあればコメントでお知らせください。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?