これまでの記事では、WeChat エンタープライズ アカウントの多くの関連操作を紹介しましたが、エンタープライズ アカウントは公式アカウントと同様にメニューをカスタマイズできるため、API を介してメニューの作成、リストの取得、メニューの削除も行うことができるため、この記事では引き続きメニューについて説明します。エンタープライズアカウントの管理業務。
このメニューは、多くの場合、クイック エントリを提供し、OAuth2 検証インターフェイスとカスタマイズされたリダイレクト メニューを通じて、ユーザー情報のメイン エントリを取得するために使用することもでき、対応するユーザー ID を取得できます。さらにユーザーの関連データを取得し、顧客に表示します。
メニューのイベント処理は次のとおりです: クリックとジャンプの 2 つの操作が含まれます。将来的には、エンタープライズ アカウントにいくつかのコード スキャン操作、写真操作、およびその他の同様の機能が追加される可能性があります。公式アカウントは現在2つだけです。
公式メニュー定義インターフェースには、メニュー作成、リスト取得、メニュー削除の3つの操作が含まれており、公式アカウントの操作とほぼ同様です。
2. メニュー エンティティ クラスの定義とインターフェイス定義の処理
エンティティクラスのUML図を以下に示します。
メニュー管理の作成操作、正式な定義は以下の通りです。
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" } ] } ] }
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("//m.sbmmt.com/{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, "//m.sbmmt.com/"), new MenuJson("联系我们", ButtonType.click, "event_contact"), new MenuJson("应答系统", ButtonType.click, "set-1"), new MenuJson("发邮件", ButtonType.view, "//m.sbmmt.com/") }); 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()); } }
呼び出しコードのテスト出力を以下に示します。
WeChat ポータルとアプリケーションの C# 開発の詳細については、WeChat エンタープライズ アカウントのメニュー管理 関連記事については、PHP 中国語 Web サイトに注目してください。