Предыдущая статья представила, что мы будем включать режим обратного вызова. После начала режима обратного вызова мы будем реализовать функцию чата. Обычно вы можете отправлять текстовые сообщения, голос, изображения, видео и т. Д., Используя чат WeChat. Только некоторые из этих функций реализованы здесь, чтобы поделиться со всеми.
1. Установить связь с учетной записью WeChat Enterprise
1. Предпринимательские приложения вызовывают интерфейс, предоставленный учетной записью предприятия, управляют или запрашивают ресурсы, управляемые фоном корпоративной учетной записи, или отправлять сообщения членам и т. Д., Который называется режим активного вызова.
2. Учетная запись Enterprise разжигает сообщения, отправляемые пользователем или событиями, запускаемыми пользователем в корпоративное приложение, и обрабатывается приложением Enterprise, которое называется режимом обратного вызова.
3. Пользователи читают страницу H5, отправленную приложением Enterprise в WeChat. Эта страница может вызвать собственный интерфейс, предоставленный WeChat, и использовать возможности терминала, открытые для WeChat, который называется моделью JSAPI.
Это написано в документе разработки учетной записи WeChat Enterprise, но мы обычно используем первые два метода .
На самом деле, активные вызовы и обратные вызовы являются относительными. Это с точки зрения сервера WeChat. Сервер WeChat отправляет сообщения клиенту WeChat через корпоративную учетную запись, которая является активным вызовом. Клиент WeChat активно отправляет сообщения для вызова на сервере WeChat - это пассивный вызов (обратный вызов) по сравнению с сервером.
2. Пассивно вызовите формат данных, обработанный на сервере WeChat
1. Основная мелодия: сервер отправляет данные в формате JSON в клиент WeChat, и данные не должны быть зашифрованы.
2. обратный вызов: сообщения, отправленные клиентом WeChat, требуют шифрования AES, а сообщения, принятые сервером, находятся в формате XML.
Эти два представлены изображением следующим образом:
3. Диаграмма принципа чата
Во -первых, клиент WeChat отправляет на сервер сообщение для обработки. После того, как данные передаются на сторонний сервер в формате XML, сторонний сервер преобразует данные в формат JSON, передает их на сервер WeChat и отправляет их клиенту.
4. Реализация кода
С вышеуказанным принципиальным основанием следующее приведено раздел кода
1. Сервилет
public void Dopost (httpservletRequest, httpservletresponse response) бросает 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; try {wxcpt = new wxbizmsgcrypt (Stoken, Sencodingaeskey, Scorpid); msg = wxcpt.decryptmsg (msg_signature, timestamp, nonce, postdata); } catch (aesexception e) {e.printstacktrace (); } System.out.println ("msg =" + msg); // Получить учетные данные доступа к интерфейсу string accesstoken = commonutil.gettoken ("wxe510946434680dab", "ewtaho766invp4e1mcsz1mhyut2daleb62req3vsfizhy4vtmwzpkWeuxuvH33g0"). try {@suppresswarnings ("неиспользованный") Boolean flag = Chatservice1.sendMessage (AccessToken, MSG); } catch (Exception e) {e.printstackTrace (); }} 2. Сервис
открытый класс chatservice1 {public static boolean sendmessage (string accesstoken, string msg) бросает исключение {boolean flag = false; Map <string, string> requestMap = messageUtil.parsexml (msg); // Sender String fromusername = requestMap.get ("fromUsername"); // тип сообщения string msgtype = requestmap.get ("msgtype"); if (msgtype.equals (messageutil.req_message_type_text)) {// Если это текстовое сообщение Служба службы поддержки. Параметр 2: Содержание отправлено jsonmsg = advancedutil.maketextcustommessage ("lishehe | Zhisheng | Zhangwenyuan | lixinjiang", Content); } else if (msgtype.equals (messageUtil.req_message_type_image)) {// отправка - это изображение 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 = AdvancedTil.MakeVoiceCustommessage ("lishhe | Zhisheng | Zhangwenyuan | lixinjiang", MediaId); } flag = advancedUtil.sendCustommessage (AccessToken, jsonmsg); вернуть флаг; }} 3. Инструменты
public Class AdvancedUtil {private Static Logger log = loggerFactory.getLogger (advancedUtil.class); /*** Собрание и отправьте текстовое сообщение* @return*/public Static String maketextcustommessage (string openid, string content) {content = content.replace ("/" "," /// "); string jsonmsg = "/" touser/":/"%s/",/" msgtype/":/" text/",/" Agentid/":/"%s/",/" Text/": {/" Content/":/"%s/"}}"; MakeImageCustommessage (String OpenID, String MediaId) {String jsonMsg = "{/" touser/":/"%s/",/" msgtype/":/" Image/",/" AggentId/":/"%s/",/" Image/": {/" Media_id/":/"%s/"}}"; MediaID); {/"touser/":/"%s/",/"msgtype/":/"voice/",/"AgentId/":/"%s/",/"Voice/": {/"Media_id/":/"%s/"}} "; 4. Резюме
Это осознает прием и толчок сообщений. Сторонний сервер сначала расшифровывает и анализирует полученные данные XML, получает из него тип сообщения, а затем инкапсулирует сообщение, которое будет отправлено, и преобразует его в формат JSON и передает его на сервер WeChat и отправляет его клиенту.
Эта статья была составлена в «Резюме для разработки Android WeChat», и «Резюме по разработке Java WeChat» приветствует всех учиться и читать.
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.