企业号开发—发送消息(文本、图片、语音)
企业号开发—发送消息(⽂本、图⽚、语⾳)
上篇⽂章介绍了开启回调模式,开始回调模式后我们就要实现聊天功能了。平时使⽤聊天可以发送⽂本消息、语⾳、图⽚、视频等,这⾥只实现了其中的⼀些功能和⼤家分享。
⼀、与企业号建⽴连接
1、企业应⽤调⽤企业号提供的接⼝,管理或查询企业号后台所管理的资源、或给成员发送消息等,以下称主动调⽤模式。
2、企业号把⽤户发送的消息或⽤户触发的事件推送给企业应⽤,由企业应⽤处理,以下称回调模式。
3、⽤户在中阅读企业应⽤下发的H5页⾯,该页⾯可以调⽤提供的原⽣接⼝,使⽤开放的终端能⼒,以下称JSAPI模式。
这是企业号的开发⽂档中写的,但是我们⼀般使⽤前两种⽅式。
其实主动调⽤和回调都是相对的,这是站在服务器的⾓度,服务器通过企业号给客户端发送消息是主动调⽤,客户端主动发送消息去调⽤服务器相对服务器来说就是被动调⽤(回调)。
⼆、主被动调⽤服务器处理的数据格式
1.主调:服务器向客户端发送json格式的数据,数据不需要加密
2.回调:客户端发送的消息需要AES加密,服务器接受的消息是xml格式
这两条⽤⼀张图表⽰如下:
三、聊天原理图
⾸先客户端发送消息到服务器处理,数据以xml格式传输到第三⽅服务器后,第三⽅服务器再将数据转为json格式,传送给服务器,发送给客户端。
三、代码实现
有了上⾯的原理基础,下⾯是代码部分
企业号申请
1.servlet
2.service
3.⼯具类
33. [java]    01. public  class  ChatService1 {  02.  03.    public  static  boolean  sendMessage(String accessToken,String msg) throws  Exception{  04.        boolean  flag =  false ;  05.        Map<String, String> requestMap = MessageUtil.parseXml(msg);    06.        // 发送者  07.        String fromUserName = ("FromUserName");  08.        // 消息类型  09.        String msgType = ("MsgType");  10.      11.        if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_TEXT)){//如果是⽂本客服消息  12.            String Content = ("Content");//⽂本消息的消息内容  13.            //组装⽂本客服消息,参数1:⽤户id ;参数2:发送的内容  14.            jsonMsg = AdvancedUtil.makeTextCustomMessage("lishehe|zhisheng|zhangwenyuan|lixinjiang", Content);  15.        }else  if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_IMAGE)){//发送的是图⽚  16.            String mediaId = ("MediaId");  17.            jsonMsg = AdvancedUtil.makeImageCustomMessage("lishehe|zhisheng|zhangwenyuan|lixinjiang", mediaId);  1
8.        }else  if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_VOICE)){  19.            String mediaId = ("MediaId");  20.            jsonMsg= AdvancedUtil.makeVoiceCustomMessage("lishehe|zhisheng|zhangwenyuan|lixinjiang", mediaId);  21.        }  22.        flag = AdvancedUtil.sendCustomMessage(accessToken, jsonMsg);  23.        return  flag;  24.    }  25. }
四、总结        这样就实现了消息的接收和推送,第三⽅服务器将接受的xml 数据先解密解析,从中获取消息类型,然后将要发送的消息封装后转为json 格式,并传送给服务器在发送到客户端。01. public  class  AdvancedUtil {  02.    private  static  Logger log = Logger(AdvancedUtil.class );  03.  04.    /** 05.      * 组装发送⽂本消息 06.      * @return  07.      */  08.    public  static  String makeTextCustomMessage(String openId, String content) {  09.        content = place("\"", "\\\"");  10.        String jsonMsg = "{\"touser\":\"%s\",\"msgtype\":\"text\",\"agentid\":\"%s\",\"text\":{\"content\":\"%s\"}}";  11.        return  String.format(jsonMsg, openId, 14,content);  12.    }  13.  14.    /** 15.      * 组装发送图⽚消息 16.      *  17.      * @return  18.      */  19.    public  static  String makeImageCustomMessage(String openId, String mediaId) {  20.        String jsonMsg = "{\"touser\":\"%s\",\"msgtype\":\"image\",\"agentid\":\"%s\",\"image\":{\"media_id\":\"%s\"}}";  21.        ret
urn  String.format(jsonMsg, openId,14, mediaId);  22.    }  23.  24.    /** 25.      * 组装发送语⾳消息 26.      *  27.      * @return  28.      */  29.    public  static  String makeVoiceCustomMessage(String openId, String mediaId) {  30.        String jsonMsg = "{\"touser\":\"%s\",\"msgtype\":\"voice\",\"agentid\":\"%s\",\"voice\":{\"media_id\":\"%s\"}}";  31.        return  String.format(jsonMsg, openId,14, mediaId);  32.    }

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。