L'article précédent a présenté que nous permettons le mode de rappel. Après avoir démarré le mode de rappel, nous implémenterons la fonction de chat. Habituellement, vous pouvez envoyer des messages texte, une voix, des photos, des vidéos, etc. en utilisant le chat WeChat. Seules certaines de ces fonctions sont implémentées ici pour partager avec tout le monde.
1. Établir une connexion avec le compte WeChat Enterprise
1. Les applications d'entreprise appellent l'interface fournie par le compte Enterprise, gérer ou interroger les ressources gérées par l'arrière-plan du compte Enterprise, ou envoyer des messages aux membres, etc., qui s'appelle le mode d'appel actif.
2. Le compte Enterprise pousse les messages envoyés par l'utilisateur ou les événements déclenchés par l'utilisateur à l'application Enterprise et est traité par l'application Enterprise, qui est appelée mode de rappel.
3. Les utilisateurs lisent la page H5 envoyée par l'application Enterprise dans WeChat. Cette page peut appeler l'interface native fournie par WeChat et utiliser les capacités du terminal ouvert à WeChat, qui est appelée modèle JSAPI.
Ceci est écrit dans le document de développement du compte WeChat Enterprise, mais nous utilisons généralement les deux premières méthodes .
En fait, les appels actifs et les rappels sont relatifs. Ceci est du point de vue du serveur WeChat. Le serveur WeChat envoie des messages au client WeChat via un compte d'entreprise, qui est un appel actif. Le client WeChat envoie activement des messages pour appeler le serveur WeChat est un appel passif (rappel) par rapport au serveur.
2. Appelez passivement le format de données traité par WeChat Server
1. Tune principale: le serveur envoie des données au format JSON au client WeChat, et les données n'ont pas besoin d'être cryptées.
2. Rappel: Les messages envoyés par le client WeChat nécessitent un chiffrement AES, et les messages acceptés par le serveur sont au format XML.
Ces deux sont représentés par une image comme suit:
3. Diagramme de principe de chat
Tout d'abord, le client WeChat envoie un message au serveur pour le traitement. Une fois les données transmises au serveur tiers au format XML, le serveur tiers convertit les données au format JSON, le transmet en serveur WeChat et l'envoie au client.
4. Implémentation du code
Avec la base principale ci-dessus, ce qui suit est la section de code
1.servlet
public void doPost (requête HttpServletRequest, réponse httpservletResponse) lève ServletException, ioException {request.SetcharAtterencoding ("utf-8"); Response.SetcharAtterencoding ("UTF-8"); String msg_signature = request.getParameter ("msg_signature"); String TimeStamp = request.getParameter ("Timestamp"); String nonce = request.getParameter ("nonce"); InputStream inputStream = request.getInputStream (); String postdata = ioutils.toString (InputStream, "UTF-8"); System.out.println (postdata); String msg = ""; WxBizmsgCrypt wxcpt = null; essayez {wxcpt = new wxbizmsgcrypt (stoken, sencodingaeskey, scorpid); msg = wxcpt.decryptmsg (msg_signature, horodatamp, nonce, postdata); } catch (aesexception e) {e.printStackTrace (); } System.out.println ("msg =" + msg); // Obtenir des informations d'accès à l'interface String AccessToken = Commonutil.getToken ("WXE510946434680DAB", "EWTAHO766Invp4e1mcsz1Mhyut2Daleb62req3VSfizhy4vtmwzpkweuvh33g0"). essayez {@SuppressWarnings ("inutilisé") booléen drapeau = ChatService1.SendMessage (AccessToken, msg); } catch (exception e) {e.printStackTrace (); }} 2.
classe publique ChatService1 {public static boolean sendMessage (String AccessToken, String msg) lève une exception {boolean flag = false; Map <string, string> requestmap = MessageUtil.parsexml (msg); // Sender String FROMUSERNAME = requestmap.get ("FromUserName"); // Type de message String msgType = requestmap.get ("msgType"); if (msgType.equals (messageutil.req_message_type_text)) {// s'il s'agit d'un texte de service client de messagerie, contenu de requestmap.get ("contenu"); // contenu du message du message texte // assembler le message client de texte, paramètre 1: id utilisateur; Paramètre 2: Contenu envoyé JSONMSG = AdvancedUtil.makeTextCustomMessage ("Lishehe | Zhisheng | Zhangwenyuan | lixinjiang", contenu); } else if (msgType.equals (messageutil.req_message_type_image)) {// le envoyé est une chaîne d'image 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); drapeau de retour; }} 3. Outils
classe publique AdvancedUtil {private static logger log = loggerfactory.getLogger (avancedUtil.class); / ** * Assemblage et envoyez un message texte * @return * / public static String makeTextCustomMessage (String OpenId, String Content) {content = content.replace ("/" "," /// "); String JSONMSG = "{/" Touser / ": /"% s / ", /" msgtype / ": /" text / ", /" agentId / ": /"% s / ", /" text / ": {/" contenu / ": /"% s / "}}"; MakeImageCustomMessage (String OpenId, String MediaId) {String JSONMSG = "{/" Touser / ": /"% S / ", /" MsgType / ": /" Image / ", /" AgentID / ": /"% S / ", /" Image / ": {/" Media_id / ":"% S / "}}";; MediaId);} / ** * Assemblage et envoyez des messages vocaux * * @return * / public static String makevoiceCustomMessage (String OpenId, String MediaD) {String JSONMSG = "{/" Tauser / ": /"% S / ", /" MsgType / ": /" Voice / ", /" AgentID / ": /"% S / ", /" Voice / ": {/" Media_id / ": /"% S / "}}"; 4. Résumé
Cela réalise la réception et la poussée des messages. Le serveur tiers décrypte et analyse d'abord les données XML reçues, obtient le type de message à partir de celui-ci, puis résume le message à envoyer et le convertit au format JSON, et le transmet au serveur WeChat et l'envoie au client.
Cet article a été compilé dans "Résumé du didacticiel Android WeChat Development" et "Java WeChat Development Tutorial Résumé" accueille tout le monde pour apprendre et lire.
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.