LINE WORKS API を使用して Bot にファイルをアップロードする
この記事では、LINE WORKS API を使用して、Bot にファイルをアップロードする方法を解説します。
以下の URL で Google Colab を使って簡単に試せます。
Google Colab で試す
必要な準備
-
LINE WORKS Developer Console での設定
- Bot を作成し、
Bot ID
を取得します。
- Bot を作成し、
-
Access Token の発行
- LINE WORKS API を使用するためのアクセストークンを取得します。
-
アップロードするファイルの準備
- アップロードしたいファイル(例:
example.png
)を用意します。
- アップロードしたいファイル(例:
スクリプト
以下のスクリプトを使用して、LINE WORKS API でファイルをアップロードします。
import requests
import mimetypes
from google.colab import files
# 必要な変数を設定
ACCESS_TOKEN = "YOUR_ACCESS_TOKEN" # @param {type:"string"}
BOT_ID = 2000001 # @param {type:"integer"}
# アップロード URL を取得する関数
def get_upload_url(file_name):
url = f"https://www.worksapis.com/v1.0/bots/{BOT_ID}/attachments"
headers = {
"Authorization": f"Bearer {ACCESS_TOKEN}",
"Content-Type": "application/json",
}
response = requests.post(url, headers=headers, json={"fileName": file_name})
if response.status_code == 200:
data = response.json()
return data["uploadUrl"], data["fileId"]
else:
raise Exception(
f"アップロード URL の取得に失敗しました: {response.status_code}\n{response.text}"
)
# ファイルをアップロードする関数
def upload_file(upload_url, file_path, mime_type):
with open(file_path, "rb") as file:
files = {
"FileData": (file_path, file, mime_type),
"resourceName": (None, file_path),
}
headers = {"Authorization": f"Bearer {ACCESS_TOKEN}"}
response = requests.post(upload_url, headers=headers, files=files)
if response.status_code in [200, 201]:
print("ファイルが正常にアップロードされました!")
print(response.json())
else:
raise Exception(
f"ファイルのアップロードに失敗しました: {response.status_code}\n{response.text}"
)
# メイン処理
def main():
print("アップロードするファイルを選択してください:")
uploaded = files.upload()
if not uploaded:
print("ファイルがアップロードされませんでした。")
return
file_name = next(iter(uploaded))
mime_type, _ = mimetypes.guess_type(file_name)
mime_type = mime_type or "application/octet-stream"
print(f"ファイル名: {file_name}, MIME タイプ: {mime_type}")
upload_url, file_id = get_upload_url(file_name)
print(f"アップロード URL: {upload_url}")
print(f"ファイル ID: {file_id}")
upload_file(upload_url, file_name, mime_type)
# 実行
main()
スクリプトのポイント
必要なパラメータ
-
ACCESS_TOKEN
- LINE WORKS API の認証に使用されるアクセストークンです。
-
BOT_ID
- 使用する Bot の ID です。LINE WORKS Developer Console から確認できます。
-
ファイル選択
- Google Colab 上で
files.upload()
を使用して、アップロードするファイルを選択します。
- Google Colab 上で
-
MIME タイプの自動判定
- ファイルの MIME タイプは自動的に判定されます。不明な場合はデフォルト値 (
application/octet-stream
) が使用されます。
- ファイルの MIME タイプは自動的に判定されます。不明な場合はデフォルト値 (
レスポンス例
成功時:
{
"fileId": "jp1.1733205053418691464.1733291453.1.3725434.0.0.0",
"fileName": "example.png",
"fileSize": 144812
}
失敗時
以下のようなエラーが発生した場合、エラーコードとメッセージを確認して対処してください。
例: 認証エラー
ファイルのアップロードに失敗しました: 401
{
"code": "UNAUTHORIZED",
"description": "Authentication failed."
}
原因:
-
ACCESS_TOKEN
が無効または期限切れです。
対処法:
- 正しいアクセストークンを取得して設定します。
例: ファイル名エラー
ファイルのアップロードに失敗しました: 400
{
"code": "INVALID_PARAMETER",
"description": "File name is invalid."
}
原因:
- ファイル名に特殊文字(例:
/
,?
,*
など)が含まれている。 - ファイル名が長すぎる、または空白のみになっている。
対処法:
- ファイル名を適切な形式に変更します(半角英数字とアンダースコア
_
のみを使用)。 - 再度ファイルを選択し、アップロードしてください。
例: アップロード URL の期限切れ
ファイルのアップロードに失敗しました: 403
{
"code": "FORBIDDEN",
"description": "Upload URL has expired."
}
原因:
- アップロード URL の有効期限(通常 24 時間)が切れています。
- URL を取得してから一定時間が経過している可能性があります。
対処法:
- 新しいアップロード URL を取得し直します。
- ファイルを再度アップロードしてください。
応用
-
アップロード後のファイル使用:
作成されたfileId
を活用して、以下の API 操作を行えます。- メッセージ送信 API: アップロードしたファイルをトークルームやユーザーに送信。
- リッチメニュー設定 API: ファイルを背景画像として利用。
-
多様なファイル形式のアップロード:
このスクリプトは、画像ファイル(PNG、JPEG)、PDF、ドキュメント(DOCX など)に対応しています。アップロード可能な形式は LINE WORKS の仕様に従ってください。
まとめ
LINE WORKS API を活用することで、Bot にファイルを簡単にアップロードできます。アップロードされたファイルを活用して、さまざまな操作を実現することが可能です。このスクリプトを基に、トーク Bot の機能をさらに強化してみてください!