/**
  * 查询群发发送状态
  *
  * @param msgId 消息ID
  * @return 消息发送状态
  * @throws WeixinException
  * @see com.foxinmy.weixin4j.mp.api.MassApi
  * @see {@link com.foxinmy.weixin4j.util.MessageUtil#getStatusDesc(String)}
  * @see <a
  *     href="http://mp.weixin.qq.com/wiki/15/5380a4e6f02f2ffdc7981a8ed7a40753.html#.E6.9F.A5.E8.AF.A2.E7.BE.A4.E5.8F.91.E6.B6.88.E6.81.AF.E5.8F.91.E9.80.81.E7.8A.B6.E6.80.81.E3.80.90.E8.AE.A2.E9.98.85.E5.8F.B7.E4.B8.8E.E6.9C.8D.E5.8A.A1.E5.8F.B7.E8.AE.A4.E8.AF.81.E5.90.8E.E5.9D.87.E5.8F.AF.E7.94.A8.E3.80.91">查询群发状态</a>
  */
 public String getMassNewStatus(String msgId) throws WeixinException {
   return massApi.getMassNewStatus(msgId);
 }
 /**
  * 删除群发消息
  * <p>
  * 请注意,只有已经发送成功的消息才能删除删除消息只是将消息的图文详情页失效,已经收到的用户,还是能在其本地看到消息卡片
  * </p>
  *
  * @param msgid
  *            发送出去的消息ID
  * @throws WeixinException
  * @see <a
  *      href="http://mp.weixin.qq.com/wiki/15/5380a4e6f02f2ffdc7981a8ed7a40753.html#.E5.88.A0.E9.99.A4.E7.BE.A4.E5.8F.91.E3.80.90.E8.AE.A2.E9.98.85.E5.8F.B7.E4.B8.8E.E6.9C.8D.E5.8A.A1.E5.8F.B7.E8.AE.A4.E8.AF.81.E5.90.8E.E5.9D.87.E5.8F.AF.E7.94.A8.E3.80.91">删除群发</a>
  * @see com.foxinmy.weixin4j.mp.api.MassApi
  * @see {@link #massByGroupId(Tuple, int)}
  * @see {@link #massByOpenIds(Tuple, String...)
  *
  */
 public JsonResult deleteMassNews(String msgid) throws WeixinException {
   return massApi.deleteMassNews(msgid);
 }
 /**
  * 预览群发消息</br> 开发者可通过该接口发送消息给指定用户,在手机端查看消息的样式和排版
  *
  * @param toUser 接收用户的openID
  * @param toWxName 接收用户的微信号 towxname和touser同时赋值时,以towxname优先
  * @param tuple 消息元件
  * @return 处理结果
  * @throws WeixinException
  * @see com.foxinmy.weixin4j.mp.api.MassApi
  * @see com.foxinmy.weixin4j.tuple.MassTuple
  * @see <a
  *     href="http://mp.weixin.qq.com/wiki/15/5380a4e6f02f2ffdc7981a8ed7a40753.html#.E9.A2.84.E8.A7.88.E6.8E.A5.E5.8F.A3.E3.80.90.E8.AE.A2.E9.98.85.E5.8F.B7.E4.B8.8E.E6.9C.8D.E5.8A.A1.E5.8F.B7.E8.AE.A4.E8.AF.81.E5.90.8E.E5.9D.87.E5.8F.AF.E7.94.A8.E3.80.91">预览群发消息</a>
  */
 public JsonResult previewMassNews(String toUser, String toWxName, MassTuple tuple)
     throws WeixinException {
   return massApi.previewMassNews(toUser, toWxName, tuple);
 }
 /**
  * 根据openid群发图文消息
  *
  * @param articles 图文列表
  * @param openIds openId列表
  * @return 第一个元素为消息发送任务的ID,第二个元素为消息的数据ID,该字段只有在群发图文消息时,才会出现,可以用于在图文分析数据接口中
  * @see <a
  *     href="http://mp.weixin.qq.com/wiki/15/5380a4e6f02f2ffdc7981a8ed7a40753.html#.E6.A0.B9.E6.8D.AEOpenID.E5.88.97.E8.A1.A8.E7.BE.A4.E5.8F.91.E3.80.90.E8.AE.A2.E9.98.85.E5.8F.B7.E4.B8.8D.E5.8F.AF.E7.94.A8.EF.BC.8C.E6.9C.8D.E5.8A.A1.E5.8F.B7.E8.AE.A4.E8.AF.81.E5.90.8E.E5.8F.AF.E7.94.A8.E3.80.91">根据openid群发</a>
  * @see {@link #massByOpenIds(Tuple,String...)}
  * @see com.foxinmy.weixin4j.tuple.MpArticle
  * @throws WeixinException
  */
 public String[] massArticleByOpenIds(List<MpArticle> articles, String... openIds)
     throws WeixinException {
   return massApi.massArticleByOpenIds(articles, openIds);
 }
 /**
  * openId群发
  *
  * <p>在返回成功时,意味着群发任务提交成功,并不意味着此时群发已经结束,所以,仍有可能在后续的发送过程中出现异常情况导致用户未收到消息,
  * 如消息有时会进行审核、服务器不稳定等,此外,群发任务一般需要较长的时间才能全部发送完毕
  *
  * @param tuple 消息元件
  * @param openIds openId列表
  * @return 第一个元素为消息发送任务的ID,第二个元素为消息的数据ID,该字段只有在群发图文消息时,才会出现,可以用于在图文分析数据接口中
  * @throws WeixinException
  * @see com.foxinmy.weixin4j.mp.model.User
  * @see com.foxinmy.weixin4j.tuple.Text
  * @see com.foxinmy.weixin4j.tuple.Image
  * @see com.foxinmy.weixin4j.tuple.Voice
  * @see com.foxinmy.weixin4j.tuple.MpVideo
  * @see com.foxinmy.weixin4j.tuple.MpNews
  * @see com.foxinmy.weixin4j.mp.api.MassApi
  * @see com.foxinmy.weixin4j.tuple.MassTuple
  * @see <a
  *     href="http://mp.weixin.qq.com/wiki/15/5380a4e6f02f2ffdc7981a8ed7a40753.html#.E6.A0.B9.E6.8D.AEOpenID.E5.88.97.E8.A1.A8.E7.BE.A4.E5.8F.91.E3.80.90.E8.AE.A2.E9.98.85.E5.8F.B7.E4.B8.8D.E5.8F.AF.E7.94.A8.EF.BC.8C.E6.9C.8D.E5.8A.A1.E5.8F.B7.E8.AE.A4.E8.AF.81.E5.90.8E.E5.8F.AF.E7.94.A8.E3.80.91">根据openid群发</a>
  * @see {@link com.foxinmy.weixin4j.mp.api.MediaApi#uploadMedia(File)}
  * @see {@link com.foxinmy.weixin4j.mp.api.UserApi#getUser(String)}
  */
 public String[] massByOpenIds(MassTuple tuple, String... openIds) throws WeixinException {
   return massApi.massByOpenIds(tuple, openIds);
 }
 /**
  * 分组ID群发图文消息
  *
  * @param articles 图文列表
  * @param groupId 分组ID
  * @return 第一个元素为消息发送任务的ID,第二个元素为消息的数据ID,该字段只有在群发图文消息时,才会出现,可以用于在图文分析数据接口中
  * @see {@link #massByGroupId(Tuple,int)}
  * @see <a
  *     href="http://mp.weixin.qq.com/wiki/15/5380a4e6f02f2ffdc7981a8ed7a40753.html#.E6.A0.B9.E6.8D.AE.E5.88.86.E7.BB.84.E8.BF.9B.E8.A1.8C.E7.BE.A4.E5.8F.91.E3.80.90.E8.AE.A2.E9.98.85.E5.8F.B7.E4.B8.8E.E6.9C.8D.E5.8A.A1.E5.8F.B7.E8.AE.A4.E8.AF.81.E5.90.8E.E5.9D.87.E5.8F.AF.E7.94.A8.E3.80.91">根据分组群发</a>
  * @see com.foxinmy.weixin4j.tuple.MpArticle
  * @throws WeixinException
  */
 public String[] massArticleByGroupId(List<MpArticle> articles, int groupId)
     throws WeixinException {
   return massApi.massArticleByGroupId(articles, groupId);
 }
 /**
  * 群发消息
  *
  * <p>在返回成功时,意味着群发任务提交成功,并不意味着此时群发已经结束,所以,仍有可能在后续的发送过程中出现异常情况导致用户未收到消息,
  * 如消息有时会进行审核、服务器不稳定等,此外,群发任务一般需要较长的时间才能全部发送完毕
  *
  * @param MassTuple 消息元件
  * @param isToAll 用于设定是否向全部用户发送,值为true或false,选择true该消息群发给所有用户, 选择false可根据group_id发送给指定群组的用户
  * @param groupId 分组ID
  * @return 第一个元素为消息发送任务的ID,第二个元素为消息的数据ID,该字段只有在群发图文消息时,才会出现,可以用于在图文分析数据接口中
  * @throws WeixinException
  * @see com.foxinmy.weixin4j.mp.model.Group
  * @see com.foxinmy.weixin4j.tuple.Text
  * @see com.foxinmy.weixin4j.tuple.Image
  * @see com.foxinmy.weixin4j.tuple.Voice
  * @see com.foxinmy.weixin4j.tuple.MpVideo
  * @see com.foxinmy.weixin4j.tuple.MpNews
  * @see com.foxinmy.weixin4j.mp.api.MassApi
  * @see com.foxinmy.weixin4j.tuple.MassTuple
  * @see {@link com.foxinmy.weixin4j.mp.api.GroupApi#getGroups()}
  * @see <a
  *     href="http://mp.weixin.qq.com/wiki/15/5380a4e6f02f2ffdc7981a8ed7a40753.html#.E6.A0.B9.E6.8D.AE.E5.88.86.E7.BB.84.E8.BF.9B.E8.A1.8C.E7.BE.A4.E5.8F.91.E3.80.90.E8.AE.A2.E9.98.85.E5.8F.B7.E4.B8.8E.E6.9C.8D.E5.8A.A1.E5.8F.B7.E8.AE.A4.E8.AF.81.E5.90.8E.E5.9D.87.E5.8F.AF.E7.94.A8.E3.80.91">根据分组群发</a>
  */
 public String[] massByGroupId(MassTuple tuple, boolean isToAll, int groupId)
     throws WeixinException {
   return massApi.massByGroupId(tuple, isToAll, groupId);
 }
 /**
  * 上传群发的图文消息,一个图文消息支持1到10条图文
  *
  * @param articles 图片消息
  * @return 媒体ID
  * @throws WeixinException
  * @see <a
  *     href="http://mp.weixin.qq.com/wiki/15/5380a4e6f02f2ffdc7981a8ed7a40753.html#.E4.B8.8A.E4.BC.A0.E5.9B.BE.E6.96.87.E6.B6.88.E6.81.AF.E7.B4.A0.E6.9D.90.E3.80.90.E8.AE.A2.E9.98.85.E5.8F.B7.E4.B8.8E.E6.9C.8D.E5.8A.A1.E5.8F.B7.E8.AE.A4.E8.AF.81.E5.90.8E.E5.9D.87.E5.8F.AF.E7.94.A8.E3.80.91">上传图文素材</a>
  * @see com.foxinmy.weixin4j.tuple.MpArticle
  * @see com.foxinmy.weixin4j.mp.api.MassApi
  */
 public String uploadMassArticle(List<MpArticle> articles) throws WeixinException {
   return massApi.uploadArticle(articles);
 }