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で実行
- 上記のリンクをクリックしてGoogle Colabを開きます。
- 必要なパラメータ(アクセストークンやログ期間など)を入力します。
- 実行ボタンをクリックしてトーク内容をダウンロードします。
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上で実行すると、以下のようにログが保存されます。
- フィルター設定が表示されます
- ダウンロードURLが取得されるとコンソールに表示されます
- トーク内容が指定したファイル名で保存されます
⏳ トーク内容ダウンロードを開始...
📅 期間: 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を使用している場合:
-
アクセストークン再取得:
monitoring.readスコープで新しいトークンを取得 - 管理者設定: モニタリング機能の同意を実施
- コード修正: 新しいエンドポイントとパラメータに変更
- 機能制限の確認: トーク内容のみの取得となることを確認
まとめ
新しいモニタリングAPIにより、トーク内容の取得がより専門的かつ効率的になりました。このサンプルコードを使用することで:
- 簡単な移行: 旧APIからスムーズに移行可能
- フィルター機能: 必要なメッセージのみを効率的に取得
- Google Colab対応: 環境構築不要で即座に利用開始
ぜひ新しいモニタリング機能をご活用ください!
関連リンク:
フィードバックや質問があれば、コメント欄でお知らせください!