自从微信企业号升级到企业微信后,一些API接口和处理方式有所变化,企业微信支持更多、更丰富的接口,本篇在改造企业微信过程中对相关内容的更新进行记录,希望大家对企业微信的各个方面有所了解。本篇基于对企业微信菜单的管理进行介绍,包括介绍企业微信菜单涉及的几个重要参数,以及后台统一处理公众号和企业微信菜单的处理。
1、菜单管理接口
关于企业微信的前身企业号菜单的管理,在之前随笔有所介绍《》,基本上企业微信的接口没有太大变化,不过原先的企业号仅仅支持Click和View两种菜单类型,企业微信则拓展了更多的类型支持,详细的企业微信菜单接口,可以参考官方链接地址:,菜单支持类型如下介绍所示。
自定义菜单接口可实现多种类型按钮,如下:
功能名称 | 说明 |
---|---|
由于菜单模块处理,在企业微信、公众号、小程序等应用上,他们的JSON数据结构信息是完全一样的,不同的是提交各自的接口地址而已,因此菜单模块的实体类信息是公用的,定义的实体类信息如下所示。
</span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
<span style="color: #808080;">///</span><span style="color: #008000;"> 按钮类型(click,view,scancode_push,scancode_waitmsg,pic_sysphoto,pic_photo_or_album,pic_weixin,location_select)
</span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
[JsonProperty(NullValueHandling =<span style="color: #000000;"> NullValueHandling.Ignore)]
</span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">string</span> type { <span style="color: #0000ff;">get</span>; <span style="color: #0000ff;">set</span><span style="color: #000000;">; }
</span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
<span style="color: #808080;">///</span><span style="color: #008000;"> 菜单KEY值,用于消息接口推送,不超过128字节
</span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
[JsonProperty(NullValueHandling =<span style="color: #000000;"> NullValueHandling.Ignore)]
</span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">string</span> key { <span style="color: #0000ff;">get</span>; <span style="color: #0000ff;">set</span><span style="color: #000000;">; }
</span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
<span style="color: #808080;">///</span><span style="color: #008000;"> 网页链接,成员点击菜单可打开链接,不超过1024字节。为了提高安全性,建议使用https的url
</span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
[JsonProperty(NullValueHandling =<span style="color: #000000;"> NullValueHandling.Ignore)]
</span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">string</span> url { <span style="color: #0000ff;">get</span>; <span style="color: #0000ff;">set</span><span style="color: #000000;">; }
</span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
<span style="color: #808080;">///</span><span style="color: #008000;"> media_id类型和view_limited类型必须,调用新增永久素材接口返回的合法media_id
</span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
[JsonProperty(NullValueHandling =<span style="color: #000000;"> NullValueHandling.Ignore)]
</span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">string</span> media_id { <span style="color: #0000ff;">get</span>; <span style="color: #0000ff;">set</span><span style="color: #000000;">; }
</span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
<span style="color: #808080;">///</span><span style="color: #008000;"> 子按钮数组,按钮个数应为2~5个
</span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
[JsonProperty(NullValueHandling =<span style="color: #000000;"> NullValueHandling.Ignore)]
</span><span style="color: #0000ff;">public</span> List<MenuJson> sub_button { <span style="color: #0000ff;">get</span>; <span style="color: #0000ff;">set</span><span style="color: #000000;">; }
</span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
<span style="color: #808080;">///</span><span style="color: #008000;"> 默认构造函数
</span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
<span style="color: #0000ff;">public</span><span style="color: #000000;"> MenuJson() { }
</span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
<span style="color: #808080;">///</span><span style="color: #008000;"> 参数化构造函数,用于构造子菜单
</span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
<span style="color: #808080;">///</span> <span style="color: #808080;"><param name="name"></span><span style="color: #008000;">按钮名称</span><span style="color: #808080;"></param></span>
<span style="color: #808080;">///</span> <span style="color: #808080;"><param name="sub_button"></span><span style="color: #008000;">子菜单集合</span><span style="color: #808080;"></param></span>
<span style="color: #0000ff;">public</span> MenuJson(<span style="color: #0000ff;">string</span> name,IEnumerable<MenuJson><span style="color: #000000;"> sub_button)
{
</span><span style="color: #0000ff;">this</span>.name =<span style="color: #000000;"> name;
</span><span style="color: #0000ff;">this</span>.sub_button = <span style="color: #0000ff;">new</span> List<MenuJson><span style="color: #000000;">();
</span><span style="color: #0000ff;">this</span><span style="color: #000000;">.sub_button.AddRange(sub_button);
}
</span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
<span style="color: #808080;">///</span><span style="color: #008000;"> 参数化构造函数
</span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
<span style="color: #808080;">///</span> <span style="color: #808080;"><param name="name"></span><span style="color: #008000;">按钮名称</span><span style="color: #808080;"></param></span>
<span style="color: #808080;">///</span> <span style="color: #808080;"><param name="buttonType"></span><span style="color: #008000;">菜单按钮类型</span><span style="color: #808080;"></param></span>
<span style="color: #808080;">///</span> <span style="color: #808080;"><param name="value"></span><span style="color: #008000;">按钮的键值(Click),或者连接URL(View)</span><span style="color: #808080;"></param></span>
<span style="color: #0000ff;">public</span> MenuJson(<span style="color: #0000ff;">string</span> name,ButtonType buttonType,<span style="color: #0000ff;">string</span><span style="color: #000000;"> value)
{
</span><span style="color: #0000ff;">this</span>.name =<span style="color: #000000;"> name;
</span><span style="color: #0000ff;">this</span>.type =<span style="color: #000000;"> buttonType.ToString();
</span><span style="color: #0000ff;">if</span> (buttonType ==<span style="color: #000000;"> ButtonType.view)
{
</span><span style="color: #0000ff;">this</span>.url =<span style="color: #000000;"> value;
}
</span><span style="color: #0000ff;">else</span><span style="color: #000000;">
{
</span><span style="color: #0000ff;">this</span>.key =<span style="color: #000000;"> value;
}
}
}</span></pre>
例如企业微信创建菜单的接口如下所示。
</span><span style="color: #0000ff;">return</span><span style="color: #000000;"> Helper.GetExecuteResult(url,postData);
}</span></pre>
2、企业微信菜单处理
企业微信和公众号(或者小程序)菜单创建的接口参数有所不同,企业微信增加了一个AgentId的参数,因为企业微信可以创建多个应用,一个AgentId代表其中一个应用的标识。
要使用API来创建菜单,几个地方的设置参数是比较重要的,如下所示。
分别是应用的AgentId、应用的Secret(相当于AppSecret)、以及创建JS-SDK的可信域名为自己服务器的域名。AppID则在企业微信的入口查看企业ID就是。
而这些我们可以在自己的微信后台账号管理进行配置即可,如下是我们企业微信后台的配置参数管理。
由于企业微信、公众号微信的菜单信息结构一致,那么我们在平台维护菜单信息的时候,也可以做到统一处理了。
如下是创建菜单的事件后台代码。
</span><span style="color: #0000ff;">if</span> (info.AccountType == <span style="color: #800000;">"</span><span style="color: #800000;">企业微信</span><span style="color: #800000;">"</span><span style="color: #000000;">)
{
</span><span style="color: #008000;">//</span><span style="color: #008000;">用企业接口提交</span>
ICorpMenuApi menuApi = <span style="color: #0000ff;">new</span><span style="color: #000000;"> CorpMenuApi();
result </span>=<span style="color: #000000;"> menuApi.CreateMenu(token.AccessToken,menuJson,info.AgentId);
}
</span><span style="color: #0000ff;">else</span><span style="color: #000000;">
{
</span><span style="color: #008000;">//</span><span style="color: #008000;">用公众号接口提交</span>
IMenuApi menuApi = <span style="color: #0000ff;">new</span><span style="color: #000000;"> MenuApi();
result </span>=<span style="color: #000000;"> menuApi.CreateMenu(token.AccessToken,menuJson);
}
}
</span><span style="color: #0000ff;">return</span><span style="color: #000000;"> ToJsonContent(result);
}</span></pre>
提交成功后,我们就可以在企业微信的工作台上看到对应企业微信的菜单了。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。