El artículo anterior presentó que habilitaremos el modo de devolución de llamada. Después de comenzar el modo de devolución de llamada, implementaremos la función de chat. Por lo general, puede enviar mensajes de texto, voz, imágenes, videos, etc. utilizando WeChat Chat. Solo algunas de estas funciones se implementan aquí para compartir con todos.
1. Establecer una conexión con la cuenta de WeChat Enterprise
1. Las aplicaciones empresariales llaman a la interfaz proporcionada por la cuenta empresarial, administrar o consultar los recursos administrados por los antecedentes de la cuenta empresarial, o enviar mensajes a los miembros, etc., que se denomina modo de llamada activa.
2. La cuenta empresarial empuja los mensajes enviados por el usuario o eventos activados por el usuario a la aplicación empresarial, y es procesado por la aplicación empresarial, que se conoce como el modo de devolución de llamada.
3. Los usuarios leen la página H5 enviada por la aplicación Enterprise en WeChat. Esta página puede llamar a la interfaz nativa proporcionada por WeChat y usar las capacidades de terminal abiertas a WeChat, que se llama modelo JSAPI.
Esto se escribe en el documento de desarrollo de la cuenta de WeChat Enterprise, pero generalmente usamos los dos primeros métodos .
De hecho, las llamadas activas y las devoluciones de llamada son relativas. Esto es desde la perspectiva del servidor WeChat. El servidor WeChat envía mensajes al cliente WeChat a través de una cuenta corporativa, que es una llamada activa. El cliente WeChat envía activamente mensajes para llamar al servidor WeChat es una llamada pasiva (devolución de llamada) en comparación con el servidor.
2. Llamar pasivamente al formato de datos procesado por WeChat Server
1. CONGUNA PRINCIPAL: El servidor envía datos en formato JSON al cliente WeChat, y los datos no necesitan estar encriptados.
2. Vuelve de llamada: los mensajes enviados por el cliente WeChat requieren el cifrado AES, y los mensajes aceptados por el servidor están en formato XML.
Estos dos están representados por una imagen de la siguiente manera:
3. Diagrama de principios de chat
Primero, el cliente WeChat envía un mensaje al servidor para su procesamiento. Después de que los datos se transmiten al servidor de terceros en formato XML, el servidor de terceros convierte los datos en formato JSON, los transmite al servidor WeChat y los envía al cliente.
4. Implementación del código
Con la base del principio anterior, la siguiente es la sección del código
1.Servlet
Public void dopost (solicitud httpservletrequest, httpservletreponse respuesta) lanza ServletException, ioexception {request.setcharacterEncoding ("UTF-8"); respuesta.setcharacterEncoding ("UTF-8"); Cadena msg_signature = request.getParameter ("msg_signature"); String timestamp = request.getParameter ("Timestamp"); Cadena nonce = request.getParameter ("nonce"); InputStream InputStream = request.getInputStream (); Cadena postdata = ioutils.toString (inputStream, "UTF-8"); System.out.println (postdata); Cadena msg = ""; Wxbizmsgcrypt wxcpt = null; Pruebe {wxcpt = new WxBizmsgCrypt (Stoken, SenCodingaesKey, ScorpID); msg = wxcpt.decryptmsg (msg_signature, timestamp, nonce, postdata); } catch (aesexception e) {E.PrintStackTrace (); } System.out.println ("msg =" + msg); // Obtener credenciales de acceso a la interfaz String AccessToken = CommonUtil.GetToken ("WXE510946434680DAB", "EWTAHO7666INVP4E1MCSZ1MHYUT2DALEB62REQ3VSFIZY4VTMWZPKWEUXUVH33G0"). Pruebe {@suppleswarnings ("sin usar") Boolean Flag = chatservice1.sendMessage (accessToken, msg); } catch (Exception e) {E.PrintStackTrace (); }} 2.Servicio
Public Class ChatService1 {public static static boolean sendMessage (string accessToken, string msg) lanza la excepción {boolean flag = false; Map <string, string> requestMap = MessageUtil.Parsexml (msg); // cadena del remitente fromUsername = requestMap.get ("fromUsername"); // Tipo de mensaje String msgtype = requestmap.get ("msgtype"); if (msgtype.equals (messageUtil.req_message_type_text))) {// Si se trata de un mensaje de servicio de texto, mensaje de servicio de servicio content = requestmap.get ("content"); // Contenido de mensaje de mensaje de texto // ensamblar el mensaje de servicio del cliente, parámetro 1: ID de usuario; Parámetro 2: Contenido enviado JSONMSG = AdvancedUtil.MaketeTextCustomMessage ("Lishehe | Zhisheng | Zhangwenyuan | Lixinjiang", contenido); } else if (msgtype.equals (messageUtil.req_message_type_image)) {// El enviado es una imagen String MediaID = requestmap.get ("MediaId"); JSONMSG = Advancedutil.makeImageCustommessage ("Lishhe | Zhisheng | Zhangwenyuan | Lixinjiang", MediaID); } else if (msgtype.equals (messageUtil.req_message_type_voice)) {String MediaId = requestmap.get ("MediaId"); JSONMSG = Advancedutil.MakeVoicecustommessage ("Lishhe | Zhisheng | Zhangwenyuan | Lixinjiang", MediaID); } flag = AdvancedUtil.SendCustomMessage (AccessToken, JSONMSG); Bandera de regreso; }} 3. Herramientas
clase pública AdvancedUtil {private static logger log = loggerFactory.getLogger (avanzadoUtil.class); /*** ensamblaje y envía un mensaje de texto* @return*/public static string makEteTextCustomMessage (String OpenID, String Content) {content = content.replace ("/" "," /// "); String jsonmsg = "{/" touser/":/"%s/",/" msgtype/":/" text/",/" agente/":/"%s/",/" text/": {/" content/":"%s/"}}" MakeImageCustomMessage (String OpenId, String MediaId) {String jsonmsg = "{/" touser/":/"%s/",/" msgtype/":/" image/",/" agente/":/"%s/",/" imagen/": {/" media_id/":/"%s/"}}"; MediaID); "{/" touser/":/"%s/",/" msgtype/":/" voz/"," agente/":/"%s/",/" voz/": {/" media_id/":/"%s/"}}"; 4. Resumen
Esto se da cuenta de la recepción y el impulso de los mensajes. El servidor de terceros primero descifra y analiza los datos XML recibidos, obtiene el tipo de mensaje de él y luego encapsula el mensaje que se enviará y lo convierte en formato JSON, y lo transmite al servidor WeChat y lo envía al cliente.
Este artículo se ha compilado en "Resumen del tutorial de desarrollo de WeChat Android", y el "Tutorial de Desarrollo Java WeChat" dan la bienvenida a todos a aprender y leer.
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.