Red de conocimiento informático - Conocimiento del nombre de dominio - Desarrolle una cuenta oficial de WeChat [3] para recibir mensajes.

Desarrolle una cuenta oficial de WeChat [3] para recibir mensajes.

Cuando un usuario normal de WeChat envía un mensaje a la cuenta oficial de WeChat, el servidor WeChat envía el paquete XML del mensaje POST a la URL completada por el desarrollador, por lo que si el servidor de verificación que configuramos antes es nuestra URL se convierte en el enlace entre el servidor y WeChat son la única interfaz entre ellos, pero esta vez usa POST en lugar de GET, envía XML y requiere que respondamos con XML.

Usé body-parser antes, pero intenté usar req.body directamente para obtener el paquete de datos correspondiente, porque body-parser solo analiza req.body en formato json, por lo que para formato xml, req. El cuerpo se convierte en un objeto vacío después del análisis.

A través de la consulta de Baidu, encontramos dos módulos de conversión xml, uno es xml2js y el otro es express-xml-bodyparser.

Ambos módulos pueden convertir xml en objetos js. Como estoy usando el marco expreso y solo necesito llamar a la transformación en la solicitud, elijo este último. Si desea utilizar transformaciones en otro lugar o su marco de front-end no tiene express, entonces la primera es una mejor opción.

Luego llame a la ruta:

& ltpre & gt& ltcode>

var XML parser = require(' express-XML-body parser ');

App.post('La URL de la cuenta oficial de WeChat que configuró', analizador XML ({trim: false, explicitarray: false}), función (req, res) {

console . log( req . body);

})

& lt/code & gt; & lt/pre & gt; configure el tipo de contenido en aplicación/xml en res de antemano.

& ltpre & gt& ltcode& gt

var XML parser = require(' express-XML-body parser ');

App.post(' The WeChat URL de cuenta oficial que configuró', analizador XML ({trim: false, explicitarray: false}), función (req, res) {

console .log(req . body

data = '<xml><ToUserName>chenjsh36</touser name></XML>';

res.writeHead(200, { 'Tipo de contenido ': ' aplicación/XML ' }); res.end(data);

})

& lt/code & gt; & lt/pre & gt;

Bueno, con una interfaz para Al recibir mensajes ordinarios, se pueden implementar muchas funciones interesantes, como robots de preguntas y respuestas, traducción de diccionarios, etc. También hay muchos módulos implementados en Internet a los que puede llamar directamente.

El autor llama a un robot de preguntas y respuestas gratuito y de código abierto, que proporciona la interfaz correspondiente. Después de que el autor analiza el paquete de datos enviado por el servidor WeChat, extrae el contenido y lo reenvía al robot de preguntas y respuestas. Después de recibir la respuesta, lo reenvía al servidor WeChat. Consulte el formato anterior para conocer el método de reenvío específico y luego simplemente implemente un robot inteligente (originalmente quería implementar uno yo mismo, pero descubrí que la inteligencia artificial era demasiado débil...)

Los obstáculos Encontrado: reenviando el contenido directamente al principio, descubrí que los robots de preguntas y respuestas son muy poco inteligentes. Esta misma mañana, vi un curso ppt impartido por un profesor de front-end, que solo hablaba sobre conjuntos de caracteres y codificación de caracteres.

Esto es una coincidencia. Me di cuenta de que el problema podría deberse a una codificación china insuficiente y utilicé encodeURI para resolver el error. ¡El robot se vuelve instantáneamente más inteligente! Me gustaría agradecer al tutor T T que me envió el ppt.

El principal problema al implementar la recepción y respuesta de mensajes es que nunca antes había estado expuesto a la recepción y envío de xml, lo que resultó en la situación en la que el texto que recibí inicialmente estaba vacío. Sólo recuerda este escollo.

Como desarrollador individual con una cuenta oficial de WeChat, las únicas funciones de diálogo abierto son recibir mensajes, recibir notificaciones de eventos, recibir resultados de reconocimiento de voz (todavía no sé qué es) y responder automáticamente. a estas interfaces.

Algunas interfaces interesantes, como obtener lista de usuarios, obtener ubicación geográfica del usuario, gestión de materiales, pago WeChat, interfaz para compartir, etc. , aún no se ha desarrollado para los autónomos.