Saya ingin mengeluh lagi bahwa manajemen materi WeChat dan posting massal tidak ramah kepada Java, dan artikel ini perlu dikombinasikan dengan artikel saya sebelumnya dan dokumen resmi.
Saat men -debug nomor tes massal, Anda hanya perlu melihat apakah pesan pengiriman massal dapat dikumpulkan dengan sukses, dan Anda tidak perlu melihat hasilnya (itu tidak akan dikirim), karena WeChat belum membuka fungsi ini (mungkin juga tidak terbuka).
1. Pernyataan massa
Di situs web platform publik, akun berlangganan dilengkapi dengan izin pengiriman massal satu per hari, dan akun layanan dilengkapi dengan empat izin pengiriman massal per bulan (bulan alami).
1. Untuk akun berlangganan yang diautentikasi, antarmuka pengiriman massal dapat berhasil dipanggil sekali sehari. Pengiriman massal ini dapat dipilih untuk dikirim ke semua pengguna atau tag tertentu;
2. Meskipun panggilan harian pengembang menggunakan antarmuka pengiriman massa canggih dibatasi hingga 100 kali untuk akun layanan otentikasi, pengguna hanya dapat menerima 4 pesan per bulan. Baik di situs web platform publik atau menggunakan antarmuka pengiriman massal, pengguna hanya dapat menerima 4 pesan per bulan. Lebih dari 4 pengiriman massal akan gagal mengirim ke pengguna;
3. Pengembang dapat secara aktif mengatur ClientMSGID untuk menghindari dorongan berulang.
4. Antarmuka massa membatasi 60 permintaan per menit, dan permintaan yang melebihi batas akan ditolak.
5. Kemampuan untuk memasukkan akun Anda sendiri dan akun publik lainnya ke dalam tautan teks dan pesan teks yang telah diposting dalam artikel massal.
2. Proses pesan teks pengiriman massal
1. Pertama, gunakan antarmuka gambar di unggahan gambar dan pesan teks untuk mengunggahnya dengan sukses dan mendapatkan URL gambar; Lihat teks sebelumnya untuk mengunggah gambar dan pesan teks untuk mendapatkan metode URL
2. Saat mengunggah bahan pesan grafik dan teks, silakan gunakan URL gambar yang diperoleh pada langkah sebelumnya;
3. Gunakan pengiriman massal ke tag pengguna atau pengiriman massal daftar OpenId untuk mengirimkan pesan teks dan teks. Selama pengiriman massal, WeChat akan melakukan verifikasi asli dan mengembalikan hasil operasi pengirim massal;
4. Dalam proses di atas, jika perlu, Anda juga dapat melihat pratinjau pesan grafik dan teks, meminta status pengiriman massal, atau menghapus pesan pengiriman massal, dll.
3. Proses mengirim jenis pesan lain seperti gambar dan teks massal
1. Jika itu adalah pesan teks massa, cukup kirim langsung sesuai dengan instruksi antarmuka berikut;
2. Jika Anda mengirim pesan seperti gambar massal, video, dll., Anda perlu menyiapkan MediaD terlebih dahulu melalui antarmuka manajemen materi.
Iv. Deskripsi is_to_all
Digunakan untuk mengatur apakah akan mengirim ke semua pengguna, nilainya benar atau salah, pilih True, pesan dikirim ke semua pengguna di grup, dan pilih False untuk dikirim ke pengguna di grup yang ditentukan sesuai dengan TAG_ID.
5. Dua jenis metode pengirim massal
Pengiriman Massal Menurut Tag, Nomor Langganan dan Nomor Layanan harus diautentikasi
Antarmuka: https://api.weixin.qq.com/cgi-bin/message/mass/sendall?access_token=access_token
Pengiriman Massal Menurut Daftar OpenID hanya berlaku untuk nomor layanan bersertifikat
Antarmuka: https://api.weixin.qq.com/cgi-bin/message/mass/send?access_token=access_token
Data Posting dapat berupa pesan grafis, teks, suara/audio, gambar, video, dan pesan kupon kartu (semua tempat di mana media_id digunakan, Anda sekarang dapat menggunakan material permanen media_id dalam manajemen materi)
1. Media_id dalam data posting pesan teks perlu diperoleh melalui Antarmuka Bahan Pesan Teks Unggah (https://api.weixin.qq.com/cgi-bin/media/uploadnews?access_token=access_token)
Ini sama dengan data posting antarmuka materi grafis permanen baru dalam manajemen material, tetapi antarmuka berbeda, dan JSON yang dikembalikan memiliki jenis tambahan dan created_at. Lihat metode menambahkan bahan grafis permanen di artikel saya sebelumnya
2. Media_id dalam data suara/audio dan gambar gambar perlu diperoleh melalui pengunggahan dan mengunduh antarmuka file multimedia. Lihat metode materi sementara/permanen baru dalam artikel saya sebelumnya
3. Media_id dalam data posting video adalah yang paling merepotkan. Anda harus terlebih dahulu mendapatkan media_id melalui unggahan dan mengunduh antarmuka file multimedia (setelah pengujian, prompt kesalahan langkah berikutnya adalah media_id tidak valid), dan kemudian dapatkan media_id melalui antarmuka khusus. Ini adalah media_id yang diperlukan untuk pengiriman massal.
6. Pengontrol Sampel Massal
@RequestMapping ("/sendbyopenid") Massmsgresult public sendbyopenid () melempar Exception {// Kirim pesan teks massa sesuai dengan string daftar openID mediapath1 = "c: /users/phil/pictures/image/8538572f61d7a94cf0b9fe9fe0b9fe0pe8" " UnggahMediasResult result1 = httprequtil.uploadtempmedia ("phil_token", "image", mediapath1); String mediapath2 = "c: /users/phil/pictures/image/6859777abgw1f8xqp46dgyj20qo0zktfi.jpg"; UnggahMediasResult result2 = httprequtil.uploadtempmedia ("phil_token", "image", mediapath2); Daftar <EaploadNewSmedia> array = ArrayList baru <> (); UnggahNewSmedia entitas1 = unggah baru (); entitas1.setauthor ("Phil"); Entity1.setContent ("Hanya pengalaman yang dapat Anda pahami, hanya tahu bagaimana menghargainya, hanya tahu bagaimana memahaminya, dalam hidup Anda, akan selalu ada seseorang yang membuat Anda tertawa paling manis, dan akan selalu ada seseorang yang membuat Anda merasakan yang terdalam, melupakan, memperlakukan diri Anda dengan baik"); entity1.setcontent_source_url ("http://blog.csdn.net/phil_jing"); // entity1.setDigest ("digest"); entity1.setshow_conver_pic (1); entity1.setthumb_media_id (result1.getMedia_id ()); Entity1.Settitle ("Soul Chicken Soup"); array.add (entitas1); UnggahNewSmedia entitas2 = unggah baru (); entitas2.setauthor ("Phil"); entitas2.setcontent ("Apa itu kebahagiaan? Kebahagiaan adalah keadaan psikologis yang bahagia dan perasaan diri sendiri. Hanya mereka yang bisa membuat diri sendiri bahagia setiap saat dan dalam segala hal adalah orang yang paling bahagia. Orang -orang paling bahagia adalah orang yang paling bahagia. Orang yang tersenyum sering kali adalah orang yang paling bahagia."); entity2.setcontent_source_url ("http://www.qq.com"); // entity2.setDigest ("Digest"); entity2.setshow_conver_pic (0); entity2.setthumb_media_id (result2.getMedia_id ()); entitas2.settitle ("kutipan klasik"); array.add (entitas2); UnggahMediaasResult ur = httprequtil.uploadnewsmedia ("phil_token", array); Daftar <String> openIds = ArrayList baru <> (); openids.add ("ovhq5v9-zshucax_ntcqwip-sbcg"); openids.add ("OVHQ5V6CW3INKWUSCL3OLODIF0CC"); Massmsgresult result_news = wechatmsgservice.sendmpNewStoopenId ("phil_token", openids, ur.getMedia_id ()); logger.debug ("Kirim oleh OpenId msg {}", result_news.geterrmsg ()); // Kirim pesan teks berdasarkan daftar OpenId MassMSgresult result_text = weChatMSgService.SendTexttoopenid ("Phil_Token", Openids, "Apa kebahagiaan? Kebahagiaan adalah keadaan psikologis yang bahagia dan perasaan yang paling bahagia. Orang -orang yang paling bahagia. Orang -orang yang paling bahagia. Orang -orang yang paling bahagia. logger.debug ("Kirim oleh OpenId msg {}", result_text.geterrmsg ()); kembali nol; }7. Beberapa kelas dan metode yang digunakan
Metode Pengiriman Massal
/ *** Kirim pesan teks berdasarkan tag* @param AccessToken Token resmi* @param Entity Graphic Message Object* @return*/ public massmresult sendTextToTag (string accessToken, int tagid, string konten) {massmresult hasil = null; Treemap <string, string> params = new treemap <> (); params.put ("access_token", accessToken); // Posting parameter yang dikirimkan peta <string, object> filterparams = hashmap baru <> (); filterparams.put ("is_to_all", false); filterparams.put ("tag_id", tagId); Peta <String, Object> textParams = new HashMap <> (); textparams.put ("konten", konten); Treemap <string, object> dataparams = new treemap <> (); dataparams.put ("filter", filterparams); dataparams.put ("Teks", TextParams); dataparams.put ("msgtype", "text"); String data = jsonutil.toJsonstring (dataparams); String json = httprequtil.httpsdefaultexecute (SystemConfig.post_method, wechatconfig.send_all_mass_message_url, params, data); coba {hasil = jsonutil.fromjsonstring (json, massmsgresult.class); } catch (Exception e) {E.PrintStackTrace (); } hasil pengembalian; } / ** * Pesan teks massa berdasarkan tag * @param AccessToken Token * @param tagid tag * @param MediaId Metode UploadMedia Media Mendapat * @return * / MassMSGRESUL PUBLIK SENDMPNEWSTOTAG (String AccessToken, int tagid, String MediaD) {MassMSgResult Hasil = null; Treemap <string, string> params = new treemap <> (); params.put ("access_token", accessToken); // Posting parameter yang dikirimkan peta <string, object> filterparams = hashmap baru <> (); filterparams.put ("is_to_all", false); filterparams.put ("tag_id", tagId); Peta <String, Object> mpnewsparams = new HashMap <> (); mpnewsparams.put ("media_id", mediaid); Treemap <string, object> dataparams = new treemap <> (); dataparams.put ("filter", filterparams); dataparams.put ("mpNews", mpnewsparams); dataparams.put ("msgtype", "mpNews"); dataparams.put ("send_ignore_reprint", 0); // string data = jsonutil.toJsonstring (dataparams); String json = httprequtil.httpsdefaultexecute (SystemConfig.post_method, wechatconfig.send_all_mass_message_url, params, data); coba {hasil = jsonutil.fromjsonstring (json, massmsgresult.class); } catch (Exception e) {E.PrintStackTrace (); } hasil pengembalian; } / ** * gambar curah berdasarkan tag * @param accesstoken token resmi * @param tagid tag * @param Mediaid Metode unggahan Media * @return * / public massmResult sendimagetotag (string accessToken, int tagid, string mediaid) {massmsgresult hasil = null; Treemap <string, string> params = new treemap <> (); params.put ("access_token", accessToken); // Posting parameter yang dikirimkan peta <string, object> filterparams = hashmap baru <> (); filterparams.put ("is_to_all", false); filterparams.put ("tag_id", tagId); Peta <String, Object> ImageParams = HashMap baru <> (); ImageParams.put ("Media_id", Mediaid); Treemap <string, object> dataparams = new treemap <> (); dataparams.put ("filter", filterparams); dataparams.put ("Image", ImageParams); dataparams.put ("msgtype", "image"); String data = jsonutil.toJsonstring (dataparams); String json = httprequtil.httpsdefaultexecute (SystemConfig.post_method, wechatconfig.send_all_mass_message_url, params, data); coba {hasil = jsonutil.fromjsonstring (json, massmsgresult.class); } catch (Exception e) {E.PrintStackTrace (); } hasil pengembalian; }/** * suara massal/audio berdasarkan tag * @param accesstoken Token resmi * @param tagid tag * @param Mediaid Metode UploadMedia Mendapat * @return */MassMSgresult publik SendVoicetoTag (String AccessToken, Int Tagid, String MediaD) {MassMSgresult Hasil = NULL; Treemap <string, string> params = new treemap <> (); params.put ("access_token", accessToken); // Posting parameter yang dikirimkan peta <string, object> filterparams = hashmap baru <> (); filterparams.put ("is_to_all", false); filterparams.put ("tag_id", tagId); Peta <String, Object> voiceparams = hashmap baru <> (); voiceparams.put ("media_id", mediaid); Treemap <string, object> dataparams = new treemap <> (); dataparams.put ("filter", filterparams); dataparams.put ("suara", voiceparams); dataparams.put ("msgtype", "voice"); String data = jsonutil.toJsonstring (dataparams); String json = httprequtil.httpsdefaultexecute (SystemConfig.post_method, wechatconfig.send_all_mass_message_url, params, data); coba {hasil = jsonutil.fromjsonstring (json, massmsgresult.class); } catch (Exception e) {E.PrintStackTrace (); } hasil pengembalian; } / ** * Video curah berdasarkan tag * @param accessToken Token resmi * @param tagid tag * @param MediaId Metode unggahan Media Mendapat * @return * / MassMSGRESULT PUBLIK SENDVIDEOTOTAG (String AccessToken, int tagid, String Mediaid) {MassMSGRESULT hasil = null; Treemap <string, string> params = new treemap <> (); params.put ("access_token", accessToken); // Posting parameter yang dikirimkan peta <string, object> filterparams = hashmap baru <> (); filterparams.put ("is_to_all", false); filterparams.put ("tag_id", tagId); Peta <String, Object> mpvideoparams = hashmap baru <> (); mpvideoparams.put ("media_id", mediaid); Treemap <string, object> dataparams = new treemap <> (); dataparams.put ("filter", filterparams); dataparams.put ("mpvideo", mpvideoparams); dataparams.put ("msgtype", "mpvideo"); String data = jsonutil.toJsonstring (dataparams); String json = httprequtil.httpsdefaultexecute (SystemConfig.post_method, wechatconfig.send_all_mass_message_url, params, data); coba {hasil = jsonutil.fromjsonstring (json, massmsgresult.class); } catch (Exception e) {E.PrintStackTrace (); } hasil pengembalian; } / ** * Kupon kartu curah berdasarkan tag * @param accessToken token resmi * @param tagid tag * @param card_id * @return * / public massmresult sendwxcardtoTag (string accessToken, int tagid, string cardid) {massmresult hasil = null; Treemap <string, string> params = new treemap <> (); params.put ("access_token", accessToken); // Posting parameter yang dikirimkan peta <string, object> filterparams = hashmap baru <> (); filterparams.put ("is_to_all", false); filterparams.put ("tag_id", tagId); Peta <String, Object> wxCardParams = hashmap baru <> (); wxcardparams.put ("card_id", cardid); Treemap <string, object> dataparams = new treemap <> (); dataparams.put ("filter", filterparams); dataparams.put ("wxcard", wxcardparams); dataparams.put ("msgtype", "wxcard"); String data = jsonutil.toJsonstring (dataparams); String json = httprequtil.httpsdefaultexecute (SystemConfig.post_method, wechatconfig.send_all_mass_message_url, params, data); coba {hasil = jsonutil.fromjsonstring (json, massmsgresult.class); } catch (Exception e) {E.PrintStackTrace (); } hasil pengembalian; } / ** * Kirim pesan teks massa berdasarkan OpenId * @param AccessToken Token Resmi * @param Tagid Tag * @param MediaId Metode UploadMedia Media Mendapat * @return * / public massmsgresult sendmpNewStoopenId (string accessToken, daftar <string> openids, string mediaid) {massmRresult hasil = null; null; Treemap <string, string> params = new treemap <> (); params.put ("access_token", accessToken); // Posting parameter yang dikirimkan peta <String, Object> mpnewsparams = new HashMap <> (); mpnewsparams.put ("media_id", mediaid); Treemap <string, object> dataparams = new treemap <> (); dataparams.put ("Touser", OpenIds); dataparams.put ("mpNews", mpnewsparams); dataparams.put ("msgtype", "mpNews"); dataparams.put ("send_ignore_reprint", 0); String data = jsonutil.toJsonstring (dataparams); String json = httprequtil.httpsdefaultexecute (SystemConfig.post_method, wechatconfig.send_mass_message_url, params, data); coba {hasil = jsonutil.fromjsonstring (json, massmsgresult.class); } catch (Exception e) {E.PrintStackTrace (); } hasil pengembalian; } / ** * Pesan teks curah berdasarkan OpenId * @param AccessToken token otorisasi * @param openIds openId * @param konten * @return * / public massmresult sendtexttoopenId (string accessToken, daftar <string> OpenIds, string Content) {MassMSgresult hasil = null; Treemap <string, string> params = new treemap <> (); params.put ("access_token", accessToken); // Posting parameter yang dikirimkan peta <string, object> textParams = new HashMap <> (); textparams.put ("konten", konten); Treemap <string, object> dataparams = new treemap <> (); dataparams.put ("Touser", OpenIds); dataparams.put ("Teks", TextParams); dataparams.put ("msgtype", "text"); String data = jsonutil.toJsonstring (dataparams); System.out.println (data); String json = httprequtil.httpsdefaultexecute (SystemConfig.post_method, wechatconfig.send_mass_message_url, params, data); coba {hasil = jsonutil.fromjsonstring (json, massmsgresult.class); } catch (Exception e) {E.PrintStackTrace (); } hasil pengembalian; } / ** * Kirim pesan suara massa berdasarkan OpenId * @param AccessToken token otorisasi * @param openIds openId * @param MediaId * @return * / public massmresult sendvocietoopenId (string accessToken, daftar <string> OpenIds, String MediaD) {massmsgresult hasil = null; Treemap <string, string> params = new treemap <> (); params.put ("access_token", accessToken); // Posting parameter yang dikirimkan peta <String, Object> voiceparams = new HashMap <> (); voiceparams.put ("media_id", mediaid); Treemap <string, object> dataparams = new treemap <> (); dataparams.put ("Touser", OpenIds); dataparams.put ("suara", voiceparams); dataparams.put ("msgtype", "voice"); String data = jsonutil.toJsonstring (dataparams); System.out.println (data); String json = httprequtil.httpsdefaultexecute (SystemConfig.post_method, wechatconfig.send_mass_message_url, params, data); coba {hasil = jsonutil.fromjsonstring (json, massmsgresult.class); } catch (Exception e) {E.PrintStackTrace (); } hasil pengembalian; } / ** * Pesan gambar curah berdasarkan OpenId * @param AccessToken Token Resmi * @param OpenIds OpenId * @param MediaId * @Return * / Public MassMResult SendImagetoopenID (String AccessToken, Daftar <String> OpenIDS, String MediaD) {MassMSGRESULIT Hasil = NULL; Treemap <string, string> params = new treemap <> (); params.put ("access_token", accessToken); // Posting parameter yang dikirimkan peta <string, object> imageParams = hashmap baru <> (); ImageParams.put ("Media_id", Mediaid); Treemap <string, object> dataparams = new treemap <> (); dataparams.put ("Touser", OpenIds); dataparams.put ("Image", ImageParams); dataparams.put ("msgtype", "image"); String data = jsonutil.toJsonstring (dataparams); System.out.println (data); String json = httprequtil.httpsdefaultexecute (SystemConfig.post_method, wechatconfig.send_mass_message_url, params, data); coba {hasil = jsonutil.fromjsonstring (json, massmsgresult.class); } catch (Exception e) {E.PrintStackTrace (); } hasil pengembalian; } /** * Bulk video messages based on OpenId* @param accessToken Authorized token * @param openids openid * @param mpVideoMedia uploadMediaVideo method obtains media * @return */ public MassMsgResult sendVideoToOpenid(String accessToken, List<String> openids, MpVideoMedia mpVideoMedia){ MassMsgResult result = null; Treemap <string, string> params = new treemap <> (); params.put ("access_token", accessToken); // Posting parameter yang dikirimkan treemap <string, object> dataparams = new treemap <> (); dataparams.put ("Touser", OpenIds); dataparams.put ("mpvideo", mpvideoomedia); dataparams.put ("msgtype", "mpvideo"); String data = jsonutil.toJsonstring (dataparams); System.out.println (data); String json = httprequtil.httpsdefaultexecute (SystemConfig.post_method, wechatconfig.send_mass_message_url, params, data); coba {hasil = jsonutil.fromjsonstring (json, massmsgresult.class); } catch (Exception e) {E.PrintStackTrace (); } hasil pengembalian; } / ** * Pesan Kupon Kartu Massa Berdasarkan OpenID * @param AccessToken Token Otorisasi * @param OpenIds OpenId * @param MediaId * @Return * / MassMSgresult Public SendwxCardToopEnId (String AccessToken, Daftar <String> OpenIDS, String Cardid) {MassMSgresult Hasil = NULL; Treemap <string, string> params = new treemap <> (); params.put ("access_token", accessToken); // Posting parameter yang dikirimkan peta <String, Object> wxCardParams = new HashMap <> (); wxcardparams.put ("card_id", cardid); Treemap <string, object> dataparams = new treemap <> (); dataparams.put ("Touser", OpenIds); dataparams.put ("wxcard", wxcardparams); dataparams.put ("msgtype", "wxcard"); String data = jsonutil.toJsonstring (dataparams); String json = httprequtil.httpsdefaultexecute (SystemConfig.post_method, wechatconfig.send_mass_message_url, params, data); coba {hasil = jsonutil.fromjsonstring (json, massmsgresult.class); } catch (Exception e) {E.PrintStackTrace (); } hasil pengembalian; }Video Posting Data Bean
/ ** * Video Posting data kacang * @author Phil * @Date 20 September 2017 * */ kelas publik mpvideoMedia {private string media_id; judul string pribadi; deskripsi string pribadi; }Dapatkan media_id dalam posting video massal
/ ** * Dapatkan media_id di posting video massa * * @param accessToken * @param unggahvideo * @return */ public static unggahanMediaasResult unggahanMediavideo (string accessToken, mpvideoomedia mpvideoMedia) {unggahMediaSult Hasil result = null; Treemap <string, string> params = new treemap <string, string> (); params.put ("access_token", accessToken); // posting parameter yang dikirimkan data string = jsonutil.toJsonstring (mpVideoMedia); String json = httprequtil.httpsdefaultexecute (SystemConfig.post_method, wechatconfig.upload_video_media_url, params, data); hasil = jsonutil.fromjsonstring (json, unggahMediaasResult.class); hasil pengembalian; }Hasil dikembalikan oleh massa
paket com.phil.wechat.msg.model.resp; impor com.phil.wechat.base.result.ResultState; / *** Hasil dikembalikan oleh pesan massal* pengiriman massal sesuai dengan daftar openId* @author phil* @date 2 Juli 2017**/ kelas publik MassMSgresult memperluas resultState {private string type; // Jenis file media termasuk gambar (gambar), suara (suara), video (video) dan thumbnail (ibu jari), dan berapa kali adalah berita, yaitu, pesan grafik dan teks pribadi string msg_id; Private String msg_data_id; }Kelas konfigurasi
// Kirim massa demi grup public static final string send_all_mass_message_url = "https://api.weixin.qq.com/cgi-bin/message/mass/sendall"; // Kirim pesan massal menurut OpenID (setidaknya 2 OpenIds, hingga 10.000 10.000) string final statis public send_mass_message_url = "https://api.weixin.qq.com/cgi-bin/message/mass/send"; // Unggah grafis dan materi pesan teks public static final string unggah_news_media_url = "https://api.weixin.qq.com/cgi-bin/media/uploadnews"; // dapatkan media_id public static final string unggah_video_media_url = "https://api.weixin.qq.com/cgi-bin/media/uploadvideo" di pos video massa;
Mengenai kode sumber, saya harap ini membantu Anda
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.