El artículo anterior habla sobre cómo acceder a la cuenta oficial de WeChat. Este artículo habla sobre las funciones más básicas de la cuenta oficial de WeChat: la recepción y la respuesta a los mensajes ordinarios. Hablando de mensajes ordinarios, ¿cuáles son los mensajes ordinarios definidos por las cuentas oficiales de WeChat? Los mensajes ordinarios recibidos mencionados en la documentación del desarrollador de WeChat incluyen las siguientes categorías :
1. Mensaje de texto
2. Mensaje de imagen
3. Mensaje de voz
4. Mensaje de video
5. Mensaje de video corto
6. Mensaje de ubicación geográfica
7. Mensaje de enlace (mensaje de respuesta pasiva)
Los mensajes regulares que responden pasivamente incluyen:
1. Responder a los mensajes de texto
2. Responder al mensaje de la imagen
3. Responder a los mensajes de voz
4. Responder a los mensajes de video
5. Responder a los mensajes de música
6. Responder a los mensajes de texto
De hecho, las dos acciones de recibir mensajes y mensajes de respuesta pasiva son inseparables. Este es un escenario interactivo. En términos generales, la cuenta oficial dará respuestas correspondientes analizando los mensajes recibidos. Por supuesto, algunas empresas especiales no se pueden descartar.
Cómo recibir mensajes
El formato XML de los mensajes que se recibirán en los 7 mensajes no se enumerará aquí. Vaya al documento oficial para verlos, con definiciones de formato específicas y descripciones de atributos. El formato es muy simple. Los atributos comunes básicos incluyen Tousername, FromUsername, CreateTeTime, Msgtype y Msgid, y cada tipo tiene sus propios atributos especiales.
Después de ver esto, realmente entiendo que el proceso de recibir mensajes es en realidad el proceso de obtener el XML solicitado por la publicación y luego analizar el XML. La entrada para la solicitud de publicación sigue siendo la dirección para el acceso a la cuenta oficial de WeChat mencionada anteriormente. Todas las solicitudes de toda la cuenta oficial irán a esta entrada, pero es una solicitud obtenida al acceder, y en otros casos es una solicitud posterior. DOM4J se utiliza para procesar XML. El código de procesamiento XML es el siguiente. Puede llamar al método parsexml en el método de publicación del servlet:
Mapa estático público PARSEXML (solicitud httpservletrequest) lanza la excepción {// almacena el resultado analizado en hashmap map = new Hashmap (); // Obtenga el flujo de entrada de la transmisión de la solicitud InputStream InputSteam = request.getInputStream ();/** Lea el contenido del cuerpo del cuerpo del método que este método causará problemas de lectura de transmisión Fin de archivo. Excepción anidada:* final prematuro de la cadena de archivo requestBody =* inputStream2String (inputStream); System.out.println (requestBody);*/// lea el saxreader de transmisión de entrada lector = new saxReader (); document Document = Reader.read (inputStream); // Obtener el elemento root xml Elemento root = document.getroOtElement (); // Obtenga todos los nodos infantiles de la lista de elementos de elementos <emem Element> root.elements (); // Traversing All Child. elementList) map.put (e.getName (), e.gettext ()); // libere recursos inputStream.close (); inputStream = null; return map;} private static static string inputStream2String (inputStream is) lanza ioexception {byteArArAyOutPutStream Baos = new ByTearRAyReM -1) {baos.write (i);} return baos.ToString ();} Cómo responder pasivamente a los mensajes
A continuación, demuestro el mensaje que construye una respuesta basada en dicha lógica, recibe el mensaje de texto "texto" y responde al mensaje de texto; recibir la "imagen" y responder al mensaje de la imagen; recibir la "voz" y responder al mensaje de voz; recibir el "video", responder al mensaje de video; recibir la "música", responder al mensaje de música; recibir la "imagen" y responder al mensaje de la imagen.
Responder a los mensajes de texto como explicación:
<xml> <tousername> <! [Cdata [la persona que envía el mensaje, es decir, el suscriptor]]> </cousername> <FhiveUserName> <! [CDATA [WeChat Oficial Cuenta]]> </FOLUSERNAME> <TIRETETime> TIEMPO DE LA CREACIÓN (Plastic (plástico (plástico (plástico (plástico Tiempo de plástico (plástico cirugía) </treattetime> <sgtype> <! [Cdata [text]]> </sgtype> <tentent> <! [CDATA [Mensaje Content]]> </Content> </xml>
Los dos primeros atributos se pueden obtener del mensaje recibido, y el formato de mensaje recibido es el siguiente:
<xml> <tousername> <! [cData [touser]]> </cousername> <fromusername> <! [cdata [fromUser]]> </ fromusername> <createTime> 1348831860 </treatetime> <sgtype> < Texto]]> </content> <ssgid> 1234567890123456 </sgid> </xml>
El nombre de Tousern en el formato de mensaje receptor es el nombre de UserN de los que responden al mensaje, y el nombre de su nombre en el formato de mensaje receptor es el nombre de touserne que responde al mensaje.
CreateTime es la marca de tiempo enviada por el mensaje. MsgType es el tipo de mensaje y el texto es texto. El contenido es el mensaje Contenido.
La respuesta a cada tipo de mensaje es construir el contenido de formato XML de este tipo. Los formatos son similares, pero los formatos de música, video, voz y gráficos son un poco más complicados que el contenido XML construido por los mensajes de texto. Para más detalles, consulte la documentación oficial. No entraré en detalles aquí, creo que lo entenderás de un vistazo.