API2.0でのコンテンツアップロード
C#を使ってbotからPDFファイルをトークルームに送信するプログラムを作成しています。
API1.0に対応したものは作成できたので、それを元に2.0対応版を作成していますが上手くいきません。
API2.0のbotで、メッセージは送信出来ているのでbotの設定とアクセストークンは問題ないと思います。
AIP1.0では、以下の通りの方法でファイルの送信ができました。
○API1.0
・コンテンツアップロード
①Header Parametersに「consumerKey」と「x-works-apiid」と「authorization」を追加
②「Content-Type」に「application/pdf」を指定
③「Content-Disposition」で「name="resourceName"」指定
・トークルームへの送信手順
①コンテンツアップロードAPIを使用してファイルをアップロード
②ResponseからresourceIDを取得
③取得したresourceIDを指定してトークルームへ送信
API2.0ではドキュメントに従ってAPI1.0のソースコードから以下の点を修正して
コンテンツアップロードを試していますが、ResponseでStatusCode: 400が返ります。
○API2.0
①Header Parametersの「consumerKey」と「x-works-apiid」を削除
②「Content-Type」に「application/pdf」を指定
③「Content-Disposition」の「name="resourceName"」を「name="fileName"」に変更
コンテンツアップロードでエラーになっているので、トークルームへの送信は試せていません。
上記3点以外はAPI1.0でファイルをアップロードしている記述のままです。
※URLは2.0対応のものに書き換えています。
記述内容は以下の投稿のコメント欄を参考にしています。
ドキュメントを参考に変更になった部分を修正してみたのですが
この修正では何か間違っている or 何か足りていないのでしょうか?
また、API2.0のサンプルコードなどを提供して頂きたいのですが可能でしょうか?
投稿に新しいコメントが追加されましたら通知を送信します。
コメント3
업데이트 된 답글입니다.
LINE WORKS 公式アカウント
詳細につきましては以下のDocumentをご参考ください。
https://developers.worksmobile.com/jp/reference/bot-attachment-create?lang=ja
https://developers.worksmobile.com/jp/reference/file-upload?lang=ja
2022.05.13
업데이트 된 답글입니다.
vampire
ファイルの指定とreq.Headers.Add("Authorization", $"Bearer {token}"); でトークンの指定を追記する程度でアップロードできました。
https://dobon.net/vb/dotnet/internet/webrequestpost.html
2022.05.16
업데이트 된 답글입니다.
k.k 投稿者
自分の認識が間違っており、API1.0の時のようにコンテンツアップロードのURLに
直接ファイルを送信するものだと思って、ファイルの送信をしてしまっていたのが原因でした。
以下の手順で無事ファイル送信できました。
①ファイル名のみ送信でアップロード用のURLを取得
②ResponseのuploadUrlにファイル送信(API1.0と同様の方法でOK)
③fileIdを指定してアップロード
公式の担当の方も回答ありがとうございました。
2022.05.16
まだ、解決できませんか?
今すぐ実際に使用しているLINE WORKSユーザーに質問してみましょう。