Menu khusus platform publik pengembangan WeChat membutuhkan uang untuk dicapai. Jika Anda tidak ingin menghabiskan uang, Anda hanya dapat bermain dengan akun tes, tetapi ini tidak memengaruhi pengembangan. Pengembangan saya didasarkan pada pengembangan aplikasi platform publik WeChat Guru Liu Feng.
Selama kami menggunakan platform publik untuk menguji akun, kami dapat mengembangkan menu khusus. Itu lebih nyaman. Akun pengujian memiliki banyak antarmuka, yang sangat nyaman.
Saat mengembangkan menu khusus, Anda dapat merujuk ke menu khusus dalam dokumentasi pengembang platform publik WeChat untuk membuatnya.
1. Kustomisasi menu
1. Menu khusus termasuk hingga 3 menu tingkat pertama, dan setiap menu tingkat pertama berisi hingga 5 menu tingkat kedua.
2. Menu tingkat pertama memiliki hingga 4 karakter Cina, dan menu tingkat kedua memiliki hingga 7 karakter Cina. Bagian tambahan akan diganti dengan "...".
3. Setelah membuat menu khusus, strategi penyegaran menu adalah bahwa ketika pengguna memasuki halaman sesi akun resmi atau halaman profil akun resmi, jika ia menemukan bahwa permintaan terakhir untuk menarik menu adalah 5 menit yang lalu, ia akan menarik menu. Jika menu diperbarui, menu klien akan disegarkan. Selama tes, Anda dapat mencoba untuk berhenti mengikuti akun publik dan mengikutinya lagi,
Anda dapat melihat efeknya setelah pembuatan.
Antarmuka menu khusus dapat menerapkan beberapa jenis tombol, sebagai berikut:
1. Klik: Klik untuk Push Event
Setelah pengguna mengklik tombol Klik Jenis, server WeChat akan mendorong struktur acara Jenis Pesan ke pengembang melalui antarmuka pesan (lihat panduan antarmuka pesan), dan bawa nilai kunci yang diisi oleh pengembang dalam tombol. Pengembang dapat berinteraksi dengan pengguna melalui nilai kunci yang disesuaikan;
2. Lihat: Lompat URL
Setelah pengguna mengklik tombol Tampilan Tampilan, klien WeChat akan membuka URL halaman web yang diisi oleh pengembang di tombol, yang dapat dikombinasikan dengan otorisasi halaman web untuk mendapatkan antarmuka informasi dasar pengguna untuk mendapatkan informasi dasar pengguna.
3. Scancode_push: Pindai kode untuk mendorong acara
Setelah pengguna mengklik tombol, klien WeChat akan memanggil alat pemindaian, dan menampilkan hasil pemindaian setelah menyelesaikan operasi pemindaian (jika itu URL, itu akan memasukkan URL), dan hasil pemindaian akan diteruskan ke pengembang, dan pengembang dapat mengirim pesan.
4. Scancode_waitmsg: Pindai kode untuk mendorong acara dan kotak prompt "Pesan terima" muncul
Setelah pengguna mengklik tombol, klien WeChat akan memanggil alat pemindaian. Setelah menyelesaikan operasi kode pemindaian, berikan hasil kode pemindaian kepada pengembang. Pada saat yang sama, alat pemindaian ditutup, dan kotak prompt "pesan menerima" muncul, dan kemudian pesan yang dikirim oleh pengembang dapat diterima.
5. pic_sysphoto: sistem pop-up untuk mengambil foto dan memposting gambar
Setelah pengguna mengklik tombol, klien WeChat akan menyesuaikan kamera sistem. Setelah menyelesaikan operasi foto, ia akan mengirim foto yang diambil ke pengembang dan mendorong acara ke pengembang. Pada saat yang sama, itu akan menahan kamera sistem dan kemudian menerima pesan yang dikirim oleh pengembang.
6. pic_photo_or_album: Pop up dan ambil gambar atau posting gambar di album
Setelah pengguna mengklik tombol, klien WeChat akan memunculkan pemilih untuk pengguna untuk memilih "Ambil foto" atau "Pilih dari album ponsel". Setelah pengguna memilih, ia akan melalui dua proses lainnya.
7. pic_weixin: Pop-up WeChat Photo Album Sender
Setelah pengguna mengklik tombol, klien WeChat akan menyesuaikan album WeChat. Setelah menyelesaikan operasi pemilihan, ia akan mengirim foto yang dipilih ke server pengembang dan mendorong acara ke pengembang. Pada saat yang sama, album ini akan ditutup. Kemudian, pesan dapat diterima dari pengembang.
8. Lokasi_Select: Pemilih geolokasi pop-up
Setelah pengguna mengklik tombol, klien WeChat akan memanggil alat pemilihan geolokasi. Setelah menyelesaikan operasi pemilihan, ia akan mengirim lokasi geografis yang dipilih ke server pengembang, dan pada saat yang sama, itu akan menutup alat pemilihan lokasi, dan kemudian menerima pesan yang dikirim oleh pengembang.
9. media_id: Kirim pesan (kecuali pesan teks)
Setelah pengguna mengklik tombol Tipe Media_ID, server WeChat akan mengirim materi yang sesuai dengan ID materi permanen yang diisi oleh pengembang kepada pengguna. Jenis materi permanen dapat berupa pesan gambar, audio, video, dan grafik. Harap dicatat: ID materi permanen harus berupa ID hukum yang diperoleh setelah mengunggah antarmuka "Manajemen Bahan/Tambahkan Bahan Permanen".
10. View_limited: Lompat ke URL pesan teks
Setelah pengguna mengklik tombol tipe view_limited, klien WeChat akan membuka URL pesan grafis yang sesuai dengan ID materi permanen yang diisi oleh pengembang di tombol. Jenis bahan permanen hanya mendukung pesan grafis. Harap dicatat: ID materi permanen harus berupa ID hukum yang diperoleh setelah mengunggah antarmuka "Manajemen Bahan/Tambahkan Bahan Permanen"
2. Akses antarmuka menu khusus
1: Dapatkan akses_token
Penciptaan, permintaan, dan penghapusan menu khusus memerlukan panggilan antarmuka menu khusus untuk platform publik. Untuk memanggil antarmuka ini, Anda perlu mendapatkan Access_Token (kredensial akses antarmuka). Antarmuka ini semua didasarkan pada protokol HTTPS, jadi kita harus terlebih dahulu menyelesaikan masalah cara mengirim permintaan HTTPS dalam program Java.
Dapatkan kredensial Access Access Access_Token:
Mendapatkan Access_Token diakses melalui Get:
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=appid&secret=appsecret
Ada tiga parameter di tautan, yaitu Grant_type, Appid dan Secret. Menurut deskripsi parameter dalam gambar, Grant_Type melewati nilai tetap Client_Credential, dan Appid dan Secret ditugaskan kepada kami oleh WeChat setelah mengajukan menu khusus.
Setelah permintaan dikirimkan dengan sukses, server WeChat akan mengembalikan string JSON, termasuk Access_Token dan Expires_in. Di antara mereka, Access_Token adalah kredensial yang kita butuhkan pada akhirnya, dan kedaluwarsa_in adalah periode validitas kredensial, unit ini detik, dan 7200 detik adalah 2 jam. Ini berarti bahwa tidak setiap kali Anda mengakses antarmuka khusus, Anda perlu memperoleh kembali Access_Token, dan dapat digunakan selama Access_Token masih dalam periode validitas.
2: Pembuatan Menu
Untuk membuat menu, hubungi antarmuka menu
Deskripsi Permintaan Panggilan Antarmuka
Metode Permintaan HTTP: Posting (Silakan gunakan protokol https) https://api.weixin.qq.com/cgi-bin/menu/create?access_token=access_token
Bahkan, ini adalah untuk mengirimkan string menu JSON di pos ke alamat https://api.weixin.qq.com/cgi-bin/menu/create?access_token=access_token.
3. Merangkum Metode Permintaan Umum (Manajer Kepercayaan Kustom)
Untuk membuat menu, satu adalah untuk mendapatkan antarmuka Access_Token dan yang lainnya adalah menyesuaikan antarmuka menu, keduanya adalah permintaan HTTPS.
1: Buat Manajer Kepercayaan Sertifikat
Untuk permintaan HTTPS, kami memerlukan Certificate Trust Manager. Kelas manajer ini perlu didefinisikan dengan sendirinya, tetapi perlu menerapkan antarmuka X509TrustManager. Kodenya adalah sebagai berikut:
paket org.liufeng.weixin.util; impor java.security.cert.certificateException; impor java.security.cert.x509certificate; impor javax.net.ssl.x509trustManager; / ** * Certificate Trust Manager (untuk permintaan https) * * @Author liufeng * @Date 2013-08-08 */ kelas publik Myx509TrustManager mengimplementasikan x509trustManager {public void cekclienttrusted (x509certificate [] rantai, string auttype) lemparan certificateCcepted (x509certificate [] rantai, string auttype) throwseCcepteCcepted {(] rantai (string ottype) throwseCcepted (string ottype) lemparan certificateExcepteD (auttype) publiccepion {{] rantai {x509cceptate {{{string auttype) checkServerTrusted (x509certificate [] rantai, string authType) melempar sertifikatException {} public x509certificate [] getacceptedissuers () {return null; }} Fungsi manajer sertifikat adalah untuk mempercayai semua sertifikat yang ditentukan.
2: Buat permintaan https universal
Permintaan HTTPS universal harus
1) mendukung permintaan HTTPS;
2) dukungan Get and Posting;
3) mendukung pengajuan parameter dan juga tidak mendukung parameter;
paket org.liufeng.weixin.util; impor java.io.bufferedReader; impor java.io.inputstream; impor java.io.inputStreamReader; impor java.io.outputStream; impor java.net.connectException; impor java.net.url; impor javax.net.ssl.httpsurlconnection; impor javax.net.ssl.sslcontext; impor javax.net.ssl.sslsocketFactory; impor javax.net.ssl.trustManager; impor net.sf.json.jsonobject; impor org.slf4j.logger; impor org.slf4j.loggerFactory; / ** * Kelas Alat Antarmuka Umum Platform Umum * * @author liUyq * @Date 2013-08-09 */ kelas publik weixInutil {private static logger log = loggerFactory.getLogger (weixInutil.class); /** * Initiate https request and get the result* * @param requestUrl Request address* @param requestMethod request method (GET, POST) * @param outputStr Submitted data* @return JSONObject(get the attribute value of the json object through JSONObject.get(key)) */ public static JSONObject httpRequest(String requestUrl, String requestMethod, String outputStr) { JSONObject jsonObject = null; StringBuffer buffer = stringBuffer baru (); Coba {// Buat objek SSLContext dan inisialisasi TrustManager [] tm = {new Myx509TrustManager ()}; Sslcontext sslcontext = sslcontext.getInstance ("ssl", "sunjsse"); sslcontext.init (null, tm, java.security.securerandom ()) baru; // Dapatkan objek SSLSocketFactory dari objek SSLContext SSLSocketFactory SSF = sslcontext.getSocketFactory (); Url url = url baru (requestUrl); HttpsurlConnection httpurlconn = (httpsurlconnection) url.openconnection (); httpurlconn.setsslsocketfactory (SSF); httpurlconn.setDoOutput (true); httpurlconn.setdoInput (true); httpurlconn.setusecaches (false); // Set Metode Permintaan (GET/POST) HTTPURLCONN.SETREQUESTMETHOD (RequestMethod); if ("get" .equalsignorecase (requestMethod)) httpurlconn.connect (); // ketika ada data yang perlu dikirimkan jika (null! = OutputStr) {outputStream outputStream = httpurlconn.getoutputStream (); // Perhatikan format pengkodean untuk mencegah outputStream.write Cina yang kacau (outputstr.getbytes ("UTF-8")); outputStream.close (); } // Konversi aliran input yang dikembalikan ke string inputStream inputStream = httpurlconn.getInputStream (); InputStreamReader inputStreamReader = inputStreamReader baru (inputStream, "UTF-8"); BufferedReader bufferedReader = BufferedReader baru (InputStreamReader); String str = null; while ((str = bufferedreader.readline ())! = null) {buffer.append (str); } bufferedreader.close (); inputStreamReader.close (); // rilis sumber daya inputStream.close (); inputStream = null; httpurlconn.disconnect (); jsonObject = jsonObject.fromObject (buffer.toString ()); } catch (ConnectException CE) {LOG.Error ("Weixin Server Connection Timed Out."); } catch (exception e) {log.error ("kesalahan permintaan https: {}", e); } return jsonObject; }} 4. Encapsulate Kelas Entitas Menu
1: Klasifikasi tombol
Kami biasanya menganggap item menu khusus sebagai tombol, dan jenis tombol dibagi menjadi klik (klik acara) dan lihat (kunjungi halaman web).
Tombol tipe klik memiliki tiga atribut: ketik, nama dan kunci, sedangkan tombol tampilan tipe memiliki tiga atribut: jenis, nama dan url
2: Pertama, setelah memanggil antarmuka kredensial akses, server WeChat akan mengembalikan data dalam format JSON: {"access_token": "access_token", "Expires_in": 7200}. Kami merangkumnya sebagai objek AccessToken. Objek ini memiliki dua atribut: token dan kedaluwarsa, kodenya adalah sebagai berikut:
paket org.liufeng.weixin.pojo; / ** * kredensial antarmuka universal weChat * * @author liufeng * @date 2013-08-08 */ kelas publik AccessToken {// Token String Privat Kredensial yang Diperoleh; // Waktu validitas kredensial, unit: detik int swasta kedaluwarsa; public string gettoken () {return token; } public void Settoken (string token) {this.token = token; } public int getExpiresin () {return berakhir; } public void setExpiresin (int kedaluwarsa) {this.expiresin = kedaluwarsa; }} Berikutnya adalah enkapsulasi struktur menu. Karena kami menggunakan pemrograman yang berorientasi pada objek, data menu format JSON yang mengirimkan akhir harus langsung dikonversi dari objek, daripada mengeja banyak data JSON ke dalam kode program. Enkapsulasi struktur menu didasarkan pada struktur menu format JSON yang diberikan dalam dokumen API platform publik, seperti yang ditunjukkan di bawah ini:
Contoh Permintaan Klik dan Lihat
{"Tombol": [{"type": "klik", "name": "lagu hari ini", "kunci": "v1001_today_music"}, {"name": "menu", "sub_button", {{"type": "view", "name": "Search", "Url": "http:" {{{{{{{{{{{" "type": "view", "name": "video", "url": "http://v.qq.com/"}, {"type": "klik", "name": "seperti kami", "kunci": "v1001_good"}]}]} 3: Struktur Menu Enkapsulasi
Setiap objek tombol membutuhkan atribut nama umum, sehingga kelas dasar objek tombol perlu ditentukan, dan semua objek tombol perlu mewarisi kelas ini. Kode kelas dasar adalah sebagai berikut:
paket org.liufeng.weixin.pojo; / ** * Kelas dasar tombol * * @Author liufeng * @Date 2013-08-08 */ tombol kelas publik {nama string privat; public string getName () {return name; } public void setName (name string) {this.name = name; }} Berikutnya adalah enkapsulasi item submenu. Submenu didefinisikan di sini sebagai berikut: Item menu tanpa submenu dapat berupa item menu sekunder, atau menu utama yang tidak berisi menu sekunder. Jenis item submenu ini harus berisi tiga atribut: Ketik, Nama dan Kunci. Kode yang dienkapsulasi adalah sebagai berikut:
paket org.liufeng.weixin.pojo; / ** * Tombol Normal (Subbutton) * * @Author liufeng * @Date 2013-08-08 */ kelas publik CommonButton Extends Tombol {private string type; kunci string pribadi; string publik getType () {type return; } public void setType (string type) {this.type = type; } public String getKey () {return key; } public void setKey (tombol string) {this.key = key; }} Definisi Item Menu Induk: Menu tingkat pertama yang berisi item menu sekunder. Jenis item menu ini berisi dua properti: Name dan Sub_button, dan Sub_Button adalah array item submenu. Kode enkapsulasi item menu induk adalah sebagai berikut:
paket org.liufeng.weixin.pojo; / ** * Tombol kompleks (tombol induk) * * @Author liufeng * @Date 2013-08-08 */ kelas publik ComplexButton Extends Tombol {Private Button [] Sub_button; tombol publik [] getSub_button () {return sub_button; } public void setSub_button (tombol [] sub_button) {this.sub_button = sub_button; }} Merangkum seluruh menu. Objek menu berisi beberapa item menu (paling banyak, mungkin ada 3). Item menu ini dapat berupa item submenu (menu tingkat pertama tanpa menu sekunder) atau item menu induk (item menu yang berisi menu sekunder)
paket org.liufeng.weixin.pojo; / ** * menu * * @Author liufeng * @Date 2013-08-08 */ menu kelas publik {tombol pribadi [] Tombol; tombol publik [] getButton () {tombol return; } public void setButton (tombol []) {this.button = tombol; }}Dengan cara ini, kami menyelesaikan enkapsulasi kelas Entitas Menu.
Cara mendapatkan kredensial access_token
Lanjutkan untuk menambahkan kode berikut ke kelas weixInutil.java dari metode permintaan universal sebelumnya untuk mendapatkan kredensial akses antarmuka:
// Dapatkan alamat antarmuka Access_Token (get) dibatasi hingga 200 kali/hari public final string statis access_token_url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=appid&secret=appsecret"; / ** * Dapatkan Access_Token * * @param Appid Kredensial * @param AppSecret Key * @return */ Public Static AccessToken GetAccessToken (String AppID, String AppSecret) {AccessToken AccessToken = null; String requestUrl = access_token_url.replace ("appId", appId) .replace ("appsecret", appsecret); JsonObject jsonObject = httprequest (requestUrl, "get", null); // Jika permintaan berhasil if (null! = JsonObject) {coba {accessToken = new accessToken (); AccessToken.settoken (jsonObject.getString ("access_token")); AccessToken.SetExpiresin (jsonObject.getInt ("Expires_in")); } catch (jsonexception e) {accessToken = null; // Gagal mendapatkan token log.Error ("Gagal mendapatkan token errcode: {} errmsg: {}", jsonobject.getInt ("errcode"), jsonobject.getString ("errmsg")); }} return AccessToken; } Cara membuat menu khusus
Lanjutkan untuk menambahkan kode berikut ke kelas weixInutil.java dari metode permintaan universal sebelumnya untuk membuat menu khusus:
// Kreasi Menu (Posting) Terbatas hingga 100 kali/hari public static string menu_create_url = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=access_token"; / *** Buat menu** @param menu contoh* @param accessToken valid access_token* @return 0 berarti sukses, nilai lain menunjukkan kegagalan*/ public static int createMenu (menu menu, string accessToken) {int result = 0; // rakit URL dari string menu kreasi url = menu_create_url.replace ("access_token", accessToken); // Konversi objek menu ke string JSON string jsonMenu = jsonObject.fromObject (menu) .toString (); // Hubungi antarmuka untuk membuat menu jsonObject jsonObject = httpRequest (url, "post", jsonmenu); if (null! = jsonObject) {if (0! = jsonObject.getInt ("errcode")) {result = jsonObject.getInt ("errcode"); LOG.Error ("Buat Menu Gagal ERRCODE: {} errmsg: {}", jsonobject.getInt ("errcode"), jsonobject.getString ("errmsg")); }} hasil pengembalian; } Hubungi metode yang dienkapsulasi untuk membuat menu khusus
paket org.liufeng.weixin.main; impor org.liufeng.weixin.pojo.accesstoken; impor org.liufeng.weixin.pojo.button; impor org.liufeng.weixin.pojo.commonbutton; impor org.liufeng.weixin.pojo.complexbutton; impor org.liufeng.weixin.pojo.menu; impor org.liufeng.weixin.util.weixinutil; impor org.slf4j.logger; impor org.slf4j.loggerFactory; / ** * Kelas Manajer Menu * * @Author liufeng * @Date 2013-08-08 */ kelas publik Menumanager {private static logger log = loggerFactory.getLogger (menumanager.class); public static void main (string [] args) {// pengguna pihak ketiga unik kredensial string appId = "00000000000000000"; // Pengguna Pihak Ketiga Unik Key String String AppSecret = "0000000000000000000000000000000000000"; // hubungi antarmuka untuk mendapatkan access_token accessToken at = weixInutil.getAccessToken (appid, appsecret); if (null! = at) {// panggil antarmuka untuk membuat menu int result = weixInutil.createMenu (getMenu (), at.getToken ()); // Tentukan hasil pembuatan menu jika (0 == hasil) log.info ("Kreasi menu berhasil!"); else log.info ("Kreasi menu gagal, kode kesalahan:" + hasil); }} / ** * Merakit data menu * * @return * / menu statis privat getMenu () {CommonButton btn11 = new CommonButton (); btn11.setname ("ramalan cuaca"); btn11.setType ("klik"); btn11.setkey ("11"); CommonButton btn12 = commonbutton baru (); btn12.setname ("kueri bus"); btn12.setType ("klik"); btn12.setkey ("12"); CommonButton btn13 = CommonButton baru (); btn13.setname ("Pencarian Periferal"); btn13.setType ("klik"); btn13.setkey ("13"); CommonButton btn14 = CommonButton baru (); btn14.setname ("Today in History"); btn14.setType ("klik"); btn14.setKey ("14"); CommonButton btn21 = commonbutton baru (); btn21.setname ("Song on Demand"); btn21.setType ("klik"); btn21.setKey ("21"); CommonButton btn22 = commonbutton baru (); btn22.setname ("Game klasik"); btn22.settype ("klik"); btn22.setkey ("22"); CommonButton btn23 = commonbutton baru (); btn23.setname ("Radio indah"); btn23.setType ("klik"); btn23.setkey ("23"); CommonButton BTN24 = CommonButton baru (); btn24.setname ("pengenalan wajah"); btn24.setType ("klik"); btn24.setKey ("24"); CommonButton btn25 = commonbutton baru (); btn25.setname ("obrolan"); btn25.setType ("klik"); btn25.setkey ("25"); CommonButton btn31 = commonbutton baru (); btn31.setname ("Q Friends Circle"); btn31.setType ("klik"); btn31.setKey ("31"); CommonButton btn32 = CommonButton baru (); btn32.setname ("peringkat film"); btn32.setType ("klik"); btn32.setkey ("32"); CommonButton btn33 = commonbutton baru (); btn33.setname ("lelucon lucu"); btn33.setType ("klik"); btn33.setkey ("33"); Complexbutton mainbtn1 = complexbutton baru (); mainbtn1.setname ("Life Assistant"); mainbtn1.setsub_button (commonbutton baru [] {btn11, btn12, btn13, btn14}); Complexbutton mainbtn2 = complexbutton baru (); mainbtn2.setname ("Lucky Station"); mainbtn2.setsub_button (commonbutton baru [] {btn21, btn22, btn23, btn24, btn25}); Complexbutton mainbtn3 = complexbutton baru (); mainbtn3.setname ("lebih banyak pengalaman"); mainbtn3.setsub_button (commonbutton baru [] {btn31, btn32, btn33}); /*** Ini adalah struktur menu saat ini dari akun resmi XiaoQrobot. Setiap menu tingkat pertama memiliki item menu tingkat kedua * * Jika tidak ada menu tingkat kedua di bawah menu tingkat pertama, bagaimana seharusnya menu ditentukan? * Misalnya, item menu satu tingkat ketiga bukanlah "lebih banyak pengalaman", tetapi secara langsung "lelucon humor", maka menu harus didefinisikan seperti ini: * menu.setButton (tombol baru [] {mainbtn1, mainbtn2, btn33}); */ Menu menu = menu baru (); menu.setButton (tombol baru [] {mainbtn1, mainbtn2, mainbtn3}); Return Menu; }}Catatan: Saat menjalankan kode di atas, Anda perlu mengganti appid dan appsecret dengan akun resmi Anda sendiri.
Tanggapan ke Acara Klik Menu
paket org.liufeng.course.service; impor java.util.date; impor java.util.map; impor javax.servlet.http.httpservletRequest; impor org.liufeng.course.message.resp.textmessage; impor org.liufeng.course.util.messageutil; / ** * Kelas Layanan Inti * * @Author liufeng * @Date 2013-05-20 */ kelas publik Coreservice {/ ** * Permintaan proses dari weChat * * @param permintaan * @return */ Public String ProcessRequest (httpservletRequest permintaan) {string respMessage = null; coba {// Konten pesan teks yang dikembalikan secara default string respContent = "Permintaan Penanganan Pengecualian, tolong coba!"; // XML permintaan Parsing peta <string, string> requestMap = messageutil.parsexml (request); // Akun Pengirim (Open_ID) String FromUserName = RequestMap.get ("FromUserName"); // string akun publik Tousername = requestMap.get ("Tousername"); // jenis pesan string msgType = requestMap.get ("msgType"); // Balas ke pesan teks TextMessage textMessage = new TextMessage (); textmessage.settousername (fromusername); TextMessage.setFromusername (Tousername); TextMessage.setCreateTime (tanggal baru (). GetTime ()); TextMessage.setMSgType (messageutil.resp_message_type_text); TextMessage.setFuncflag (0); // pesan teks if (msgtype.equals (messageutil.req_message_type_text)) {respContent = "Anda mengirim pesan teks!"; } // Pesan gambar lain jika (msgtype.equals (messageutil.req_message_type_image)) {respContent = "Anda mengirim pesan gambar!"; } // Pesan Lokasi Geografis Lainnya if (msgtype.equals (messageutil.req_message_type_location)) {respContent = "Anda mengirim pesan lokasi geografis!"; } // tautan pesan lain jika (msgtype.equals (messageutil.req_message_type_link)) {respContent = "Anda mengirim pesan tautan!"; } // pesan audio lain jika (msgtype.equals (messageutil.req_message_type_voice)) {respContent = "Anda mengirim pesan audio!"; } // acara Push lain if (msgtype.equals (messageutil.req_message_type_event)) {// event type string eventType = requestMap.get ("event"); // Berlangganan if (eventType.equals (messageutil.event_type_subscribe)) {respContent = "Terima kasih atas perhatian Anda!"; } // Unsubscribe else if (eventType.equals(MessageUtil.EVENT_TYPE_UNSUBSCRIBE)) { // TODO After unsubscribe, the user cannot receive the message sent by the official account, so there is no need to reply to the message} // Custom menu click event else if (eventType.equals(MessageUtil.EVENT_TYPE_CLICK)) { // Event KEY value corresponds to the KEY value specified when creating THE Custom Menu String EventKey = RequestMap.get ("EventKey"); if (eventkey.equals ("11")) {respContent = "Item menu ramalan cuaca diklik!"; } lain jika (eventkey.equals ("12")) {respContent = "Item menu kueri bus diklik!"; } lain if (eventkey.equals ("13")) {respContent = "Item menu pencarian periferal diklik!"; } lain jika (eventkey.equals ("14")) {respContent = "Item menu dalam riwayat diklik!"; } lain if (eventkey.equals ("21")) {respContent = "Item menu Song On Demand diklik!"; } lain jika (eventkey.equals ("22")) {respContent = "Item menu game klasik diklik!"; } lain jika (eventkey.equals ("23")) {respContent = "Item menu radio kecantikan diklik!"; } lain jika (eventkey.equals ("24")) {respContent = "Item menu pengenalan wajah diklik!"; } else if (eventkey.equals ("25")) {respContent = "Item menu obrolan diklik!"; } lain if (eventkey.equals ("31")) {respContent = "Item menu Q Circle diklik!"; } lain jika (eventkey.equals ("32")) {respContent = "Item menu peringkat film diklik!"; } lain jika (eventkey.equals ("33")) {respContent = "Item menu lelucon humor diklik!"; }}} textMessage.setContent (respContent); respMessage = messageutil.textmessageToxMl (textMessage); } catch (Exception e) {E.PrintStackTrace (); } return respMessage; }}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.