O artigo anterior apresentou que ativaremos o modo de retorno de chamada. Depois de iniciar o modo de retorno de chamada, implementaremos a função de bate -papo. Geralmente, você pode enviar mensagens de texto, voz, fotos, vídeos etc. usando o WeChat Chat. Apenas algumas dessas funções são implementadas aqui para compartilhar com todos.
1. Estabeleça uma conexão com a conta do WeChat Enterprise
1. Os aplicativos corporativos chamam a interface fornecida pela conta corporativa, gerencia ou consulte os recursos gerenciados pelo fundo da conta corporativa ou envie mensagens para membros, etc., que é chamado de modo de chamada ativa.
2. A conta corporativa empurra as mensagens enviadas pelo usuário ou eventos acionados pelo usuário para o aplicativo Enterprise e é processado pelo aplicativo corporativo, que é chamado de modo de retorno de chamada.
3. Os usuários leem a página H5 enviada pelo aplicativo corporativo no WeChat. Esta página pode chamar a interface nativa fornecida pelo WeChat e usar os recursos de terminal abertos ao WeChat, que é chamado de modelo JSAPI.
Isso está escrito no documento de desenvolvimento da conta corporativa do WeChat, mas geralmente usamos os dois primeiros métodos .
De fato, chamadas e retornos de chamada ativos são relativos. Isso é da perspectiva do servidor WeChat. O servidor WeChat envia mensagens para o cliente WeChat por meio de uma conta corporativa, que é uma chamada ativa. O cliente do WeChat envia ativamente mensagens para ligar para o servidor WeChat é uma chamada passiva (retorno de chamada) em comparação com o servidor.
2. Ligue passivamente o formato de dados processado pelo WeChat Server
1. Tune principal: o servidor envia dados no formato JSON para o cliente WeChat, e os dados não precisam ser criptografados.
2. Retorno de chamada: As mensagens enviadas pelo cliente WeChat exigem criptografia AES e as mensagens aceitas pelo servidor estão no formato XML.
Esses dois são representados por uma foto da seguinte maneira:
3. Diagrama de princípios de bate -papo
Primeiro, o cliente WeChat envia uma mensagem ao servidor para processamento. Depois que os dados são transmitidos ao servidor de terceiros no formato XML, o servidor de terceiros converte os dados no formato JSON, o transmite para o servidor WeChat e o envia para o cliente.
4. Implementação de código
Com a base do princípio acima, a seguir é a seção de código
1.Servlet
public void DoPost (solicitação httpServletRequest, httpServletResponse Response) lança servletexception, ioexception {request.setcharacterencoding ("utf-8"); Response.Setcharacterencoding ("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; tente {wxcpt = new wxbizmsgcrypt (stoken, sencodingaeskey, escorpido); msg = wxcpt.decryptmsg (msg_signature, timestamp, nonce, pós -dados); } catch (aesexception e) {e.printStackTrace (); } System.out.println ("msg =" + msg); //Get interface access credentials String accessToken = CommonUtil.getToken("wxe510946434680dab", "eWTaho766INvp4e1MCsz1mHYuT2DAleb62REQ3vsFizhY4vtmwZpKweuxUVh33G0").getAccessToken(); tente {@suppresswarnings ("não utilizado") bandeira booleana = chatservice1.sendMessage (accessToken, msg); } catch (Exceção e) {e.printStackTrace (); }} 2.Service
classe pública ChatService1 {public static boolean sendMessage (string accessToken, string msg) lança a exceção {sinalizador boolean = false; Mapa <string, string> requestMap = messageUtil.parsexml (msg); // String de remetente deUserName = requestMap.get ("FromUserName"); // Tipo de mensagem String msgtype = requestmap.get ("msgtype"); if (msgtype.equals (messageutil.req_message_type_text)) {// se for uma mensagem de atendimento ao cliente de texto String String Content = requestMap.get ("Content"); // Mensagem Conteúdo da mensagem de texto // montar Texto Mensagem de atendimento ao cliente, parâmetro 1: ID do usuário; Parâmetro 2: Conteúdo enviado JSONMSG = Advancedutil.MakeTextCustommessage ("Lishehe | Zhisheng | Zhangwenyuan | lixinjiang", conteúdo); } else if (msgtype.equals (messageutil.req_message_type_image)) {// o enviado é uma imagem 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); bandeira de retorno; }} 3. Ferramentas
classe pública Advancedutil {private static logger log = loggerFactory.getLogger (Advancedutil.class); /*** Assembléia e envie a mensagem de texto* @return*/public static string maketextCustommessage (String OpenId, String Content) {Content = Content.replace ("/" "," /// "); String jsonmsg = "{/" touser/":/"%s/",/" msgtype/":/" text/",/" agentID/":/"%s/",/" text/": {/" content/":/" SOMATE STEMATION/STILT}}}} "; makeImageCustommessage (String OpenId, String mediaId) {String jsonmsg = "{/" touser/":/"%s/",/" msgtype/":/" image/",/" agentId/":/"%s/",/" imagem ": {/" media_id/"/":/"S/" MediaId); "{/" touser/":/"%s/",/" msgtype/":/" voz/",/" agentID/":/"%s/",/" voz/": {/" media_id/":/"%s/"}}"; 4. Resumo
Isso realiza a recepção e o empurrão das mensagens. O servidor de terceiros primeiro descriptografa e analisa os dados XML recebidos, obtém o tipo de mensagem e depois encapsula a mensagem a ser enviada e converte-a para o formato JSON e o transmite ao servidor WeChat e o envia para o cliente.
Este artigo foi compilado no "Resumo do Tutorial de Desenvolvimento do Android WeChat" e "Java WeChat Development Tutorial Resumo" recebe todos para aprender e ler.
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.