Maison  >  Article  >  Applet WeChat  >  Menu personnalisé pour le développement WeChat--weixin-java-tools

Menu personnalisé pour le développement WeChat--weixin-java-tools

高洛峰
高洛峰original
2017-03-08 16:46:101947parcourir

1. Avant-propos

Dans le processus de développement de WeChat, nous allons certainement concevoir l'utilisation des menus liés à WeChat. Cette fois, je vais vous présenter comment utiliser les outils weixin-java pour gérer les menus

2. Classification du menu personnalisé

1. Clic : événement push de clic Une fois que l'utilisateur a cliqué sur le bouton de type de clic, le serveur WeChat transmettra la structure de l'événement de type de message au développeur via l'interface de message (voir au Guide de l'interface de message), et apportez la valeur clé renseignée par le développeur dans le bouton. Le développeur peut interagir avec l'utilisateur via la valeur clé personnalisée

2. Afficher : URL de saut Après que l'utilisateur a cliqué ; le bouton de type d'affichage, WeChat Le client ouvrira l'URL de la page Web renseignée par le développeur dans le bouton, qui peut être combinée avec l'interface d'autorisation de la page Web pour obtenir les informations de base de l'utilisateur.

3. scancode_push : Une fois que l'utilisateur a cliqué sur le bouton dans l'événement push du code de numérisation, le client WeChat lancera l'outil d'analyse. Après avoir terminé l'opération de numérisation du code, le résultat de l'analyse sera affiché (s'il s'agit d'un outil d'analyse. URL, l'URL sera saisie), et le résultat de l'analyse du code est envoyé au développeur, et le développeur peut envoyer un message.

4. scancode_waitmsg : scannez le code pour envoyer l'événement et afficher la boîte de dialogue "Réception de message" Une fois que l'utilisateur a cliqué sur le bouton, le client WeChat activera l'outil d'analyse. le résultat de l'analyse sera Transmettez-le au développeur, rangez l'outil d'analyse en même temps, puis la boîte de dialogue "Réception de message" apparaîtra et vous pourrez recevoir un message du développeur.

5. pic_sysphoto : Une fois que le système apparaît pour prendre des photos et envoyer des photos. Une fois que l'utilisateur a cliqué sur le bouton, le client WeChat appellera la caméra système. Après avoir terminé l'opération photo, les photos prises seront. envoyé au développeur et l'événement sera transmis au développeur et rangera la caméra système en même temps, puis vous pourrez recevoir un message du développeur.

6. pic_photo_or_album : Une fois que l'utilisateur a cliqué sur le bouton pour prendre une photo ou envoyer une photo dans un album, le client WeChat affichera un sélecteur permettant à l'utilisateur de choisir "prendre une photo" ou "sélectionner parmi l'album du téléphone portable". Une fois que l'utilisateur a sélectionné, il passera par les deux autres processus.

7. pic_weixin : Une fois que l'expéditeur de l'album photo WeChat apparaît et que l'utilisateur clique sur le bouton, le client WeChat appellera l'album photo WeChat. Après avoir terminé l'opération de sélection, les photos sélectionnées seront envoyées au. le serveur du développeur et l'événement sera transmis au développeur, fermez l'album photo en même temps et vous pourrez recevoir un message du développeur plus tard.

8. location_select : Une fois que l'utilisateur a cliqué sur le bouton du sélecteur d'emplacement géographique contextuel, le client WeChat appellera l'outil de sélection d'emplacement géographique. Après avoir terminé l'opération de sélection, l'emplacement géographique sélectionné sera envoyé. sur le serveur du développeur et collectés en même temps. Démarrez l'outil de sélection d'emplacement, puis vous pourrez recevoir un message du développeur.

9. media_id : Envoyer des messages (sauf les messages texte). Une fois que l'utilisateur a cliqué sur le bouton de type media_id, le serveur WeChat enverra le matériel correspondant à l'ID de matériel permanent renseigné par le développeur à l'utilisateur. Le type de matériau permanent peut être une image, un audio, une vidéo ou des messages graphiques. Attention : l'identifiant matériel permanent doit être un identifiant légal obtenu après téléchargement via l'interface « Gestion du matériel/Ajouter du matériel permanent ».

10. view_limited : accédez à l'URL de l'image et du message texte Une fois que l'utilisateur a cliqué sur le bouton de type view_limited, le client WeChat ouvrira l'URL de l'image et du message texte correspondant à l'ID de matériau permanent renseigné par le développeur. dans le bouton. Le type de matériau permanent ne prend en charge que les messages graphiques. Attention : l'identifiant matériel permanent doit être un identifiant légal obtenu après téléchargement via l'interface « Gestion du matériel/Ajouter du matériel permanent ».

 

Veuillez noter que tous les événements de 3 à 8 ne prennent en charge que WeChat iPhone 5.4.1 ou supérieur, et que les utilisateurs de WeChat avec Android 5.4 ou supérieur ne répondront pas après avoir cliqué. , les développeurs ne peuvent pas recevoir les événements push normalement. 9 et 10 sont des types d'événements spécialement préparés pour les comptes d'abonnement de plateformes tierces qui n'ont pas été certifiées par WeChat (en particulier, ceux qui n'ont pas réussi la certification de qualification. Ils n'ont pas de poussée d'événement et leurs capacités sont relativement limitées). Autres types de comptes publics Pas besoin d'utiliser.

3. Adresse de l'interface appelante : http Méthode de requête : POST (veuillez utiliser le protocole https)

https://api.weixin.qq.com/ cgi-bin/menu/create?access_token=ACCESS_TOKEN

4. Exemple de demande

{
     "button":[
     {	
          "type":"click",
          "name":"今日歌曲",
          "key":"V1001_TODAY_MUSIC"
      },
      {
           "name":"菜单",
           "sub_button":[
           {	
               "type":"view",
               "name":"搜索",
               "url":"http://www.soso.com/"
            },
            {
               "type":"view",
               "name":"视频",
               "url":"http://v.qq.com/"
            },
            {
               "type":"click",
               "name":"赞一下我们",
               "key":"V1001_GOOD"
            }]
       }]
 }

5. 🎜>

参数 是否必须 说明
button 一级菜单数组,个数应为1~3个
sub_button 二级菜单数组,个数应为1~5个
type 菜单的响应动作类型
name 菜单标题,不超过16个字节,子菜单不超过40个字节
key click等点击类型必须 菜单KEY值,用于消息接口推送,不超过128字节
url view类型必须 网页链接,用户点击菜单可打开链接,不超过1024字节
media_id media_id类型和view_limited类型必须 调用新增永久素材接口返回的合法media_id

 

 

 

 

 

 

 

 

 

 

 

 

六、代码实现:

  

package com.weixin.menu;

import java.util.ArrayList;
import java.util.List;

import me.chanjar.weixin.common.bean.WxMenu;
import me.chanjar.weixin.common.bean.WxMenu.WxMenuButton;
import me.chanjar.weixin.common.exception.WxErrorException;
import me.chanjar.weixin.mp.api.WxMpInMemoryConfigStorage;
import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.api.WxMpServiceImpl;

public class WeixinMenuService {

	public static void main(String[] args) {
		
		//创建菜单
		//创建一级菜单
		WxMenuButton button1=new WxMenuButton();
		button1.setType("click"); //点击事件按钮
		button1.setName("点击菜单");
		button1.setKey("key1"); //根据标志获取点击菜单
		
		//创建一个复合菜单
		WxMenuButton button2=new WxMenuButton();
		button2.setName("多级菜单");
		
		WxMenuButton button2_1=new WxMenuButton();
		button2_1.setType("click"); //点击事件按钮
		button2_1.setName("子菜单一");
		button2_1.setKey("key2"); //根据标志获取点击菜单
		
		WxMenuButton button2_2=new WxMenuButton();
		button2_2.setType("click"); //点击事件按钮
		button2_2.setName("子菜单二");
		button2_2.setKey("key3"); //根据标志获取点击菜单
		
		
		WxMenuButton button3=new WxMenuButton();
		button3.setName("url菜单");
		button3.setType("view");
		button3.setUrl("http://www.baidu.com");  //必须添加http
		
		
		List<WxMenuButton> subButtons=new ArrayList<WxMenuButton>();
		subButtons.add(button2_1);
		subButtons.add(button2_2);
		button2.setSubButtons(subButtons);
		
		List<WxMenuButton> buttons=new ArrayList<WxMenuButton>();
		buttons.add(button1);
		buttons.add(button2);
		buttons.add(button3);
		
		WxMenu menu=new WxMenu();
		menu.setButtons(buttons);
		
		
		//发送请求 创建菜单
		WxMpService service=new WxMpServiceImpl();	
		WxMpInMemoryConfigStorage wxConfigProvider=new WxMpInMemoryConfigStorage();
		wxConfigProvider.setAppId("wx60a8f1c3a95b0b9c");
		wxConfigProvider.setSecret("5b0e8613b538da5ac4bbc610998f10ba");
		service.setWxMpConfigStorage(wxConfigProvider);
		try {
			service.menuCreate(menu);
		} catch (WxErrorException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}


	}

}

七、点击菜单事件推送

  7.1 消息格式

  

<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[FromUser]]></FromUserName>
<CreateTime>123456789</CreateTime>
<MsgType><![CDATA[event]]></MsgType>
<Event><![CDATA[CLICK]]></Event>
<EventKey><![CDATA[EVENTKEY]]></EventKey>
</xml>

  

  7.2 参数说明

  

参数 描述
ToUserName 开发者微信号
FromUserName 发送方帐号(一个OpenID)
CreateTime 消息创建时间 (整型)
MsgType 消息类型,event
Event 事件类型,CLICK
EventKey 事件KEY值,与自定义菜单接口中KEY值对应

  

 

 

 

 

 

 

  7.3 消息处理

  在接收消息的post中判断消息类型 并做相关处理。

//获取消息流
		WxMpXmlMessage message=WxMpXmlMessage.fromXml(request.getInputStream());
		
		if(message.getMsgType().equals("event")){ //事件
			
			//判断event
			if(message.getEvent().equals("click") && message.getEventKey().equals("key1")){
				//do something
				
			}
			
			
		}

  

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn