ホームページ >WeChat アプレット >WeChatの開発 >C# は WeChat ポータルを開発し、WeChat エンタープライズ アカウントのメニュー管理を適用します

C# は WeChat ポータルを開発し、WeChat エンタープライズ アカウントのメニュー管理を適用します

高洛峰
高洛峰オリジナル
2017-03-02 09:32:461863ブラウズ

これまでの記事では、WeChat エンタープライズ アカウントの多くの関連操作を紹介しましたが、エンタープライズ アカウントは公式アカウントと同様にメニューをカスタマイズできるため、API を介してメニューの作成、リストの取得、メニューの削除も行うことができるため、この記事では引き続きメニューについて説明します。エンタープライズアカウントの管理業務。

このメニューは、多くの場合、クイック エントリを提供し、OAuth2 検証インターフェイスとカスタマイズされたリダイレクト メニューを通じて、ユーザー情報のメイン エントリを取得するために使用することもでき、対応するユーザー ID を取得できます。さらにユーザーの関連データを取得し、顧客に表示します。

1. メニューの概要

メニューのイベント処理は次のとおりです: クリックとジャンプの 2 つの操作が含まれます。将来的には、エンタープライズ アカウントにいくつかのコード スキャン操作、写真操作、およびその他の同様の機能が追加される可能性があります。公式アカウントは現在2つだけです。

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

公式メニュー定義インターフェースには、メニュー作成、リスト取得、メニュー削除の3つの操作が含まれており、公式アカウントの操作とほぼ同様です。

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

2. メニュー エンティティ クラスの定義とインターフェイス定義の処理

名前、タイプ、キー、URL、それ自体を指すサブメニュー参照などの属性の定義を含めて、メニューを定義します。メニューは複数のレベルに周期的に構築できますが、厳密に言えば、エンタープライズ アカウントのメニューは公式アカウントのメニューと同じで、第 1 レベルは 3 つ、第 2 レベルは最大 5 つあります。 3番目のレベルのメニュー。

エンティティクラスのUML図を以下に示します。

C#开发微信门户及应用微信企业号的菜单管理 メニュー管理の作成操作、正式な定義は以下の通りです。

    リクエスト手順
  • HTTPSリクエストメソッド: POST

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

リクエストパッケージは次のとおりです:

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

    パラメータの説明
パラメータaccess_tokenagentid ボタンサブボタンtypenameキーurl
must の説明
呼び出し側インターフェースの認証情報です
の ID ですエンタープライズ アプリケーション、整数型。アプリケーションの設定ページで確認できます
はい 第一レベルのメニュー配列、番号は1~3である必要があります
いいえ 第二レベルのメニュー配列、数字は 1 ~ 5 です。
メニューの応答アクションのタイプです。現在、クリックとビューの 2 つのタイプがあります。
メニューのタイトルです。 16 バイト以上、サブメニューは不可 40 バイト以下
クリックタイプ必須 メニュー KEY 値、メッセージインターフェイスプッシュに使用、128 バイト以下
ビュータイプ必須 webリンク、従業員がメニューをクリック リンクは 256 バイト以内で開くことができます
    権限の説明
  • 管理者はアプリケーションの管理権限を持っている必要があり、アプリケーションはコールバック モードに設定されている必要があります。

Return result

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

上記の公式定義セマンティクスによると、メニュー管理の C# 管理インターフェイス定義は次のとおりです。

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

WeChat エンタープライズ アカウント メニューの操作を紹介するために、メニューの作成の実装を例に挙げます。他の操作も同様で、簡単に処理および読み取りできるようにパブリック メッセージ クラスを返します。以下に続きます。

        /// <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. Enterprise Account メニュー管理インターフェイスの呼び出しと処理の効果

呼び出しコードとレンダリングは次のとおりです。

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

呼び出しコードのテスト出力を以下に示します。

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


WeChat ポータルの C# 開発と WeChat エンタープライズ アカウントのメニュー管理のアプリケーションについては、PHP 中国語 Web サイトの関連記事に注目してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。