Artikel sebelumnya memperkenalkan bahwa kami akan mengaktifkan mode panggilan balik. Setelah memulai mode panggilan balik, kami akan menerapkan fungsi obrolan. Biasanya, Anda dapat mengirim pesan teks, suara, gambar, video, dll. Dengan menggunakan obrolan WeChat. Hanya beberapa fungsi ini yang diimplementasikan di sini untuk dibagikan kepada semua orang.
1. Membangun Koneksi dengan Akun WeChat Enterprise
1. Aplikasi Perusahaan Panggilan antarmuka yang disediakan oleh akun perusahaan, mengelola atau meminta sumber daya yang dikelola oleh latar belakang akun perusahaan, atau mengirim pesan ke anggota, dll., Yang disebut mode panggilan aktif.
2. Akun perusahaan mendorong pesan yang dikirim oleh pengguna atau peristiwa yang dipicu oleh pengguna ke aplikasi perusahaan, dan diproses oleh aplikasi perusahaan, yang disebut sebagai mode panggilan balik.
3. Pengguna membaca halaman H5 yang dikirim oleh Aplikasi Perusahaan di WeChat. Halaman ini dapat menghubungi antarmuka asli yang disediakan oleh WeChat dan menggunakan kemampuan terminal terbuka untuk WeChat, yang disebut model JSAPI.
Ini ditulis dalam dokumen pengembangan akun WeChat Enterprise, tetapi kami umumnya menggunakan dua metode pertama .
Bahkan, panggilan aktif dan panggilan balik relatif. Ini dari perspektif server WeChat. Server WeChat mengirim pesan ke klien WeChat melalui akun perusahaan, yang merupakan panggilan aktif. Klien WeChat secara aktif mengirim pesan untuk menghubungi server WeChat adalah panggilan pasif (panggilan balik) dibandingkan dengan server.
2. Secara pasif memanggil format data yang diproses oleh WeChat Server
1. Tune Utama: Server mengirimkan data dalam format JSON ke klien WeChat, dan data tidak perlu dienkripsi.
2. Callback: Pesan yang dikirim oleh klien WeChat memerlukan enkripsi AES, dan pesan yang diterima oleh server berada dalam format XML.
Keduanya diwakili oleh gambar sebagai berikut:
3. Diagram Prinsip Obrolan
Pertama, klien WeChat mengirim pesan ke server untuk diproses. Setelah data ditransmisikan ke server pihak ketiga dalam format XML, server pihak ketiga mengubah data ke format JSON, mengirimkannya ke server WeChat, dan mengirimkannya ke klien.
4. Implementasi Kode
Dengan dasar prinsip di atas, berikut ini adalah bagian kode
1.Servlet
public void dopost (permintaan httpservletRequest, respons httpservletResponse) melempar 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; coba {wxcpt = wxbizmsgcrypt baru (stoken, sencodingaeskey, scorpid); msg = wxcpt.decryptmsg (msg_signature, timestamp, nonce, postdata); } catch (aesException e) {e.printstacktrace (); } System.out.println ("msg =" + msg); // Dapatkan kredensial akses antarmuka string AccessToken = commonutil.getToken ("wxe510946434680dab", "ewtaho766invp4e1mcsz1mhyut2daleb62req3vsfizhy4vtmwzpkkkkkkkkkweuxuxuvh333g0"). coba {@suppresswarnings ("tidak digunakan") bendera boolean = chatservice1.sendMessage (accessToken, msg); } catch (Exception e) {E.PrintStackTrace (); }} 2.Slervice
Public Class ChatService1 {public static boolean sendMessage (string accessToken, string msg) melempar pengecualian {boolean flag = false; Peta <string, string> requestMap = messageutil.parsexml (msg); // string pengirim fromusername = requestMap.get ("fromusername"); // jenis pesan string msgType = requestMap.get ("msgType"); if (msgtype.equals (messageutil.req_message_type_text)) {// Jika itu adalah teks pesan layanan pelanggan konten string = requestMap.get ("konten"); // konten pesan pesan teks // rakit pesan layanan pelanggan teks, parameter 1: id pengguna; Parameter 2: konten terkirim jsonmsg = Advancedutil.maketextCustommessage ("Lishehe | Zhisheng | Zhangwenyuan | lixinjiang", konten); } else if (msgtype.equals (messageutil.req_message_type_image)) {// yang dikirim adalah gambar 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); pengembalian bendera; }} 3. Alat
kelas publik Advancedutil {private static logger log = loggerFactory.getLogger (Advancedutil.class); /*** Perakitan dan Kirim Pesan Teks* @return*/Public Static String MaketextCustomMessage (String OpenID, String Content) {Content = Content.Replace ("/" "," /// "); String JSONMSG = "{/" Touser/":/"%s/",/" msgtype/":/" text/",/" agentid/":/"%s/",/" text/": {/" content/":/"%s/"}}; MakeImagecustomessage (String OpenID, String MediaD) {String jsonMsg = "{/" Touser/":/"%s/",/" msgtype/":/" Image/",/" AgentId/":/"%s/",/" Image/": {/" Media_id/":/"% MediaId);} / ** * Perakitan dan Kirim Pesan Suara * * @Return * / Public Static String MakevoiceCustommessage (String OpenID, String MediaId) {String JSONMSG = "{/" Touser/":/"%s/",/" msgtype/":/" voice/",/" agentid/":/"%s/",/" voice/": {/" media_id/":/"%s/"}"; 4. Ringkasan
Ini mewujudkan penerimaan dan dorongan pesan. Server pihak ketiga pertama mendekripsi dan mem-parsing data XML yang diterima, memperoleh jenis pesan darinya, dan kemudian merangkum pesan yang akan dikirim dan mengonversinya ke format JSON, dan mengirimkannya ke server WeChat dan mengirimkannya ke klien.
Artikel ini telah dikompilasi menjadi "Ringkasan Tutorial Pengembangan Android WeChat", dan "Java WeChat Development Tutorial Ringkasan" menyambut semua orang untuk dipelajari dan dibaca.
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.