Maison  >  Article  >  Applet WeChat  >  Développement C# du portail WeChat et gestion du menu d'application du compte d'entreprise WeChat

Développement C# du portail WeChat et gestion du menu d'application du compte d'entreprise WeChat

高洛峰
高洛峰original
2017-02-18 09:40:411577parcourir

Les articles précédents ont présenté de nombreuses opérations connexes des comptes d'entreprise WeChat. Les comptes d'entreprise et les comptes officiels peuvent personnaliser les menus, ils peuvent donc également créer des menus, obtenir des listes et supprimer des menus via des API. Par conséquent, cet article continue d'explorer ce sujet. , nous présenterons les opérations de gestion des menus du compte d'entreprise. Le menu

peut nous fournir une entrée rapide dans de nombreux cas, et peut également être utilisé pour obtenir l'entrée principale des informations sur l'utilisateur Grâce à l'interface de vérification OAuth2 et au menu de redirection personnalisé, nous pouvons obtenir l'utilisateur correspondant. ID, puis obtenez en outre les données pertinentes de l'utilisateur, qui peuvent être affichées au client.

1. Introduction générale du menu

Le traitement des événements du menu est le suivant, y compris les opérations de clic et de saut. À l'avenir, le compte d'entreprise pourra ajouter des fonctions de numérisation similaires à celles du menu. compte officiel. Actuellement, il n'y a que deux fonctions telles que l'opération de code et l'opération de photo.

C#开发微信门户及应用-微信企业号的菜单管理

L'interface officielle de définition de menu comprend les trois opérations suivantes, création de menu, acquisition de liste et suppression de menu, qui sont presque les mêmes que les opérations du compte officiel.

C#开发微信门户及应用-微信企业号的菜单管理

2. Définition de la classe d'entité et traitement de la définition de l'interface du menu

Nous définissons le menu, y compris la définition de certains de ses attributs, y compris Il y a un nom, un type, une clé, une URL et une référence de sous-menu pointant vers lui-même, de sorte que le menu peut être construit de manière cyclique sur plusieurs niveaux. Bien qu'à proprement parler, le menu du compte d'entreprise soit le même que le menu du compte officiel. , avec trois niveaux sur un seul niveau. Il existe un maximum de cinq menus de deuxième niveau et il n'y a pas de menu de troisième niveau.

Le diagramme UML de la classe d'entité est présenté ci-dessous.

C#开发微信门户及应用-微信企业号的菜单管理

L'opération de création de gestion de menu, la définition officielle est la suivante.

  • Instructions de demande

Méthode de demande HTTPS : POST

https://qyapi.weixin.qq.com/cgi -bin/menu/create?access_token=ACCESS_TOKEN&agentid=1

Le package de requête est le suivant :

{
   "button":[
       {	
           "type":"click",
           "name":"今日歌曲",
           "key":"V1001_TODAY_MUSIC"
       },
       {
           "name":"菜单",
           "sub_button":[
               {
                   "type":"view",
                   "name":"搜索",
                   "url":"http://www.soso.com/"
               },
               {
                   "type":"click",
                   "name":"赞一下我们",
                   "key":"V1001_GOOD"
               }
           ]
      }
   ]
}
  • Description du paramètre

参数 必须 说明
access_token 调用接口凭证
agentid 企业应用的id,整型。可在应用的设置页面查看
button 一级菜单数组,个数应为1~3个
sub_button 二级菜单数组,个数应为1~5个
type 菜单的响应动作类型,目前有click、view两种类型
name 菜单标题,不超过16个字节,子菜单不超过40个字节
key click类型必须 菜单KEY值,用于消息接口推送,不超过128字节
url view类型必须 网页链接,员工点击菜单可打开链接,不超过256字节
  • Description des autorisations

L'administrateur doit disposer des autorisations de gestion pour l'application et l'application doit être définie en mode de rappel.

Résultats de retour

{
   "errcode":0,
   "errmsg":"ok"
}

Selon la sémantique de définition officielle ci-dessus, la définition de l'interface de gestion C# de notre gestion de menus est la suivante.


    /// <summary>
    /// 企业号菜单管理接口定义    /// </summary>
    public interface ICorpMenuApi
    {        /// <summary>
        /// 获取菜单数据        /// </summary>
        /// <param name="accessToken">调用接口凭证</param>
        /// <returns></returns>
        MenuListJson GetMenu(string accessToken, string agentid);        /// <summary>
        /// 创建菜单        /// </summary>
        /// <param name="accessToken">调用接口凭证</param>
        /// <param name="menuJson">菜单对象</param>
        /// <returns></returns>
        CommonResult CreateMenu(string accessToken, MenuListJson menuJson, string agentid);        /// <summary>
        /// 删除菜单        /// </summary>
        /// <param name="accessToken">调用接口凭证</param>
        /// <returns></returns>
        CommonResult DeleteMenu(string accessToken, string agentid);
    }


Nous prenons comme exemple la mise en œuvre de la création d'un menu pour présenter le fonctionnement du compte d'entreprise WeChat menu et autres opérations Un traitement similaire renvoie une classe de message publique pour faciliter le traitement et la lecture. Le code est le suivant.


        /// <summary>
        /// 创建菜单        /// </summary>
        /// <param name="accessToken">调用接口凭证</param>
        /// <param name="menuJson">菜单对象</param>
        /// <returns></returns>
        public CommonResult CreateMenu(string accessToken, MenuListJson menuJson, string agentid)
        {            var url = string.Format("http://www.php.cn/{0}&agentid={1}", accessToken, agentid);            string postData = menuJson.ToJson();            return Helper.GetCorpExecuteResult(url, postData);
        }


3. L'effet d'appel et de traitement de l'interface de gestion du menu du compte d'entreprise

Le code d'appel et les rendus sont les suivants.


        private void btnMenuCreate_Click(object sender, EventArgs e)
        {
            MenuJson productInfo = new MenuJson("产品介绍", new MenuJson[] { 
                new MenuJson("软件产品介绍", ButtonType.click, "event-software")
                , new MenuJson("框架源码产品", ButtonType.click, "event-source")
                , new MenuJson("软件定制开发", ButtonType.click, "event-develop")
            });

            MenuJson frameworkInfo = new MenuJson("框架产品", new MenuJson[] { 
                new MenuJson("Win开发框架", ButtonType.click, "win"),                new MenuJson("WCF开发框架", ButtonType.click, "wcf"),                new MenuJson("混合式框架", ButtonType.click, "mix"), 
                new MenuJson("Web开发框架", ButtonType.click, "web")
                ,new MenuJson("代码生成工具", ButtonType.click, "database2sharp")
            });

            MenuJson relatedInfo = new MenuJson("相关链接", new MenuJson[] { 
                new MenuJson("公司介绍", ButtonType.click, "event_company"),                new MenuJson("官方网站", ButtonType.view, "http://www.php.cn/"),                new MenuJson("联系我们", ButtonType.click, "event_contact"),                new MenuJson("应答系统", ButtonType.click, "set-1"),    
                new MenuJson("发邮件", ButtonType.view, "http://www.php.cn/")
            });

            MenuListJson menuJson = new MenuListJson();
            menuJson.button.AddRange(new MenuJson[] { productInfo, frameworkInfo, relatedInfo });            //Console.WriteLine(menuJson.ToJson());

            if (MessageUtil.ShowYesNoAndWarning("您确认要创建菜单吗") == System.Windows.Forms.DialogResult.Yes)
            {
                ICorpMenuApi bll = new CorpMenuApi(); 
                CommonResult result = bll.CreateMenu(token, menuJson, agentid);
                Console.WriteLine("创建菜单:" + (result.Success ? "成功" : "失败:" + result.ErrorMessage));
            }
        }        private void btnMenuGet_Click(object sender, EventArgs e)
        {
            ICorpMenuApi bll = new CorpMenuApi();
            MenuListJson menu = bll.GetMenu(token, agentid);            if (menu != null)
            {
                Console.WriteLine(menu.ToJson());
            }
        }


La sortie de test du code appelant est présentée ci-dessous.

C#开发微信门户及应用-微信企业号的菜单管理

Pour plus de développement C# de portails et d'applications WeChat - gestion des menus des comptes d'entreprise WeChat, veuillez faire attention au site Web PHP chinois pour les articles connexes !

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