ユーザーが投稿したファイルのファイル名を取得(フリープラン)
こんにちは。
フリープランのLine Worksを利用しています。Botメンバーを含んだトークで、ユーザーがファイルをアップした際に、そのファイルのファイル名を取得する方法はありますでしょうか?
Message EventでfileIdは取得できるので、ファイル自体は利用できるのですがファイル名(拡張子含めて)が分からないです。
LINE WORKS Developers
ドキュメントを見ると、スタンダードプラン以上ではFileスコープにアクセス出来るようなので、ここで分かるのでしょうか?
フリープランしか利用していないので教えて頂けると大変助かります。
LINE WORKS Developers
投稿に新しいコメントが追加されましたら通知を送信します。
コメント2
업데이트 된 답글입니다.
saito makoto
取得した fileId でダウンロードを行えばわかるのではないでしょうか?
https://developers.worksmobile.com/jp/docs/bot-attachment-get
ダウンロードせずにファイル名を知りたいということであればちょっと思い当たりませんね。。。
file scope は Drive API でマイドライブ、共有ドライブ、組織/グループフォルダを管理するためのものなので、トークルーム内のファイルは確認できなさそうです。
https://developers.worksmobile.com/jp/docs/drive
2023.06.30
업데이트 된 답글입니다.
yuki_ 投稿者
コメントありがとうございました。なんとか解決しました。
PowerShellで書いているのですが、Invoke-RestMethodで-MaximumRedirection 0で自動リダイレクトせずにリダイレクトURLを取得して、そっからファイル名を抜き出し保存するパスを生成して、もう一度Invoke-WebRequestを叩くことで期待どおりの動作となりました。
PowerShell初めて使うので、ちょっと苦労しました。。。もっと簡単な方法があるかもしれません。
↓色々ほしょってますがコードです。
$url_file = "https://www.worksapis.com/v1.0/bots/$urlEncodedBotId/attachments/$urlEncodedFileId"
try {
Invoke-RestMethod -Uri $url_file -Headers $Header -MaximumRedirection 0 -ErrorAction Stop
} catch {
#ダウンロード用URL取得
$Location_file = $_.Exception.Response.Headers.Location
#ファイル名を取得する(リダイレクトURLの最後が/download.apiとなっているので除去)
$FileName_file = $Location_file
$FileName_file = Split-Path $FileName_file -Parent
$FileName_file = [System.IO.Path]::GetFileName($FileName_file)
#ファイルパス+ファイル名
$FilePathName_file = $filePath + $FileName_file
}
Invoke-WebRequest -Uri $Location_file -Headers $Header -OutFile $FilePathName_file
file scopeは全く別物ですね。こちらも情報ありがとうございました。
2023.07.03
まだ、解決できませんか?
今すぐ実際に使用しているLINE WORKSユーザーに質問してみましょう。