新增素材管理、多客服会话管理、群发消息给所有人接口

This commit is contained in:
jinyu
2015-03-22 19:55:03 +08:00
parent 7cb8e21579
commit 264900ccbd
27 changed files with 1428 additions and 119 deletions
@@ -13,7 +13,7 @@ import com.foxinmy.weixin4j.response.ResponseMessage;
* @since JDK 1.7
* @see
*/
public abstract class DebugAction<M extends BaseMsg> extends AbstractAction<M> {
public class DebugAction<M extends BaseMsg> extends AbstractAction<M> {
@Override
public ResponseMessage execute(M message) {
@@ -579,6 +579,10 @@
<text>Api禁用</text>
</error>
<!-- 多客服API错误 -->
<error>
<code>61450</code>
<text>系统错误(system error)</text>
</error>
<error>
<code>61451</code>
<text>参数错误(invalid parameter)</text>
@@ -607,6 +611,22 @@
<code>61457</code>
<text>无效头像文件类型(invalid file type)</text>
</error>
<error>
<code>61458</code>
<text>客户正在被其他客服接待(customer accepted by xxx@xxxx)</text>
</error>
<error>
<code>61459</code>
<text>客服不在线(kf offline)</text>
</error>
<error>
<code>61500</code>
<text>日期格式错误</text>
</error>
<error>
<code>61501</code>
<text>日期范围错误</text>
</error>
<error>
<code>50001</code>
<desc>api/redirect_uri unauthorized</desc>
@@ -0,0 +1,40 @@
package com.foxinmy.weixin4j.msg.event;
import com.foxinmy.weixin4j.type.EventType;
import com.thoughtworks.xstream.annotations.XStreamAlias;
/**
* 客服关闭会话事件
*
* @className KfCloseEventMessage
* @author jy
* @date 2015年3月22日
* @since JDK 1.7
* @see <a
* href="http://mp.weixin.qq.com/wiki/2/6c20f3e323bdf5986cfcb33cbd3b829a.html#.E4.BC.9A.E8.AF.9D.E7.8A.B6.E6.80.81.E9.80.9A.E7.9F.A5.E4.BA.8B.E4.BB.B6">会话状态通知事件</a>
*/
public class KfCloseEventMessage extends EventMessage {
private static final long serialVersionUID = 3644449346935205541L;
public KfCloseEventMessage() {
super(EventType.kf_close_session);
}
@XStreamAlias("KfAccount")
private String kfAccount; // 客服账号
public String getKfAccount() {
return kfAccount;
}
public void setKfAccount(String kfAccount) {
this.kfAccount = kfAccount;
}
@Override
public String toString() {
return "KfCloseEventMessage [kfAccount=" + kfAccount + ", ="
+ super.toString() + "]";
}
}
@@ -0,0 +1,40 @@
package com.foxinmy.weixin4j.msg.event;
import com.foxinmy.weixin4j.type.EventType;
import com.thoughtworks.xstream.annotations.XStreamAlias;
/**
* 客服接入会话事件
*
* @className KfCreateEventMessage
* @author jy
* @date 2015年3月22日
* @since JDK 1.7
* @see <a
* href="http://mp.weixin.qq.com/wiki/2/6c20f3e323bdf5986cfcb33cbd3b829a.html#.E4.BC.9A.E8.AF.9D.E7.8A.B6.E6.80.81.E9.80.9A.E7.9F.A5.E4.BA.8B.E4.BB.B6">会话状态通知事件</a>
*/
public class KfCreateEventMessage extends EventMessage {
private static final long serialVersionUID = -8968189700999202108L;
public KfCreateEventMessage() {
super(EventType.kf_create_session);
}
@XStreamAlias("KfAccount")
private String kfAccount; // 客服账号
public String getKfAccount() {
return kfAccount;
}
public void setKfAccount(String kfAccount) {
this.kfAccount = kfAccount;
}
@Override
public String toString() {
return "KfCreateEventMessage [kfAccount=" + kfAccount + ", ="
+ super.toString() + "]";
}
}
@@ -0,0 +1,51 @@
package com.foxinmy.weixin4j.msg.event;
import com.foxinmy.weixin4j.type.EventType;
import com.thoughtworks.xstream.annotations.XStreamAlias;
/**
* 客服转接会话事件
*
* @className KfSwitchEventMessage
* @author jy
* @date 2015年3月22日
* @since JDK 1.7
* @see <a
* href="http://mp.weixin.qq.com/wiki/2/6c20f3e323bdf5986cfcb33cbd3b829a.html#.E4.BC.9A.E8.AF.9D.E7.8A.B6.E6.80.81.E9.80.9A.E7.9F.A5.E4.BA.8B.E4.BB.B6">会话状态通知事件</a>
*/
public class KfSwitchEventMessage extends EventMessage {
private static final long serialVersionUID = 4319501074109623413L;
public KfSwitchEventMessage() {
super(EventType.kf_switch_session);
}
@XStreamAlias("FromKfAccount")
private String fromKfAccount; // 来自的客服账号
@XStreamAlias("ToKfAccount")
private String toKfAccount; // 转移给客服账号
public String getFromKfAccount() {
return fromKfAccount;
}
public void setFromKfAccount(String fromKfAccount) {
this.fromKfAccount = fromKfAccount;
}
public String getToKfAccount() {
return toKfAccount;
}
public void setToKfAccount(String toKfAccount) {
this.toKfAccount = toKfAccount;
}
@Override
public String toString() {
return "KfSwitchEventMessage [fromKfAccount=" + fromKfAccount
+ ", toKfAccount=" + toKfAccount + "]";
}
}
@@ -63,9 +63,9 @@ public class MassEventMessage extends EventMessage {
}
/**
* 发送状态描述<br/>
* err(10001,涉嫌广告) err(20001,涉嫌政治) err(20004,涉嫌社会)<br/>
* err(20002,涉嫌色情) err(20006,涉嫌违法犯罪) err(20008,涉嫌欺诈)<br/>
* 发送状态描述</br>
* err(10001,涉嫌广告) err(20001,涉嫌政治) err(20004,涉嫌社会)</br>
* err(20002,涉嫌色情) err(20006,涉嫌违法犯罪) err(20008,涉嫌欺诈)</br>
* err(20013,涉嫌版权) err(22000,涉嫌互推(互相宣传) err(21000,涉嫌其他)
*
* @param status
@@ -76,9 +76,9 @@ public class MassEventMessage extends EventMessage {
}
/**
* 发送状态描述<br/>
* err(10001,涉嫌广告) err(20001,涉嫌政治) err(20004,涉嫌社会)<br/>
* err(20002,涉嫌色情) err(20006,涉嫌违法犯罪) err(20008,涉嫌欺诈)<br/>
* 发送状态描述</br>
* err(10001,涉嫌广告) err(20001,涉嫌政治) err(20004,涉嫌社会)</br>
* err(20002,涉嫌色情) err(20006,涉嫌违法犯罪) err(20008,涉嫌欺诈)</br>
* err(20013,涉嫌版权) err(22000,涉嫌互推(互相宣传) err(21000,涉嫌其他)
*
* @param status
@@ -6,6 +6,15 @@ import com.alibaba.fastjson.annotation.JSONField;
import com.foxinmy.weixin4j.type.MediaType;
import com.thoughtworks.xstream.annotations.XStreamOmitField;
/**
* 消息对象基类
*
* @className Base
* @author jy
* @date 2015年3月21日
* @since JDK 1.7
* @see
*/
public class Base implements Serializable {
private static final long serialVersionUID = 8487251213352068227L;
@@ -2,6 +2,9 @@ package com.foxinmy.weixin4j.type;
import com.foxinmy.weixin4j.msg.event.EnterAgentEventMessage;
import com.foxinmy.weixin4j.msg.event.EventMessage;
import com.foxinmy.weixin4j.msg.event.KfCloseEventMessage;
import com.foxinmy.weixin4j.msg.event.KfCreateEventMessage;
import com.foxinmy.weixin4j.msg.event.KfSwitchEventMessage;
import com.foxinmy.weixin4j.msg.event.LocationEventMessage;
import com.foxinmy.weixin4j.msg.event.MassEventMessage;
import com.foxinmy.weixin4j.msg.event.ScanEventMessage;
@@ -30,9 +33,13 @@ public enum EventType {
MenuPhotoEventMessage.class), pic_weixin(
MenuPhotoEventMessage.class), location_select(
MenuLocationEventMessage.class), click(MenuEventMessage.class), location(
LocationEventMessage.class),masssendjobfinish(
LocationEventMessage.class), masssendjobfinish(
MassEventMessage.class), templatesendjobfinish(
TemplatesendjobfinishMessage.class),enter_agent(EnterAgentEventMessage.class);
TemplatesendjobfinishMessage.class), enter_agent(
EnterAgentEventMessage.class), kf_create_session(
KfCreateEventMessage.class), kf_close_session(
KfCloseEventMessage.class), kf_switch_session(
KfSwitchEventMessage.class);
private Class<? extends EventMessage> eventClass;
@@ -3,13 +3,18 @@ package com.foxinmy.weixin4j.type;
/**
* 上传的媒体类型</br>
* <p>
* 公众平台上传限制:</br> 图片(image): 128K,支持JPG格式</br>
* 语音(voice):256K,播放长度不超过60s,支持AMR\MP3格式</br> 视频(video):1MB,支持MP4格式</br>
* 公众平台上传限制:</br>
* 图片(image): 128K,支持JPG格式</br>
* 语音(voice):256K,播放长度不超过60s,支持AMR\MP3格式</br>
* 视频(video):1MB,支持MP4格式</br>
* 缩略图(thumb):64KB,支持JPG格式</br>
* </p>
* <p>
* 企业号上传限制:</br>图片(image:1MB,支持JPG格式</br> 语音(voice):2MB,播放长度不超过60s,支持AMR格式</br>
* 视频(video):10MB,支持MP4格式</br> 普通文件(file):10MB</br>
* 企业号上传限制:</br>
* 图片(image:1MB,支持JPG格式</br>
* 语音(voice):2MB,播放长度不超过60s,支持AMR格式</br>
* 视频(video):10MB,支持MP4格式</br>
* 普通文件(file):10MB</br>
* </p>
* <p>
* <font color='red'>媒体文件在后台保存时间为3天,即3天后media_id失效</font>