บทความก่อนหน้านี้แนะนำว่าเราจะเปิดใช้งานโหมดการโทรกลับ หลังจากเริ่มโหมดการโทรกลับเราจะใช้ฟังก์ชั่นการแชท โดยปกติคุณสามารถส่งข้อความเสียงรูปภาพวิดีโอ ฯลฯ ได้โดยใช้ WeChat Chat มีเพียงบางส่วนของฟังก์ชั่นเหล่านี้เท่านั้นที่นำมาใช้ที่นี่เพื่อแบ่งปันกับทุกคน
1. สร้างการเชื่อมต่อกับบัญชี WeChat Enterprise
1. แอปพลิเคชันระดับองค์กรเรียกอินเทอร์เฟซที่จัดทำโดยบัญชีองค์กรจัดการหรือสอบถามทรัพยากรที่จัดการโดยพื้นหลังบัญชีองค์กรหรือส่งข้อความไปยังสมาชิก ฯลฯ ซึ่งเรียกว่าโหมดการโทรที่ใช้งานอยู่
2. บัญชี Enterprise ส่งข้อความที่ส่งโดยผู้ใช้หรือเหตุการณ์ที่ผู้ใช้ทริกเกอร์ไปยังแอปพลิเคชัน Enterprise และดำเนินการโดยแอปพลิเคชัน Enterprise ซึ่งเรียกว่าโหมดการโทรกลับ
3. ผู้ใช้อ่านหน้า H5 ที่ส่งโดยแอปพลิเคชัน Enterprise ใน WeChat หน้านี้สามารถเรียกอินเทอร์เฟซเนทีฟที่จัดทำโดย WeChat และใช้ความสามารถของเทอร์มินัลที่เปิดให้ WeChat ซึ่งเรียกว่าโมเดล JSAPI
สิ่งนี้เขียนไว้ในเอกสารการพัฒนาของบัญชี WeChat Enterprise แต่โดยทั่วไปเราใช้ สองวิธีแรก
ในความเป็นจริงการโทรที่ใช้งานอยู่และการโทรกลับมีความสัมพันธ์กัน นี่คือจากมุมมองของเซิร์ฟเวอร์ WeChat เซิร์ฟเวอร์ WeChat ส่งข้อความไปยังไคลเอนต์ WeChat ผ่านบัญชี บริษัท ซึ่งเป็นการโทรที่ใช้งานอยู่ ไคลเอนต์ WeChat ส่งข้อความอย่างแข็งขันเพื่อเรียกใช้ WeChat Server เป็นการโทรแบบพาสซีฟ (โทรกลับ) เมื่อเทียบกับเซิร์ฟเวอร์
2. โทรหารูปแบบข้อมูลที่ประมวลผลโดย WeChat Server
1. การปรับแต่งหลัก: เซิร์ฟเวอร์ส่งข้อมูลในรูปแบบ JSON ไปยังไคลเอนต์ WeChat และข้อมูลไม่จำเป็นต้องเข้ารหัส
2. การโทรกลับ: ข้อความที่ส่งโดยไคลเอนต์ WeChat ต้องการการเข้ารหัส AES และข้อความที่เซิร์ฟเวอร์ยอมรับอยู่ในรูปแบบ XML
ทั้งสองนี้แสดงด้วยรูปภาพดังนี้:
3. แผนภาพหลักการแชท
ก่อนอื่นไคลเอนต์ WeChat จะส่งข้อความไปยังเซิร์ฟเวอร์สำหรับการประมวลผล หลังจากข้อมูลถูกส่งไปยังเซิร์ฟเวอร์บุคคลที่สามในรูปแบบ XML เซิร์ฟเวอร์ของบุคคลที่สามจะแปลงข้อมูลเป็นรูปแบบ JSON ส่งไปยังเซิร์ฟเวอร์ WeChat และส่งไปยังไคลเอนต์
4. การใช้งานรหัส
ด้วยพื้นฐานหลักการข้างต้นต่อไปนี้เป็นส่วนรหัส
1. Servlet
โมฆะสาธารณะ dopost (คำขอ httpservletrequest, การตอบสนอง httpservletResponse) พ่น 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 (); สตริง postdata = ioutils.toString (inputStream, "UTF-8"); System.out.println (postdata); สตริง msg = ""; WxBizMSGCrypt WXCPT = NULL; ลอง {WXCPT = ใหม่ wxBizMsGCrypt (Stoken, SencodaSkey, Scorpid); msg = wxcpt.decryptmsg (msg_signature, timestamp, nonce, postdata); } catch (aesexception e) {e.printstacktrace (); } system.out.println ("msg =" + msg); // รับข้อมูลรับรองการเข้าถึงอินเตอร์เฟสสตริง accessToken = Commonutil.getToken ("WXE510946434680DAB", "EWTAHO766INVP4E1MCSZ1MHYUT2DALEB62REQ3VSFIZHY4VTMWZPKWEUXUVH0 ลอง {@suppresswarnings ("ไม่ได้ใช้") ธงบูลีน = chatservice1.sendmessage (AccessToken, msg); } catch (exception e) {e.printstacktrace (); - 2. บริการ
คลาสสาธารณะ ChatService1 {Public Static Boolean SendMessage (String AccessToken, String MSG) โยนข้อยกเว้น {Boolean Flag = FALSE; แผนที่ <สตริงสตริง> requestmap = messageUtil.parsexml (msg); // สตริงผู้ส่ง FromUserName = requestMap.get ("fromusername"); // ประเภทข้อความสตริง msgtype = requestmap.get ("msgtype"); if (msgtype.equals (messageUtil.req_message_type_text)) {// ถ้าเป็นข้อความการบริการลูกค้าข้อความสตริงเนื้อหา = requestmap.get ("เนื้อหา"); // เนื้อหาข้อความของข้อความ // ประกอบข้อความบริการลูกค้าข้อความ, พารามิเตอร์ 1: รหัสผู้ใช้; พารามิเตอร์ 2: เนื้อหาที่ส่ง JSONMSG = AdvancedUtil.MaketextCustommessage ("Lishehe | Zhisheng | Zhangwenyuan | Lixinjiang", เนื้อหา); } อื่นถ้า (msgtype.equals (messageUtil.req_message_type_image)) {// ที่ส่งเป็นสตริงรูปภาพ mediaid = requestmap.get ("mediaid"); jsonmsg = advancedutil.makeimagecustommessage ("Lishhe | Zhisheng | Zhangwenyuan | Lixinjiang", Medicleid); } อื่นถ้า (msgtype.equals (messageUtil.req_message_type_voice)) {String mediaId = requestmap.get ("mediaid"); jsonmsg = advancedutil.makevoicecustommessage ("Lishhe | Zhisheng | Zhangwenyuan | Lixinjiang", Medicleid); } Flag = AdvancedUtil.SendCustommessage (AccessToken, JSONMSG); ธงกลับ; - 3. เครื่องมือ
คลาสสาธารณะ AdvancedUtil {logger แบบคงที่ส่วนตัว = loggerFactory.getLogger (advancedutil.class); /*** แอสเซมบลีและส่งข้อความ* @return*/สตริงคงที่สาธารณะ makeTextCustommessage (สตริง openId เนื้อหาสตริง) {content = content.replace ("/" "," /// "); string jsonmsg = "{/" touser/":/"%s/",/" msgtype/":/" text/",/" agentid/":/"%s/",/" ข้อความ/":/" เนื้อหา/"/"%s/"}}" MakeimageCustommessage (String OpenId, String MediaId) {String JSONMSG = "{/" Touser/":/"%s/",/" msgtype/":/" image/",/" agentid/":/"%s/",/" image/": {/" media_id/" MediaId);} / ** * แอสเซมบลีและส่งข้อความเสียง * * @return * / สตริงคงที่สาธารณะ makevoicecustommessage (String OpenId, String MediaId) "{/" touser/"/"%s/",/" msgtype/":/" เสียง/",/" agentid/":/"%s/",/" เสียง/":/" media_id/"/"%s/"}}"; 4. สรุป
สิ่งนี้ตระหนักถึงการต้อนรับและการผลักดันข้อความ เซิร์ฟเวอร์ของบุคคลที่สามถอดรหัสและแยกวิเคราะห์ข้อมูล XML ที่ได้รับเป็นครั้งแรกรับประเภทข้อความจากนั้นจากนั้นสรุปข้อความที่จะส่งและแปลงเป็นรูปแบบ JSON และส่งไปยังเซิร์ฟเวอร์ WeChat และส่งไปยังไคลเอนต์
บทความนี้ได้รวบรวมไว้ใน "บทสรุปการสอนการพัฒนา Android WeChat" และ "สรุปการสอนการพัฒนา Java WeChat" ยินดีต้อนรับทุกคนให้เรียนรู้และอ่าน
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น