【企微开发最佳实践】工作台直观呈现用户需要的核心数据
关键词:应用自定义展示 关键数据 直观呈现
本文章默认开发者已经掌握了以下技能:
1.企业内部自建应用的相关配置
2.企微服务端API的鉴权和调用
3.构造网页授权链接,并有认证域名
一 需求场景
在企业内部自建应用的实践中,通常会有类似于这样结构的应用:
打开应用后,选择相应的菜单,查看数据列表,获取信息并进行处理。对于用户(员工)来说,要想看到最关心的数据,例如有多少条待办事项,至少需要点击3下才能看到。这对用户来说,操作次数有点多,用户可能对应用的使用兴趣会下降。
二 解决方案
企微已经提供了现成的解决方案,支持将应用设置为自定义展示的形式,并通过接口写入数据和链接:
关键信息一目了然,用户只需点击一下企微的工作台,就只能直观看到所需,然后再判断是否进行下一步,具体进行哪些事项的处理。
三 实现步骤
可以看到企微提供了4种不同的展示形式,以满足不同的需求场景。本文章以第一种关键数据型为例,看一下怎么实现。
1.配置应用
在企微后台进入应用设置 - 自定义展示设置 - 启用
此时只是打开了开关,具体的展示形式,还需要通过接口来指定。
另外可以顺手把可信域名、网页授权、主页地址都配置好,为下一步点击数字打开链接做准备。
2.设置模板
模板其实就是所有用户(可见范围内的员工)默认看到的展示形式。
你可以理解为通过该接口在上一步示例的几种形式中4选1进行指定(每个人其实可以不同, 通过下一个接口),
也可以理解为展示缺省数据,例如还没有查询待办数量前,数据显示为“--”
接口调用很简单,按照企微接口文档 组织好数据调用即可:
//伪代码,只是示意,不要较真
String token = QywxUtil.getToken(QywxUtil.agentid_workflow);
Map m = new HashMap();
m.put("agentid", QywxUtil.agentid_workflow);
m.put("type", "keydata");
Map data = new HashMap();
m.put("keydata", data);
List items = new ArrayList();
data.put("items", items);
String[] arr = {"待处理", "紧急(被催办)", "待阅(被抄送)", "被退回"};
for(int i=0; i<arr.length; i++){
Map item = new HashMap();
item.put("key", arr[i]);
item.put("data", "--");
//item.put("jump_url","");//默认模板可以不放链接,设置好应用的主页地址
items.add(item);
}
HttpUtil.builderPost("https://qyapi.weixin.qq.com/cgi-bin/agent/set_workbench_template?access_token="+token).setBody(JSON.toJSONString(m)).execute();
3.设置个人数据
通过该接口设置每个用户自己的关键数据,不同维度下的待办数量以及链接。
接口调用和上一步很像,按照企微接口文档,查询每个用户关心的数量,组织数据调用接口:
//伪代码,只是示意,不要较真
...
while(users.next()){
...
m.put("userid", users.getAccount());//比上一个接口多个人员账号参数
...
item.put("data", users.getRejectNum());//此时放入每个人对应的数量
item.put("jump_url",QywxUtil.url_doingReject);//对每个维度的数字,放入应用内部相应的授权链接,这样点击数字就能打开查询详情
...
HttpUtil.builderPost("https://qyapi.weixin.qq.com/cgi-bin/agent/set_workbench_data?access_token="+token).setBody(JSON.toJSONString(m)).execute();
}
大功告成,看看效果:
四 注意事项
1.可以根据需求场景选择不同的展示形式,两个接口根据选择去调用相应的。
例如如果展示公司新闻公告,可以选择type=list,并且只调模板接口,无需调用个人数据接口,因为大家看到的都一样。
2.个人数据接口,有调用频率限制:每个用户每个应用接口限制10次/分钟
如果数量变化频繁,你可能没法直接触发去更新数量,可能需要写个定时器去刷新,这样数量就不是实时的,有一定延迟。
你可以考虑使用队列算法,进队列用即时触发,出队列用定时器,这样在性能和延迟之间获得一个平衡。
3.数字上可以放单独的链接,也可以不放,如果没有 点击时打开的是应用的主页。
如果应用没有主页,点击时打开的是应用会话界面。
4.关键数据目前最多展示4个
5.还有个是否开启自定义展示的回调接口,如果需要可以通过回调,去停止对数据接口的调用。(一般不会吧)
五 优化建议
有一些小细节想反馈给企微开发团队:
1.PC端和移动端的样式怎么不一致呢,建议都用移动端的样式,这样统一且醒目
2.关键数据整体的下方是否可以加一行备注文字,用来做提示诸如“数量不是实时的,有几分钟延迟”等情况。
3.设置了自定义展示的应用,就无法在工作台分组了,为什么有这样的限制呢,建议能够加进分组,显示在分组的顶部,这样工作台的展示效果更好。
4.这个写文章界面,粘贴操作就会回到顶部,加链接也要回到顶部栏去点击,建议把工具栏改到侧边并悬浮。
抛砖引玉。
以上。
场景:张三打开APP看到工作台关系数据型,OA待办数是1,点击OA进去批完后返回应该显示0了,做不到返回刷新,只能定时去刷吗?只有还是有延迟性
你好,能加好友么,公司想做成这种方式,但是不会开发,想请帮忙,有费用,联系电话:18114415755