Я хотел бы снова жаловаться на то, что управление материалами и массовые публикации WeChat не дружат с Java, и эта статья должна сочетаться с моей предыдущей статьей и официальными документами.
При отладке массовых отправных тестовых номеров вам нужно только посмотреть, можно ли успешно собрать сообщение о отправке массового отправки, и вам не нужно видеть результат (оно не будет отправлено в любом случае), потому что WeChat еще не открыл эту функцию (вероятно, она тоже не открыта).
1. Массовое заявление
На веб -сайте общедоступной платформы предоставляются учетные записи подписки с одним разрешением на отправку по одному в день, а учетные записи услуг предоставляются четыре разрешения на отправку в месяц (естественный месяц).
1. Для аутентифицированных учетных записей подписки интерфейс массовой отправки может быть успешно вызван один раз в день. Эта массовая отправка может быть выбрана для отправки всем пользователям или определенному тегу;
2. Хотя ежедневные вызовы разработчика с использованием интерфейса расширенного массового отправки ограничены 100 раз для учетных записей служб аутентификации, пользователи могут получать только 4 сообщения в месяц. Будь то на веб -сайтах общедоступных платформ или используя интерфейсы массовой отправки, пользователи могут получать только 4 сообщения в месяц. Более 4 массовых отправлений не смогут отправить пользователю;
3. Разработчики могут активно установить ClientMsgid, чтобы избежать повторных точек.
4. Массовый интерфейс ограничивает 60 запросов в минуту, и запросы, которые превышают лимит, будут отказаны.
5. Возможность вставить свою собственную учетную запись и другие публичные учетные записи в ссылки на текстовые и текстовые сообщения, которые были размещены в массовой статье.
2. Процесс массовой отправки текстовых сообщений
1. Во -первых, используйте интерфейс изображения в изображении загрузки и текстовое сообщение, чтобы успешно загрузить его и получить URL -адрес изображения; Обратитесь к предыдущему тексту, чтобы загрузить изображение и текстовое сообщение, чтобы получить метод URL
2. При загрузке графических и текстовых сообщений используйте URL -адрес изображения, полученный на предыдущем шаге;
3. Используйте массовую отправку в теги пользователей или массовую отправку списков OpenID, чтобы отправить текстовые и текстовые сообщения. Во время массовой отправки WeChat выполнит оригинальную проверку и вернет результаты операции по отправке массой;
4. В приведенном выше процессе, при необходимости, вы также можете предварительно просмотреть графические и текстовые сообщения, запросить статус массовой отправки или удалить сообщения о отправке массовых и т. Д.
3. Процесс отправки других типов сообщений, таких как массовые изображения и тексты
1. Если это массовое текстовое сообщение, просто отправьте его напрямую в соответствии со следующими инструкциями интерфейса;
2. Если вы отправляете сообщения, такие как массовые изображения, видео и т. Д., Вы должны заранее подготовить MediaID через интерфейс управления материалами.
IV Is_to_all описание
Используется для того, чтобы отправлять всем пользователям отправлять всем пользователям, значение верно или FALSE, выберите TRUE, сообщение отправляется всем пользователям в группе и выберите FALSE для отправки пользователям в указанной группе в соответствии с TAG_ID.
5. Два типа методов отправки массы
Массовая отправка Согласно тегу, номер подписки и номер обслуживания должны быть аутентифицированы
Интерфейс: https://api.weixin.qq.com/cgi-bin/message/mass/sendall?access_token=access_token
Массовая отправка в соответствии со списком OpenID применима только к сертифицированным номерам обслуживания
Интерфейс: https://api.weixin.qq.com/cgi-bin/message/mass/send?access_token=access_token
Данные публикации могут быть графическими сообщениями, текстом, голосом/аудио, изображением, видео и карточными купонами (во всех местах, где используется Media_id, теперь вы можете использовать постоянный материал Media_id в управлении материалами)
1. Медиа_ид в данных сообщениях текстового сообщения необходимо получить через интерфейс материала текстового сообщения для загрузки (https://api.weixin.qq.com/cgi-bin/media/uploadnews?access_token=access_token)
Это то же самое, что и данные о сообщении нового постоянного интерфейса графического материала в управлении материалами, но интерфейс отличается, и возвращенный JSON имеет дополнительный тип и Create_at. Обратитесь к методу добавления постоянного графического материала в моей предыдущей статье
2. Media_id в голосовой/аудио и изображении, которые должны быть получены данные путем загрузки и загрузки мультимедийного файлового интерфейса. Обратитесь к новому временному/постоянному материалому методу в моей предыдущей статье
3. Media_id в видео -данных данных наиболее хлопотно. Сначала вы должны получить Media_ID через загрузку и загрузку мультимедийного файлового интерфейса (после тестирования, приглашение на постоянное следующее шаг - недействительная media_id), а затем получить Media_id через специальный интерфейс. Это Media_id, необходимый для массовой отправки.
6. Образец -контроллер
@Requestmapping ("/sendbyopenid") public massmsgresult sendbyopenid () бросает исключение {// Отправить массовое текстовое сообщение в соответствии с строкой OpenID String MediaPath1 = "c: /users/phil/pictures/image/8538572f61d7a94cf0b9fes0f290cdb28.jpg"; Uploadmediasresult result1 = httprequtil.uploadtempmedia ("phil_token", "Image", mediaPath1); String mediaPath2 = "c: /users/phil/pictures/image/685977abgw1f8xqp46dgyj20qo0zktfi.jpg"; Uploadmediasresult result2 = httprequtil.uploadtempmedia ("phil_token", "Image", mediaPath2); List <uploadnewsmedia> array = new ArrayList <> (); Uploadnewsmedia entity1 = new uploadnewsmedia (); Entity1.setAuthor ("Фил"); Entity1.SetContent («Только опыт может понять жизнь, только знать, как это дорожить, знать только, как это понять, в вашей жизни всегда будет кто -то, кто заставляет вас смеяться самым сладким, и всегда будет кто -то, кто заставляет вас чувствовать себя глубочайшим, забывая, обращаясь к себе любезной»); 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 («Куриный суп из души»); Array.Add (Entity1); Uploadnewsmedia entity2 = new uploadnewsmedia (); Entity2.setauthor («Фил»); Entity2.SetContent («Что такое счастье? Счастье - это счастливое психологическое состояние и чувство себя. Только те, кто может все время счастливым, и во всем самые счастливые люди. Самые счастливые люди - самые счастливые люди. Люди, которые часто улыбаются, являются самыми счастливыми людьми».); entity2.setContent_source_url ("http://www.qq.com"); // entity2.setDigest ("Digest"); entity2.setshow_conver_pic (0); entity2.setthumb_media_id (result2.getMedia_id ()); Entity2.setTitle ("классические цитаты"); Array.Add (Entity2); Uploadmediasresult ur = httprequtil.uploadnewsmedia ("phil_token", массив); List <string> openids = new ArrayList <> (); openIds.add ("ovhq5v9-zshucax_ntcqwip-sbcg"); openids.add ("ovhq5v6cw3inkwuscl3olodif0cc"); Massmsgresult result_news = weChatmsgService.sendmpnewStepenid ("phil_token", openids, ur.getmedia_id ()); logger.debug ("Отправить от OpenID msg {}", result_news.geterrmsg ()); // Отправить текстовое сообщение на основе OpenID -списка MassMsgresult result_text = weChatmsgService.sendTextToopenid («Phil_Token», OpenIDS, «Что такое счастье? Счастье - это счастливое психологическое состояние и чувство себя. Те, кто может делать себя всегда счастливыми, и во всем самые счастливые люди. Самые счастливые люди - самые счастливые люди. logger.debug ("Отправить от OpenID msg {}", result_text.geterrmsg ()); вернуть ноль; }7. Некоторые из используемых классов и методов
Метод массовой отправки
/ *** Отправить текстовые сообщения на основе тега* @param AccessToken Авторизованный токен* @param объект графического сообщения* @return*/ public massmsgresult sendtexttotag (string accesstoken, int Tagid, строка содержимого) {massmsgresult result = null; TreeMap <String, String> params = new TreeMap <> (); params.put ("access_token", accesstoken); // post отправленная карта параметров <строка, объект> FilterParams = new Hashmap <> (); filterparams.put ("is_to_all", false); FilterParams.put ("TAG_ID", TAGID); Map <string, object> textParams = new HashMap <> (); TextParams.put ("Content", Content); TreeMap <String, Object> DataParams = new TreeMap <> (); dataParams.put («Фильтр», FilterParams); dataparams.put ("text", 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); try {result = jsonutil.fromjsonstring (json, massmgresult.class); } catch (Exception e) {e.printstackTrace (); } return Result; } / ** * Массовые текстовые сообщения на основе тегов * @param accesstoken authorize token * @param Tagid Tag * @param mediaid oploadmedia method watch * @return * / public massmsgresult sendmpnewstotag (string accesstoken, int tagid, string mediaid) {massmsgresult result = null; TreeMap <String, String> params = new TreeMap <> (); params.put ("access_token", accesstoken); // post отправленная карта параметров <строка, объект> FilterParams = new Hashmap <> (); filterparams.put ("is_to_all", false); FilterParams.put ("TAG_ID", TAGID); Map <string, object> mpnewsparams = new hashmap <> (); mpnewsparams.put ("media_id", mediaid); TreeMap <String, Object> DataParams = new TreeMap <> (); dataParams.put («Фильтр», 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); try {result = jsonutil.fromjsonstring (json, massmgresult.class); } catch (Exception e) {e.printstackTrace (); } return Result; } / ** * ОБРАЗОВАНИЕ ИЗОБРАЖЕНИЯ На основе тегов * @param accesstoken Авторизованный токен * @param Tagid Tag * @param mediaid oploadmedia method welech * @return * / public massmsgresult sendimagetotag (string accesstoken, int tagid, string mediaid) {massmsgresult result = null; TreeMap <String, String> params = new TreeMap <> (); params.put ("access_token", accesstoken); // post отправленная карта параметров <строка, объект> FilterParams = new Hashmap <> (); filterparams.put ("is_to_all", false); FilterParams.put ("TAG_ID", TAGID); Map <string, object> imageParams = new HashMap <> (); ImageParams.put ("Media_id", MediaID); TreeMap <String, Object> DataParams = new TreeMap <> (); dataParams.put («Фильтр», 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); try {result = jsonutil.fromjsonstring (json, massmgresult.class); } catch (Exception e) {e.printstackTrace (); } return Result; }/** * ОБСЛУЖИВАНИЕ/Аудио на основе тега * @param accesstoken Авторизованный токен * @param Tagid Tag * @param mediaid uploadmedia получает * @return */public massmsgresult sendvoicetotag (string accesstoken, int tagid, string mediaid) {massgresult result = null; TreeMap <String, String> params = new TreeMap <> (); params.put ("access_token", accesstoken); // post отправленная карта параметров <строка, объект> FilterParams = new Hashmap <> (); filterparams.put ("is_to_all", false); FilterParams.put ("TAG_ID", TAGID); Map <String, Object> VoiceParams = new HashMap <> (); VoiceParams.put ("Media_id", MediaID); TreeMap <String, Object> DataParams = new TreeMap <> (); dataParams.put («Фильтр», FilterParams); dataparams.put ("voice", VoiceParams); dataParams.put ("msgtype", "ocal"); String data = jsonutil.tojsonstring (dataparams); String json = httprequtil.httpsdefaultexecute (systemconfig.post_method, wechatconfig.send_all_mass_message_url, params, data); try {result = jsonutil.fromjsonstring (json, massmgresult.class); } catch (Exception e) {e.printstackTrace (); } return Result; } / ** * ОБЛАСТИ видео на основе тегов * @param Accestoken Авторизованный токен * @param Tagid Tag * @param MediaID oploadMedia Метод получает * @return * / public massmsgresult sendvideotag (string accesstoken, int tagid, string mediaid) {massmsgresult result = null; TreeMap <String, String> params = new TreeMap <> (); params.put ("access_token", accesstoken); // post отправленная карта параметров <строка, объект> FilterParams = new Hashmap <> (); filterparams.put ("is_to_all", false); FilterParams.put ("TAG_ID", TAGID); Map <string, object> mpvideoparams = new hashmap <> (); mpvideoparams.put ("media_id", mediaid); TreeMap <String, Object> DataParams = new TreeMap <> (); dataParams.put («Фильтр», 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); try {result = jsonutil.fromjsonstring (json, massmgresult.class); } catch (Exception e) {e.printstackTrace (); } return Result; } / ** * Купоны на объемную карту на основе тегов * @param accesstoken Авторизованный токен * @param Tagid Tag * @param card_id * @return * / public massmsgresult sendwxcardtotag (string accesstoken, int tagid, string cardid) {massmsgresult result = null; TreeMap <String, String> params = new TreeMap <> (); params.put ("access_token", accesstoken); // post отправленная карта параметров <строка, объект> FilterParams = new Hashmap <> (); filterparams.put ("is_to_all", false); FilterParams.put ("TAG_ID", TAGID); Map <string, object> wxcardparams = new hashmap <> (); wxcardparams.put ("card_id", cardid); TreeMap <String, Object> DataParams = new TreeMap <> (); dataParams.put («Фильтр», 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); try {result = jsonutil.fromjsonstring (json, massmgresult.class); } catch (Exception e) {e.printstackTrace (); } return Result; } / ** * Отправить массовые текстовые сообщения на основе OpenID * @param Accestoken Авторизованный токен * @param Tagid Tag * @param MediaID oploadMedia Метод получает * @return * / public massmsgresult sendmpnewStooopenid (string accessToken, list <string> openids, string mediaid) {massmsgresult result = null; TreeMap <String, String> params = new TreeMap <> (); params.put ("access_token", accesstoken); // post отправленная карта параметров <строка, объект> 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); try {result = jsonutil.fromjsonstring (json, massmgresult.class); } catch (Exception e) {e.printstackTrace (); } return Result; } / ** * Tulk Text Messages на основе OpenID * @param AccestOken Authorization Token * @param OpenIDS * @param Content * @return * / public massmsgresult sendTextTOoopenid (string accessToken, list <string> openids, string content) {massmsgresult result = null; TreeMap <String, String> params = new TreeMap <> (); params.put ("access_token", accesstoken); // post отправленная карта параметров <строка, объект> textparams = new hashmap <> (); TextParams.put ("Content", Content); TreeMap <String, Object> DataParams = new TreeMap <> (); dataparams.put ("touser", openids); dataparams.put ("text", 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); try {result = jsonutil.fromjsonstring (json, massmgresult.class); } catch (Exception e) {e.printstackTrace (); } return Result; } / ** * Отправить массовые голосовые сообщения на основе OpenID * @param AccestOken Authorization Token * @param openid * @param mediaid * @return * / public massmsgresult sendvocietoopenid (string accestoken, list <string> openids, string mediaid) {massmsgresult result = null; TreeMap <String, String> params = new TreeMap <> (); params.put ("access_token", accesstoken); // post отправленная карта параметров <строка, объект> VoiceParams = new Hashmap <> (); VoiceParams.put ("Media_id", MediaID); TreeMap <String, Object> DataParams = new TreeMap <> (); dataparams.put ("touser", openids); dataparams.put ("voice", VoiceParams); dataParams.put ("msgtype", "ocal"); String data = jsonutil.tojsonstring (dataparams); System.out.println (data); String json = httprequtil.httpsdefaultexecute (systemconfig.post_method, weChatconfig.send_mass_message_url, params, data); try {result = jsonutil.fromjsonstring (json, massmgresult.class); } catch (Exception e) {e.printstackTrace (); } return Result; } / ** * Сообщения на объем изображений на основе OpenID * @param Accestoken Авторизованный токен * @param openid * @param mediaid * @return * / public massmsgresult sendimagetoopenid (string accestoken, list <string> openids, string mediaId) {massMsgresult result = null; TreeMap <String, String> params = new TreeMap <> (); params.put ("access_token", accesstoken); // post отправленная карта параметров <строка, объект> imageparams = new hashmap <> (); 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); try {result = jsonutil.fromjsonstring (json, massmgresult.class); } catch (Exception e) {e.printstackTrace (); } return Result; } / ** * ОБЛАСТИ видео -сообщения на основе OpenID * @param Accestoken Авторизованный токен * @param openid * @param mpvideomedia uploadmediavideo Получает медиа * @return * / public massmsgresult sendvideotoopenid (string accesstoken, list> openids, mpvideomediaedomediaediaedia) {massmsgres -resteples = n. TreeMap <String, String> params = new TreeMap <> (); params.put ("access_token", accesstoken); // публикация отправленных параметров TreeMap <String, Object> dataparams = new TreeMap <> (); dataparams.put ("touser", openids); dataparams.put ("mpvideo", mpvideomedia); 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); try {result = jsonutil.fromjsonstring (json, massmgresult.class); } catch (Exception e) {e.printstackTrace (); } return Result; } / ** * Сообщение купона массовой карты на основе OpenID * @param Accestoken Authorization Token * @param openid * @param mediaid * @return * / public massmsgresult sendwxcardtoopenid (string accesstoken, list <string> openids, string cardid) {masscresult result = null; TreeMap <String, String> params = new TreeMap <> (); params.put ("access_token", accesstoken); // post отправленная карта параметров <строка, объект> 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); try {result = jsonutil.fromjsonstring (json, massmgresult.class); } catch (Exception e) {e.printstackTrace (); } return Result; }Видеост
/ ** * Видео сообщений Data Bean * @author Phil * @date 20 сентября 2017 г. * */ public class mpvideomedia {private String media_id; Приватная строка название; частная строка описание; }Получить media_id в сообщении массового видео
/ ** * GET MEDIA_ID в сообщении массового видео * * @param AccessToken * @param uploadvideo * @return */ public static uploadmediasresult uploadmediavideo (string accesstoken, mpvideomedia mpvideomedia) {uploadmediasresult result = null; TreeMap <String, String> params = new TreeMap <String, String> (); params.put ("access_token", accesstoken); // публикация отправленных параметров string data = jsonutil.tojsonstring (mpvideomedia); String json = httprequtil.httpsdefaultexecute (systemconfig.post_method, weChatconfig.upload_video_media_url, params, data); result = jsonutil.fromjsonstring (json, uploadmediasresult.class); результат возврата; }Результаты возвращаются массой
пакет com.phil.wechat.msg.model.resp; Import com.phil.wechat.base.result.ResultState; / *** Результат, возвращаемый массовыми сообщениями* объемная отправка в соответствии с Listd List* @author Phil* @date 2 июля 2017 г.**/ public Class Massmsgresult Extends ResultState {Private String Type; // Типы файлов мультимедиа включают изображение (изображение), голос (голос), видео (видео) и миниатюр (большой палец), а количество раз - это новости, то есть графические и текстовые сообщения Private String MSG_ID; Приватная строка msg_data_id; }Класс конфигурации
// Отправить массу по группе публичной статической конечной строки send_all_mass_message_url = "https://api.weixin.qq.com/cgi-bin/message/mass/sendall"; // Отправлять массовые сообщения в соответствии с OpenID (не менее 2 OpenIDS, до 10 000 10 000) Общественная статическая конечная строка send_mass_message_url = "https://api.weixin.qq.com/cgi-bin/message/mass/send"; // Загрузить графический и текстовый материал материал публичной статической конечной строки upload_news_media_url = "https://api.weixin.qq.com/cgi-bin/media/uploadnews"; // Get Media_ID Public Static Final String upload_video_Media_url = "https://api.weixin.qq.com/cgi-bin/media/uploadvideo" в массовом видео;
Что касается исходного кода, я надеюсь, что это поможет вам
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.