이전 기사는 콜백 모드를 활성화 할 것이라고 소개했습니다. 콜백 모드를 시작하면 채팅 기능을 구현합니다. 일반적으로 WeChat 채팅을 사용하여 문자 메시지, 음성, 사진, 비디오 등을 보낼 수 있습니다. 이러한 기능 중 일부만이 여기에서 구현되어 모든 사람과 공유합니다.
1. WeChat Enterprise 계정과 연결하십시오
1. 엔터프라이즈 애플리케이션은 엔터프라이즈 계정에서 제공 한 인터페이스를 호출하거나 엔터프라이즈 계정 배경에서 관리하는 리소스를 관리 또는 쿼리하거나 활성 통화 모드라고하는 멤버 등으로 메시지를 보냅니다.
2. 엔터프라이즈 계정은 사용자가 보낸 메시지 또는 사용자가 트리거 된 이벤트를 Enterprise Application으로 푸시하며 Enterprise Application에서 처리합니다. 이는 콜백 모드라고합니다.
3. 사용자는 WeChat의 Enterprise Application에서 보낸 H5 페이지를 읽습니다. 이 페이지는 WeChat에서 제공하는 기본 인터페이스를 호출하고 JSAPI 모델이라고하는 WeChat에 열린 터미널 기능을 사용할 수 있습니다.
이것은 WeChat Enterprise 계정의 개발 문서에 작성되었지만 일반적으로 처음 두 가지 방법을 사용합니다.
실제로 활성 호출과 콜백은 상대적입니다. 이것은 WeChat 서버의 관점에서 나온 것입니다. WeChat 서버는 활성 호출 인 회사 계정을 통해 WeChat 클라이언트에게 메시지를 보냅니다. WECHAT 클라이언트는 WeChat 서버를 호출하기 위해 메시지를 적극적으로 보냅니다. WeChat 서버는 서버에 비해 수동 통화 (콜백)입니다.
2. WeChat 서버에서 처리 한 데이터 형식을 수동적으로 호출하십시오.
1. 메인 튜닝 : 서버는 JSON 형식의 데이터를 WeChat 클라이언트로 보냅니다. 데이터를 암호화 할 필요가 없습니다.
2. Callback : WeChat 클라이언트가 보낸 메시지에는 AES 암호화가 필요하며 서버가 수락 한 메시지는 XML 형식입니다.
이 두 가지는 다음과 같이 그림으로 표시됩니다.
3. 채팅 원리 다이어그램
먼저 WeChat 클라이언트는 처리를 위해 서버에 메시지를 보냅니다. 데이터가 XML 형식의 타사 서버로 전송 된 후, 타사 서버는 데이터를 JSON 형식으로 변환하여 WECHAT 서버로 전송하여 클라이언트로 전송합니다.
4. 코드 구현
위의 원리 기준으로 다음은 코드 섹션입니다.
1. 서비스
public void dopost (httpservletRequest 요청, httpservletResponse 응답) servletexception, ioexception {request.setcharacterencoding ( "utf-8"); 응답 .SetchAracterEncoding ( "UTF-8"); 문자열 msg_signature = request.getParameter ( "msg_signature"); String timestamp = request.getParameter ( "timestamp"); 문자열 nonce = request.getParameter ( "nonce"); inputStream inputStream = request.getInputStream (); 문자열 postdata = ioutils.toString (inputStream, "utf-8"); System.out.println (postdata); 문자열 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); // 인터페이스 액세스 자격 증명 문자열 accesstoken = commonutil.gettoken ( "wxe510946434680dab", "ewtaho766invp4e1mcsz1mhyut2daleb62req3vsfizhy4vtmwzpkweuxuvh33g0"). try {@suppresswarnings ( "Unused") boolean flag = chatservice1.sendmessage (accesstoken, msg); } catch (예외 e) {e.printstacktrace (); }} 2. 서비스
공개 클래스 chatservice1 {public static boolean sendmessage (String AccessToken, String Msg)는 예외 {boolean flag = false; map <string, string> requestmap = messageutil.persexml (msg); // sender string fromUserName = requestMap.get ( "fromUserName"); // 메시지 유형 문자열 msgtype = requestMap.get ( "msgtype"); if (msgtype.equals (messagutil.req_message_type_text)) {// 텍스트 고객 서비스 메시지 문자열 문자열 내용 = requestmap.get ( "content"); // 문자 메시지의 메시지 내용 // 텍스트 고객 서비스 메시지, 매개 변수 1 : 사용자 ID; 매개 변수 2 : 내용을 보낸 내용은 JSONMSG = advancedUtil.maketextCustommessage ( "Lishehe | Zhisheng | Zhangwenyuan | lixinjiang", 내용); } else if (msgtype.equals (messageutil.req_message_type_image)) {// 전송 된 것은 그림 문자열 mediaid = requestmap.get ( "mediaid"); jsonmsg = advancedutil.makeimagecustomessage ( "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); 리턴 플래그; }} 3. 도구
공개 클래스 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/":/"text/": {/"content/":/"%s/"}}"; MAKEIMAGECUSTEMESAGE (String OpenID, String MediaId) {String JSONMSG = "{/"touser/":/"%s/",/"msgtype/":/"image/",/"agentid/":/"%s/",/"image/": {/"media_id/":/"}, 14 개 개방. mediaid); ostecthind) / ** * 어셈블리 및 보내기 음성 메시지 * @return * / public static string makevoicecustommessage (String openid, String mediaid) {String jsonmsg = "{/"touser/":/"%s/",/"msgtype/":/"Voice/",/"AgentId/":/"%s/": {/"media_id/":/"%s/"}}"; 4. 요약
이것은 메시지의 수신과 추진력을 깨닫습니다. 제 3 자 서버는 먼저 수신 된 XML 데이터를 해독하고 구문 분석하고 메시지 유형을 얻은 다음 전송 될 메시지를 캡슐화하여 JSON 형식으로 변환하여 WeChat 서버로 전송하여 클라이언트로 전송합니다.
이 기사는 "Android WeChat Development Tutorial Summary"로 편집되었으며 "Java WeChat Development Tutorial Summary"는 모두가 배우고 읽을 수 있도록 환영합니다.
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.