Artikel sebelumnya berbicara tentang cara mengakses akun resmi WeChat. Artikel ini berbicara tentang fungsi paling dasar dari akun resmi WeChat: Penerimaan dan balasan ke pesan biasa. Berbicara tentang pesan biasa, apa pesan biasa yang ditentukan oleh akun resmi WeChat? Pesan biasa yang diterima yang disebutkan dalam dokumentasi pengembang WeChat mencakup kategori berikut :
1. Pesan Teks
2. Pesan gambar
3. Pesan Suara
4. Pesan video
5. Pesan video pendek
6. Pesan Lokasi Geografis
7. Pesan Tautan (Pesan Balas Pasif)
Pesan reguler yang secara pasif membalas meliputi:
1. Balas pesan teks
2. Balas pesan gambar
3. Balas pesan suara
4. Balas pesan video
5. Balas pesan musik
6. Balas pesan teks
Bahkan, dua tindakan menerima pesan dan pesan balasan pasif tidak dapat dipisahkan. Ini adalah skenario interaktif. Secara umum, akun resmi akan memberikan balasan yang sesuai dengan menganalisis pesan yang diterima. Tentu saja, beberapa bisnis khusus tidak dapat dikesampingkan.
Cara Menerima Pesan
Format XML dari pesan yang akan diterima dalam 7 pesan tidak akan tercantum di sini. Silakan pergi ke dokumen resmi untuk melihatnya, dengan definisi format spesifik dan deskripsi atribut. Formatnya sangat sederhana. Atribut umum dasar termasuk Tousername, Fromusername, CreateTime, MsgType, dan MSGID, dan masing -masing jenis memiliki atribut khusus sendiri.
Setelah melihat ini, saya benar -benar memahami bahwa proses menerima pesan sebenarnya adalah proses mendapatkan XML yang diminta oleh Post dan kemudian menganalisis XML. Entri untuk permintaan pos masih merupakan alamat untuk akses ke akun resmi WeChat yang disebutkan sebelumnya. Semua permintaan untuk seluruh akun resmi akan masuk ke entri ini, tetapi ini adalah permintaan mendapatkan saat mengakses, dan dalam kasus lain itu adalah permintaan pos. DOM4J digunakan untuk memproses XML. Kode pemrosesan XML adalah sebagai berikut. Anda dapat memanggil metode parsexml dalam metode post servlet:
peta public peta statis parsexml (permintaan httpservletrequest) melempar pengecualian {// simpan hasil parsed di hashmap peta = new HashMap (); // Dapatkan aliran input dari permintaan inputStream inputStream = request.getInputStream ();/** Baca konten tubuh dari permintaan Metode ini akan menyebabkan masalah pembacaan. Pengecualian Nested:* Akhir prematur dari file String Requestbody =* InputStream2String (inputStream); System.out.println (requestbody);*/// Baca input stream Saxreader Reader = SaxReader baru (); dokumen dokumen = reader.read (inputStream); // Dapatkan semua node elemen elemen root (element/elemen element. ElementList) map.put (e.getName (), e.getText ()); // rilis sumber daya inputStream.close (); inputStream = null; return peta;} string statis privat inputStream2stream (inputStream adalah = ioException {bytearRayOututputstream Baossstream (inputseM = byreTear (IoException {bytearRayOututputStream Baos = byreM = ByRREM = ByRREMEREAR; is.read ())! = -1) {baos.write (i);} return baos.toString ();} Bagaimana membalas pesan secara pasif
Di bawah ini saya mendemonstrasikan pesan yang membuat balasan berdasarkan logika tersebut, menerima pesan teks "teks" dan membalas pesan teks; menerima "gambar" dan membalas pesan gambar; menerima "suara" dan membalas pesan suara; menerima "video", membalas pesan video; menerima "musik", membalas pesan musik; menerima "gambar" dan membalas pesan gambar.
Balas pesan teks sebagai penjelasan:
<xml> <Tousername> <! [CDATA [Orang yang mengirim pesan, yaitu pelanggan]]> </Tousername> <Fromusername> <! [CDATA [Akun Resmi WeChat itu sendiri]]> </fromusername> <createTime> Waktu Pembuatan Pesan (Plastik (Plastik pembedahan) </createTime> <msgType> <! [Cdata [Teks]]> </sgtype> <den konten> <! [Cdata [konten pesan]]> </denent> </xml>
Dua atribut pertama dapat diperoleh dari pesan yang diterima, dan format pesan yang diterima adalah sebagai berikut:
<xml> <Tousername> <! [Cdata [Touser]]> </Tousername> <Fromusername> <! [Cdata [FromUser]]> </fromusername> <mreateTime> 1348831860 </createTime> <msgType> <! Teks]]> </content> <msgid> 1234567890123456 </msgid> </xml>
Nama Tousern dalam format pesan penerima adalah nama dari username yang membalas pesan tersebut, dan nama fromusern dalam format pesan penerima adalah nama Tousern yang membalas pesan tersebut.
CreateTime adalah cap waktu yang dikirim oleh pesan. MsgType adalah jenis pesan dan teksnya adalah teks. Konten adalah konten pesan.
Balas untuk setiap jenis pesan adalah untuk membangun konten format XML dari jenis ini. Formatnya serupa, tetapi format musik, video, suara, dan grafik sedikit lebih rumit daripada konten XML yang dibangun oleh pesan teks. Untuk detailnya, silakan merujuk ke dokumentasi resmi. Saya tidak akan membahas detail di sini, saya yakin Anda akan memahaminya secara sekilas.