VK APIを使用してVK音声メッセージを送信する

VK APIを使用したことのある人は誰でも、2016年12月16日にVKオーディオレコードを使用した作品へのアクセスが閉鎖されたことを長い間知っていました。



画像 たとえば、空のサンドボックスコミュニティ



では、これはどのように行われますか?



非表示のパラメーターを使用してドキュメントを読み込みます



最初に、非常に重要な点に注意する必要があります:グループまたは公開ページに代わって音声メッセージを送信するには、ユーザートークンを使用してダウンロードする必要がありますが、コミュニティを送信するときに既にトークンを使用してこのドキュメントを添付できます。



通常のドキュメントについては、ダウンロードするサーバーアドレスを取得します。



https://api.vk.com/method/docs.getUploadServer?access_token=ACCESS_TOKEN&type=audio_message&v=5.63
      
      





ここでのハイライトは、 type = audio_message parameterです。



応答として、次のJSONを取得する必要があります



 { "response": { "upload_url":"https://..." } }
      
      





VKontakteサーバーにファイルを正しくアップロードする方法



ファイルをmultipart / form-data形式で送信しないと、何も機能しません。

mp3形式では、オーディオのダウンロードも機能しません。実験できますが、 oggを使用することをお勧めします。



ここからのコードを使用して、目的の形式でファイルをダウンロードできます(例はJavaで指定されており 、自分用の類似物はインターネットで見つけることができます)。



MultipartUtilityクラスのインスタンスを使用します。その中の何も変更する必要はありません。



 StringBuilder response_sb = new StringBuilder(); try { MultipartUtility multipart = new MultipartUtility("___", "UTF-8"); multipart.addFilePart("_____"); List<String> response = multipart.finish(); for (String line : response) { response_sb.append(line); } } catch (IOException e) { e.printStackTrace(); }
      
      





すべて、音声メッセージがロードされます。 サーバーからの応答は、成功した場合、次のようになります。



 { "file":"62802565|0|0|805131||ogg|9943|file.ogg||||||=" }
      
      





ドキュメントをサーバーに保存します



ここで注意することも重要です。ユーザーからではなくドキュメントを保存する場合、送信するときはドキュメントのように見え、音声メッセージのようには見えません。 または、空のメッセージを送信するだけです。



次のリクエストを行います。



 https://api.vk.com/method/docs.save?file=__file&access_token=ACCESS_TOKEN&v=5.63
      
      





これが最後の段階でした。 答えが得られます。



 { "response": [ { "id": 000000000, "owner_id": 000000000 ...    ,      } ] }
      
      





以上です。 上記で取得したowner_ididを使用してリンクdoc(owner_id)_(id)を指定することにより添付ファイルで通常の​​方法でメッセージを送信できます。



PS通常のユーザーは、音声録音以外のものを含むメッセージを送信できません。 そして、APIを通じてこれは非常に簡単に行われます。 これは、以前はコメント/ディスカッションなどで機能していましたが、現在では、コミュニティによる音声メッセージの読み込み( 送信ではありません!






私は、APIを介して音声メッセージを送信する方法を見つける「調査」の著者ではありません。すべての情報をヒープに収集し、それを美しく整理しようとしました。 私はこれについて多くの質問にインターネットで気付きました。



この記事はVKontakte APIを使用した人向けに書かれたものであり、興味のないことは説明しませんでした。 決定したら、VK LongPollサーバー(個人ページ用)およびCallback APIとWebサーブレット(コミュニティ用)を使用して、Javaでボットを作成する方法に関する記事をさらに2つ作成します。



材料と助けてくれてありがとう、スタニスラフ・クデルコに感謝します。



All Articles