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


# LINE WORKS Bot API を活用したトークルーム操作
LINE WORKS Bot API を使用して以下の操作を行う方法を解説します：

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

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

### **Google Colab のノートブック**
こちらのリンクから、この記事で紹介するサンプルコードをすぐに試せます。  
[LINE WORKS Bot API - トークルーム操作 (Google Colab)](https://colab.research.google.com/drive/1wi6HdMzj2pzgtt3LXRfquOFkww3NvOmp?usp=sharing)

## 必要な準備

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

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

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

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

4. **Google Colab アクセス**  
   [Google Colab](https://colab.research.google.com) にアクセス可能な環境を用意してください。

## サンプルコード

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

### **セル1: 初期設定**

```python
# 必要なライブラリのインストール
!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: トークルームの作成**

```python
# トークルームの作成
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: トークルームへのメッセージ送信**

```python
# トークルームにメッセージを送信
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: トークルーム情報の取得**

```python
# トークルーム情報の取得
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 の退室**

```python
# トークルームからの退室
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)](https://developers.worksmobile.com/jp/docs/bot-channel-create)  

2. [トークルーム情報の取得 (GET /bots/{botId}/channels/{channelId})](https://developers.worksmobile.com/jp/docs/bot-channel-get)  

3. [トークルームからの退室 (DELETE /bots/{botId}/channels/{channelId})](https://developers.worksmobile.com/jp/docs/bot-channel-leave)  

## 注意事項

1. **Botの設定**
   - LINE WORKS Developer Console で Bot を複数人トークルームに参加可能な設定にしてください。

2. **トークルーム名 (`ROOM_TITLE`) の設定**  
   - トークルーム名は最大 1000 文字まで指定可能です。

---

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