0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

LINE WORKS API トーク内容のダウンロード

0
Last updated at Posted at 2025-06-13

LINE WORKS トーク内容のダウンロード(新モニタリング API 対応)

🚨 重要な変更について

2025 年 11 月末より、従来の監査ログAPI(/audits/logs/download)によるトーク内容の取得が廃止されるため、新しいモニタリング API(/monitoring/message-contents/download)に移行する必要があります。

本記事では、新APIに対応したトーク内容ダウンロードツールを紹介します。Google Colab上で動作し、手軽に試すことが可能です。

主な変更点

項目 旧API(廃止予定) 新API
エンドポイント /audits/logs/download /monitoring/message-contents/download
スコープ audit.read monitoring.read
対象 全監査ログ(20種類のサービス) トーク内容のみ
必須パラメータ service, startTime, endTime startTime, endTime
管理者設定 [サービス設定 > 監査] [サービス設定 > モニタリング]

サンプルコードについて

このサンプルコードは、以下の機能を提供します:

  • トーク内容のダウンロードURLの取得:新しいモニタリングAPIを使用
  • CSV形式でログを保存:取得したトーク内容をローカルにCSV形式で保存
  • Google Colab対応:環境構築が不要で、すぐに試せます
  • フィルター機能:Bot、ラジャー、CXトークのメッセージを個別にフィルタリング可能

ノートブックは以下のリンクから利用できます:
LW_Message_Content_Download_Tool.ipynb

サンプルコードの使い方

1. Google Colabで実行

  1. 上記のリンクをクリックしてGoogle Colabを開きます。
  2. 必要なパラメータ(アクセストークンやログ期間など)を入力します。
  3. 実行ボタンをクリックしてトーク内容をダウンロードします。

2. サンプルコードの内容

以下はコードの主要な部分です。

必要なライブラリのインストール

Google Colabではrequestsが標準でインストール済みのため、追加インストールは不要です。

設定パラメータの入力

トーク内容を取得するために必要なパラメータを入力します。

# ========================================
# 設定パラメータ
# ========================================
ACCESS_TOKEN = "YOUR_ACCESS_TOKEN_HERE"  # モニタリングAPI用アクセストークン(monitoring.readスコープが必要)
START_TIME = "2024-12-01T00:00:00+09:00"  # 開始日時 (ISO8601形式)
END_TIME = "2024-12-19T23:59:59+09:00"  # 終了日時 (ISO8601形式)
LANGUAGE = "ja_JP"  # 言語設定 (デフォルト: en_US)
OUTPUT_FILE = "message_contents.csv"  # 出力ファイル名

# フィルター設定(オプション)
BOT_MESSAGE_FILTER_TYPE = "include"  # Bot メッセージフィルター: include, exclude, only
ROGER_MESSAGE_FILTER_TYPE = "include"  # ラジャーメッセージフィルター: include, exclude, only
CX_TALK_MESSAGE_FILTER_TYPE = "include"  # CXトークメッセージフィルター: include, exclude, only
DOMAIN_ID = None  # ドメインID(グループ企業の場合に指定)

ダウンロードURLの取得

新しいモニタリングAPIを使用してダウンロードURLを取得します。

def get_message_contents_url():
    headers = {"Authorization": f"Bearer {ACCESS_TOKEN}"}
    params = {
        "startTime": START_TIME,
        "endTime": END_TIME,
        "language": LANGUAGE,
        "botMessageFilterType": BOT_MESSAGE_FILTER_TYPE,
        "rogerMessageFilterType": ROGER_MESSAGE_FILTER_TYPE,
        "cxTalkMessageFilterType": CX_TALK_MESSAGE_FILTER_TYPE
    }
    
    # オプションパラメータを追加
    if DOMAIN_ID:
        params["domainId"] = DOMAIN_ID

    response = requests.get(BASE_URL, headers=headers, params=params, allow_redirects=False)
    
    if response.status_code == 302:
        return response.headers.get("Location")
    elif response.status_code == 401:
        raise Exception("認証エラー: monitoring.readスコープが必要です")
    elif response.status_code == 403:
        raise Exception("権限エラー: 管理者画面の[サービス設定 > モニタリング]で事前同意が必要です")
    else:
        raise Exception(f"ダウンロードURL取得失敗: {response.status_code}")

トーク内容のダウンロード

取得したURLを使用してCSVファイルを保存します。

def download_message_contents(download_url, output_file):
    headers = {"Authorization": f"Bearer {ACCESS_TOKEN}"}
    response = requests.get(download_url, headers=headers, stream=True)
    
    if response.status_code == 200:
        with open(output_file, "wb") as file:
            for chunk in response.iter_content(chunk_size=1024):
                file.write(chunk)
        print(f"✅ トーク内容を{output_file}に保存しました。")
        return True
    else:
        print(f"⛔ CSVダウンロード失敗: {response.status_code}")
        return False

Google Colab用の追加機能

def main():
    # アクセストークンの確認
    if ACCESS_TOKEN == "YOUR_ACCESS_TOKEN_HERE":
        print("⛔ ACCESS_TOKENを設定してください。")
        return
    
    # Google Driveを使用するかの選択
    use_drive = input("Google Driveに保存しますか? (y/n): ").lower() == 'y'
    
    if use_drive:
        from google.colab import drive
        drive.mount('/content/drive')
        output_path = f'/content/drive/MyDrive/{OUTPUT_FILE}'
    else:
        output_path = OUTPUT_FILE
    
    # ダウンロード実行
    download_url = get_message_contents_url()
    if download_url:
        success = download_message_contents(download_url, output_path)
        
        if success and not use_drive:
            # ローカルファイルとしてダウンロード
            from google.colab import files
            files.download(output_path)

新機能

1. フィルター機能

  • Botメッセージ: Bot からのメッセージを含める/除く/のみ取得
  • ラジャーメッセージ: ラジャーのメッセージを含める/除く/のみ取得
  • CXトークメッセージ: CXトークのメッセージを含める/除く/のみ取得

実行結果

Google Colab上で実行すると、以下のようにログが保存されます。

  1. フィルター設定が表示されます
  2. ダウンロードURLが取得されるとコンソールに表示されます
  3. トーク内容が指定したファイル名で保存されます
⏳ トーク内容ダウンロードを開始...
📅 期間: 2024-12-01T00:00:00+09:00 ~ 2024-12-19T23:59:59+09:00
🔧 フィルター設定:
   Bot: include
   ラジャー: include
   CXトーク: include
✅ ダウンロードURL取得成功
✅ トーク内容をmessage_contents.csvに保存しました。

注意事項とトラブルシューティング

1. 認証関連

  • アクセストークン: monitoring.readスコープが必要(従来のaudit.readでは動作しません)
  • 管理者設定: [サービス設定 > モニタリング]での事前同意が必須

2. API制限

  • 取得期間: 最大31日間
  • 並行実行: 同時に複数のAPI呼び出しは避けてください
  • URL有効期限: 取得したダウンロードURLは一定期間で無効になります

3. エラー対応

  • 401エラー: アクセストークンまたはスコープを確認
  • 403エラー: 管理者画面でのモニタリング同意を確認
  • 404エラー: エンドポイントURLを確認

旧APIからの移行

既存の監査ログAPIを使用している場合:

  1. アクセストークン再取得: monitoring.readスコープで新しいトークンを取得
  2. 管理者設定: モニタリング機能の同意を実施
  3. コード修正: 新しいエンドポイントとパラメータに変更
  4. 機能制限の確認: トーク内容のみの取得となることを確認

まとめ

新しいモニタリングAPIにより、トーク内容の取得がより専門的かつ効率的になりました。このサンプルコードを使用することで:

  • 簡単な移行: 旧APIからスムーズに移行可能
  • フィルター機能: 必要なメッセージのみを効率的に取得
  • Google Colab対応: 環境構築不要で即座に利用開始

ぜひ新しいモニタリング機能をご活用ください!


関連リンク:

フィードバックや質問があれば、コメント欄でお知らせください!

0
1
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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?