WeChat Material ManagementとMass PostingはJavaに友好的ではないことをもう一度文句を言いたいと思います。この記事は、以前の記事や公式文書と組み合わせる必要があります。
テスト番号を送信するマスをデバッグする場合、Mass送信メッセージを正常に組み立てることができるかどうかを確認する必要があり、WeChatがまだこの機能を開いていないため(おそらく開いていない)、結果を確認する必要はありません(とにかく送信されません)。
1。マスステートメント
パブリックプラットフォームのWebサイトでは、サブスクリプションアカウントに1日あたり1つの質量送信許可が提供され、サービスアカウントには1か月あたり4つの質量送信権限が提供されます(自然月)。
1。認証されたサブスクリプションアカウントの場合、質量送信インターフェイスは1日1回正常に呼び出されます。この大量送信は、すべてのユーザーまたは特定のタグに送信するために選択できます。
2. Advanced Mass Sending Interfaceを使用して開発者の毎日の呼び出しは、認証サービスアカウントで100回に制限されていますが、ユーザーは月に4つのメッセージしか受信できません。パブリックプラットフォームのWebサイトで、または大量送信インターフェイスを使用する場合でも、ユーザーは月に4つのメッセージしか受信できません。 4つ以上の大量送信は、ユーザーへの送信に失敗します。
3.開発者は、繰り返しのプッシュを避けるために積極的にClientMsGIDを設定できます。
4.質量界面は1分あたり60のリクエストを制限し、制限を超えるリクエストは拒否されます。
5.大量記事に投稿されたテキストおよびテキストメッセージリンクに独自のアカウントやその他のパブリックアカウントを挿入する機能。
2。テキストメッセージを送信するプロセス
1.最初に、アップロード画像とテキストメッセージの画像インターフェイスを使用してアップロードして正常にアップロードし、画像URLを取得します。前のテキストを参照して、画像とテキストメッセージをアップロードしてURLメソッドを取得します
2.グラフィックメッセージとテキストメッセージの資料をアップロードするときは、前のステップで取得した画像URLを使用してください。
3.ユーザータグへの大量送信またはOpenIDリストの大量送信を使用して、テキストとテキストメッセージを送信します。大量送信中、WeChatは元の検証を実行し、質量送信操作の結果を返します。
4。上記のプロセスでは、必要に応じて、グラフィックメッセージとテキストメッセージをプレビューしたり、質量送信ステータスを照会するか、大量送信メッセージなどを削除することもできます。
3.大量の写真やテキストなどの他のメッセージタイプを送信するプロセス
1.大量のテキストメッセージの場合は、次のインターフェイス命令に従って直接送信するだけです。
2。大量の写真、ビデオなどのメッセージを送信している場合は、MediaIDを事前に材料管理インターフェイスを介して準備する必要があります。
IV。 IS_TO_ALL説明
すべてのユーザーに送信するかどうかを設定するために使用されますが、値はtrueまたはfalse、trueを選択し、メッセージはグループ内のすべてのユーザーに送信され、tag_idに従って指定されたグループのユーザーにfalseを選択します。
5. 2種類の質量送信方法
タグに従って大量送信、サブスクリプション番号とサービス番号は認証する必要があります
インターフェース: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.テキストメッセージの投稿データのメディア_IDは、アップロードテキストメッセージの素材インターフェイス(https://api.weixin.qq.com/cgi-bin/media/uploadnews?access_token=access_token)を介して取得する必要があります。
これは、マテリアル管理における新しい永続的なグラフィックマテリアルインターフェイスの投稿データと同じですが、インターフェイスは異なり、返されたJSONには追加のタイプとcreated_atがあります。私の前の記事で恒久的なグラフィック素材を追加する方法を参照してください
2。音声/オーディオおよび画像のMedia_idデータをアップロードしてマルチメディアファイルインターフェイスのダウンロードを通じて取得する必要があります。私の前の記事の新しい一時的/永続的な材料方法を参照してください
3。ビデオ投稿データのMedia_idが最も面倒です。最初にアップロードしてMedia_Idを取得し、マルチメディアファイルインターフェイスをダウンロードする必要があります(テスト後、永続的な次のステップエラープロンプトは無効なMedia_IDです)。次に、特別なインターフェイスを介してMedia_IDを取得します。これは、大量送信に必要なMedia_idです。
6。バルクサンプルコントローラー
@RequestMapping( "/sendbyopenid")public massmsgresult sendbyopenid()throws exception {// openidリスト文字列mediapath1 = "c:/users/phil/pictures/image/8538572f61d7a94cf0b9fe0f90cdb28.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 <>(); uploadNewsMediaEntity1 = new uploadNewsMedia(); entity1.setauthor( "phil"); 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( "soulチキンスープ"); array.add(entity1); uploadNewsMediaEntity2 = new uploadNewsMedia(); entity2.setauthor( "phil"); 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( "Classic Quotes"); array.add(entity2); uploadmediasResult ur = httprequtil.uploadnewsmedia( "phil_token"、array); List <String> OpenIDS = new ArrayList <>(); OpenIds.Add( "ovhq5v9-zshucax_ntcqwip-sbcg"); OpenIds.Add( "ovhq5v6cw3inkwuscl3olodif0cc"); massmsgresult result_news = wechatmsgservice.sendmpnewstoopenid( "phil_token"、openids、ur.getmedia_id()); logger.debug( "send by openID msg {}"、result_news.geterrmsg()); // OpenIDリストに基づいてテキストメッセージを送信するMassMSGRESULT result_text = wechatmsgservice.sendtextttoopenid( "phil_token"、openids、「幸福とは何ですか?幸福は自分自身の感覚です。常に自分自身を幸せにすることができます。 logger.debug( "send by openID msg {}"、result_text.geterrmsg()); nullを返します。 }7.使用されるクラスと方法の一部
質量送信方法
/ ***タグに基づいてテキストメッセージを送信* @Param AccessToken認定token* @Param Entity Graphic Message Object*/ public MassMsggresult SendTextTotag(String AccessToken、int Tagid、String Content){MassMsgresult result result = null; treemap <string、string> params = new Treemap <>(); params.put( "Access_Token"、AccessToken); //送信パラメーターの投稿マップ<文字列、オブジェクト> 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");文字列data = jsonutil.tojsonstring(dataparams); string json = httprequtil.httpsddefaultexecute(systemconfig.post_method、wechatconfig.send_all_mass_message_url、params、data); try {result = jsonutil.fromjsonstring(json、massmsgresult.class); } catch(Exception e){e.printstacktrace(); } return result; } / ** *タグに基づくマステキストメッセージ * @param AccessToken Authorize token * @Param Tagid Tag * @param MediaId uploadmediaメソッドGets * @return * / public Massmsgresult sendmpnewstotag(string accesstoken、intmpnewstotag、intmpnewstotag){massmsgresult result = null; treemap <string、string> params = new Treemap <>(); params.put( "Access_Token"、AccessToken); //送信パラメーターの投稿マップ<文字列、オブジェクト> 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.httpsddefaultexecute(systemconfig.post_method、wechatconfig.send_all_mass_message_url、params、data); try {result = jsonutil.fromjsonstring(json、massmsgresult.class); } catch(Exception e){e.printstacktrace(); } return result; } / ** *タグに基づくバルク画像 * @param Accesstoken認定token * @param tagid tag * @param mediaid uploadmediaメソッドは * @return * / public massmsgresult sendimagetotag(string accesstoken、int tagid、string mediaid){massmsgresult result = null; treemap <string、string> params = new Treemap <>(); params.put( "Access_Token"、AccessToken); //送信パラメーターの投稿マップ<文字列、オブジェクト> 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");文字列data = jsonutil.tojsonstring(dataparams); string json = httprequtil.httpsddefaultexecute(systemconfig.post_method、wechatconfig.send_all_mass_message_url、params、data); try {result = jsonutil.fromjsonstring(json、massmsgresult.class); } catch(Exception e){e.printstacktrace(); } return result; }/** *タグに基づくバルク音声/オーディオ * @param AccessToken認定token * @param MediaId uploadmediaメソッドGets * @return */public Massmsgresult sendvoiceTotag(int accesstoken、string mediaid){massmsgresult result = null; treemap <string、string> params = new Treemap <>(); params.put( "Access_Token"、AccessToken); //送信パラメーターの投稿マップ<文字列、オブジェクト> 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"、 "Voice");文字列data = jsonutil.tojsonstring(dataparams); string json = httprequtil.httpsddefaultexecute(systemconfig.post_method、wechatconfig.send_all_mass_message_url、params、data); try {result = jsonutil.fromjsonstring(json、massmsgresult.class); } catch(Exception e){e.printstacktrace(); } return result; } / ** *タグに基づくバルクビデオ * @param AccessToken認定token * @param tagid tag * @param mediaid uploadmediaメソッドGets * @return * / public massmsgresult sendvideototag(string accesstoken、int tagid、string mediaid){massmsgresult result = null; treemap <string、string> params = new Treemap <>(); params.put( "Access_Token"、AccessToken); //送信パラメーターの投稿マップ<文字列、オブジェクト> 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");文字列data = jsonutil.tojsonstring(dataparams); string json = httprequtil.httpsddefaultexecute(systemconfig.post_method、wechatconfig.send_all_mass_message_url、params、data); try {result = jsonutil.fromjsonstring(json、massmsgresult.class); } catch(Exception e){e.printstacktrace(); } return result; } / ** *タグに基づくバルクカードクーポン * @param AccessToken認定token * @param tagid tag * @param card_id * @return * / public massmsgresult sendwxcardtotag(string accesstoken、int tagid、string cardid){massmsgresult result result = null; treemap <string、string> params = new Treemap <>(); params.put( "Access_Token"、AccessToken); //送信パラメーターの投稿マップ<文字列、オブジェクト> 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");文字列data = jsonutil.tojsonstring(dataparams); string json = httprequtil.httpsddefaultexecute(systemconfig.post_method、wechatconfig.send_all_mass_message_url、params、data); try {result = jsonutil.fromjsonstring(json、massmsgresult.class); } catch(Exception e){e.printstacktrace(); } return result; } / ** * OpenIDに基づいて大量のテキストメッセージを送信 * @param AccessToken認定token * @param MediaId uploadmediaメソッドGets * @return * / public Massmsgresult sendmpnewstoopenid(String Accesstoken、list <string> openids、string mediaid){massmsgresult = null; treemap <string、string> params = new Treemap <>(); params.put( "Access_Token"、AccessToken); //送信パラメーターの投稿Map <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);文字列data = jsonutil.tojsonstring(dataparams); string json = httprequtil.httpsddefaultexecute(systemconfig.post_method、wechatconfig.send_mass_message_url、params、data); try {result = jsonutil.fromjsonstring(json、massmsgresult.class); } catch(Exception e){e.printstacktrace(); } return result; } / ** * OpenIDに基づくバルクテキストメッセージ * @param AccessToken Authorization Token * @Param OpenIDS OpenID * @Return * / public MassMSGRESULT SENDTEXTTOKENID(String AccessToken、list <string> openids、string content){massmsgresult result = null; treemap <string、string> params = new Treemap <>(); params.put( "Access_Token"、AccessToken); //送信パラメーターの投稿マップ<string、object> 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");文字列data = jsonutil.tojsonstring(dataparams); System.out.println(data); string json = httprequtil.httpsddefaultexecute(systemconfig.post_method、wechatconfig.send_mass_message_url、params、data); try {result = jsonutil.fromjsonstring(json、massmsgresult.class); } catch(Exception e){e.printstacktrace(); } return result; } / ** * OpenIDに基づいて大量の音声メッセージを送信 * @param AccessToken Authorization token * @Param OpenIDS OpenID * @Param MediaId * / public Massmsgresult SendVocietOpenid(String AccessToken、List <string> openids、String Mediaid){massmsgresult result = null; treemap <string、string> params = new Treemap <>(); params.put( "Access_Token"、AccessToken); //送信パラメーターの投稿マップ<string、object> 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"、 "Voice");文字列data = jsonutil.tojsonstring(dataparams); System.out.println(data); string json = httprequtil.httpsddefaultexecute(systemconfig.post_method、wechatconfig.send_mass_message_url、params、data); try {result = jsonutil.fromjsonstring(json、massmsgresult.class); } catch(Exception e){e.printstacktrace(); } return result; } / ** * OpenIDに基づくバルク画像メッセージ * @param AccessToken認定token * @param OpenIDS OpenID * @Param MediaId * @return * / public Massmsgresult sendimagetopenid(string accesstoken、list <string> openids、string mediaid){massmsgresult result = null; treemap <string、string> params = new Treemap <>(); params.put( "Access_Token"、AccessToken); //送信パラメーターの投稿マップ<文字列、オブジェクト> 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");文字列data = jsonutil.tojsonstring(dataparams); System.out.println(data); string json = httprequtil.httpsddefaultexecute(systemconfig.post_method、wechatconfig.send_mass_message_url、params、data); try {result = jsonutil.fromjsonstring(json、massmsgresult.class); } catch(Exception e){e.printstacktrace(); } return result; } / ** * OpenIDに基づくバルクビデオメッセージ * @param AccessToken認定token * @Param OpenIDS OpenID * @Param MPVIDEOMEDIA UPLOADMEDIAVIDEOメソッドはメディア * @return * / public Massmsgresult sendvideotoopenid(String AccessToken、List <String> Openids、Mpide -demedia mpvideomgrest; 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");文字列data = jsonutil.tojsonstring(dataparams); System.out.println(data); string json = httprequtil.httpsddefaultexecute(systemconfig.post_method、wechatconfig.send_mass_message_url、params、data); try {result = jsonutil.fromjsonstring(json、massmsgresult.class); } catch(Exception e){e.printstacktrace(); } return result; } / ** * OpenIDに基づくマスカードクーポンメッセージ * @Param AccessToken Authorization Token * @Param OpenIDS OpenID * @Param MediaId * @return * / public Massmsgresult sendwxcardtoopenid(string accesstoken、list <string> openids、string cardid){massmsgresult = null; treemap <string、string> params = new Treemap <>(); params.put( "Access_Token"、AccessToken); //送信パラメーターの投稿Map <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");文字列data = jsonutil.tojsonstring(dataparams); string json = httprequtil.httpsddefaultexecute(systemconfig.post_method、wechatconfig.send_mass_message_url、params、data); try {result = jsonutil.fromjsonstring(json、massmsgresult.class); } catch(Exception e){e.printstacktrace(); } return result; }ビデオポストデータビーン
/ ** * Video Post Data Bean * @Author Phil * @date 2017年9月20日 * */ public class mpvideomedia {private string media_id;プライベートストリングタイトル。プライベート文字列の説明; }Mass Videoの投稿でMedia_idを入手してください
/ ** * Mass Videoの投稿で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); //送信されたパラメーターの投稿文字列data = jsonutil.tojsonstring(mpvideomedia); string json = httprequtil.httpsddefaultexecute(systemconfig.post_method、wechatconfig.upload_video_media_url、params、data); result = jsonutil.fromjsonstring(json、uploadmediasresult.class);返品結果; }結果は質量によって返されます
パッケージcom.phil.wechat.msg.model.resp; com.phil.wechat.base.result.resultstateをインポートします。 / *** MASSメッセージによって返される結果* OpenIDリストに従って送信* @Author Phil* @Date 2017年7月2日**/ Public Class MassMSGRESULTS EXTENTS resultState {private string type; //メディアファイルの種類には、画像(画像)、音声(音声)、ビデオ(ビデオ)、サムネイル(サム)が含まれます。プライベート文字列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"; //グラフィックとテキストメッセージのアップロード素材public static final string 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.qc.com/cgi-bin/media/uploadvideo"マスビデオ投稿。
ソースコードに関しては、それがあなたに役立つことを願っています
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。