Heim  >  Artikel  >  WeChat-Applet  >  C#-Entwicklung des WeChat-Portals und Anwendungsmenüverwaltung des WeChat-Unternehmenskontos

C#-Entwicklung des WeChat-Portals und Anwendungsmenüverwaltung des WeChat-Unternehmenskontos

高洛峰
高洛峰Original
2017-02-18 09:40:411526Durchsuche

In den vorherigen Artikeln wurden viele verwandte Vorgänge von WeChat-Unternehmenskonten vorgestellt. Unternehmenskonten und offizielle Konten können Menüs anpassen, sodass sie auch Menüs über APIs erstellen, Listen abrufen und löschen können. Daher wird in diesem Artikel dieses Thema weiter untersucht , stellen wir die Menüverwaltungsvorgänge des Unternehmenskontos vor. Das Menü

kann uns in vielen Fällen einen schnellen Einstieg ermöglichen und auch zum Abrufen des Haupteintrags für Benutzerinformationen verwendet werden. Über die OAuth2-Verifizierungsschnittstelle und das benutzerdefinierte Weiterleitungsmenü können wir den entsprechenden Benutzer abrufen ID und erhalten dann weiter die relevanten Daten des Benutzers, die dem Kunden angezeigt werden können.

1. Allgemeine Einführung des Menüs

Die Ereignisverarbeitung des Menüs ist wie folgt, einschließlich Klick- und Sprungvorgängen. In Zukunft werden dem Unternehmenskonto möglicherweise einige Scanfunktionen hinzugefügt Offizielles Konto. Derzeit gibt es nur zwei Funktionen wie Code-Operation und Foto-Operation.

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

Die offizielle Menüdefinitionsschnittstelle umfasst die folgenden drei Vorgänge: Menüerstellung, Listenerfassung und Menülöschung, die fast mit den offiziellen Kontovorgängen identisch sind.

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

2. Entitätsklassendefinition und Schnittstellendefinitionsverarbeitung des Menüs

Wir definieren das Menü, einschließlich der Definition einiger seiner Attribute. Es gibt Name, Typ, Schlüssel, URL und eine Untermenüreferenz, die auf sich selbst verweist, sodass das Menü zyklisch auf mehreren Ebenen aufgebaut werden kann. Obwohl das Menü des Unternehmenskontos genau genommen das gleiche ist wie das Menü des offiziellen Kontos , mit drei Ebenen auf einer Ebene. Es gibt maximal fünf Menüs der zweiten Ebene und kein Menü der dritten Ebene.

Das UML-Diagramm der Entitätsklasse sieht wie folgt aus.

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

Der Erstellungsvorgang der Menüverwaltung, die offizielle Definition lautet wie folgt.

  • Anleitung anfordern

Https-Anfragemethode: POST

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

Das Anforderungspaket lautet wie folgt:

{
   "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"
               }
           ]
      }
   ]
}
  • Parameterbeschreibung

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

Der Administrator muss über Verwaltungsberechtigungen für die Anwendung verfügen und die Anwendung muss in den Rückrufmodus versetzt werden.

Ergebnis zurückgeben

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

Gemäß der oben genannten offiziellen Definitionssemantik lautet die Definition der C#-Verwaltungsschnittstelle unserer Menüverwaltung wie folgt.


    /// <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);
    }


Wir nehmen die Implementierung der Erstellung eines Menüs als Beispiel, um die Funktionsweise des WeChat-Unternehmenskontos vorzustellen Menü und andere Vorgänge Eine ähnliche Verarbeitung gibt eine öffentliche Nachrichtenklasse zurück, um die Verarbeitung und das Lesen zu erleichtern. Der Code lautet wie folgt.


        /// <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. Der Aufruf- und Verarbeitungseffekt der Unternehmenskonto-Menüverwaltungsoberfläche

Der Aufrufcode und die Darstellungen sind wie folgt.


        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());
            }
        }


Die Testausgabe des aufrufenden Codes wird unten angezeigt.

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

Weitere C#-Entwicklung von WeChat-Portalen und -Anwendungen – Menüverwaltung von WeChat-Unternehmenskonten finden Sie auf der chinesischen PHP-Website für verwandte Artikel!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn