Bot

Botを利用したAPI経由でのファイルダウンロードについて

河井翔平_6ae873

2023.12.14既読 1137

現在チャット上でユーザAがアップロードしたファイルのFileIDをBotのCallbackから取得し、
Callbackから取得したFileIDをもとに、API経由でファイルをダウンロードしたいと考えています。

チャット上に貼り付けられたファイルをAPI経由でダウンロードする方法はありますでしょうか?

そもそもダウンロードするためのURLを取得するAPIがなさそうに見えています。
以下画像の取得元

https://developers.worksmobile.com/jp/docs/file-upload#get-download-url-api


投稿者がBESTに選択したコメントです。

woff_2d6107

投稿初めてのアマチュアプログラマーなので、あっているか不安ですが下記を参考とし、ダウンロードURLの取得まで確認できたと思います。
https://forum.worksmobile.com/jp/posts/101306?scrollToCommentNo=102690

ざっくりですが、こんな感じで…まだ実際ダウンロードまではしてないので、しっかりできたらまた削除して書き直すかもしれません。

const headers = {
       Authorization : `Bearer ${access_token}`
};

const URL = `https://www.worksapis.com/v1.0/bots/${Bot_Id}/attachments/${File_Id}`;

const options = {
       method   : "GET",
       headers  : headers,
       redirect : "manual", // リダイレクトを無効にする
};

await fetch(URL, options).then(response => {...

2023.12.17

2

コメント5

  • 업데이트 된 답글입니다.

    ss

    こんにちは。BOT→コンテンツ→ダウンロードに似通った物がありますが、如何でしょうか。

    コンテンツダウンロード
    https://developers.worksmobile.com/jp/docs/bot-attachment-get

    2023.12.15

    1
  • 업데이트 된 답글입니다.

    河井翔平_6ae873 投稿者

    こちらは試していたのですが、以下エラーが返却されます。
    {
       "code": "UNAUTHORIZED",
       "description": "Authentication failed."
    }

    権限エラーかと思ったのですが、アクセストークンの取得時のレスポンスでは必要な権限が付与されていることは確認済みです。
    ▼以下はトークン取得時のレスポンスを抜粋。
       "scope": "user bot bot.message",
       "token_type": "Bearer",
       "expires_in": "86400"
    }

    2023.12.15

    3
  • 업데이트 된 답글입니다.

    woff_2d6107

    投稿初めてのアマチュアプログラマーなので、あっているか不安ですが下記を参考とし、ダウンロードURLの取得まで確認できたと思います。
    https://forum.worksmobile.com/jp/posts/101306?scrollToCommentNo=102690

    ざっくりですが、こんな感じで…まだ実際ダウンロードまではしてないので、しっかりできたらまた削除して書き直すかもしれません。

    const headers = {
           Authorization : `Bearer ${access_token}`
    };

    const URL = `https://www.worksapis.com/v1.0/bots/${Bot_Id}/attachments/${File_Id}`;

    const options = {
           method   : "GET",
           headers  : headers,
           redirect : "manual", // リダイレクトを無効にする
    };

    await fetch(URL, options).then(response => {...

    2023.12.17

    2
  • 업데이트 된 답글입니다.

    河井翔平_6ae873 投稿者

    返信ありがとうございます。
    共有いただいた内容を実施したところ、ダウンロードURLを取得することができました。
    また、ダウンロードURLからAPI経由でのファイルダウンロードも確認することができました。

    動作確認はPostmanを利用して行っていたのですが、
    HTTPのステータスコード302で返却された際に、自動でダウンロードURLにリダイレクトしてしまっていたようで、
    リダイレクトする際には認証情報が載っておらず、ダウンロードURLから取得する際に権限エラーとなっていたということで理解しました。

    おかげさまで、問題を解決することができました。
    ご協力ありがとうございます。

    2023.12.18

    1
  • 업데이트 된 답글입니다.

    'name'

    はい、APIを使用してチャットで共有されたファイルをダウンロードする方法があります。ファイルのダウンロードURLを取得するためのAPIも存在します。具体的には、以下の手順でファイルのダウンロードが行えます。\n\n1. ファイルのダウンロードURLの取得\n2. ファイルのダウンロードの実行\n\nまず、各リソースのファイルのダウンロードAPIを使用して、ファイルのダウンロードURLを取得します。例えば、投稿の添付ファイルを取得するためには、以下のようなAPIを使用します。\n\n- GET /boards/{boardId}/posts/{postId}/attachments/{attachmentId}\n\n取得したダウンロードURLを使用して、ファイルをダウンロードすることができます。

    2023.12.22

    0
前の投稿ユーザーリッチメニューの強制更新
次の投稿bot callback 등록 방법
リスト

まだ、解決できませんか?
今すぐ実際に使用しているLINE WORKSユーザーに質問してみましょう。