【企微开发最佳实践】工作台直观呈现用户需要的核心数据

2022/11/19
发布

关键词:应用自定义展示 关键数据 直观呈现

本文章默认开发者已经掌握了以下技能:

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.这个写文章界面,粘贴操作就会回到顶部,加链接也要回到顶部栏去点击,建议把工具栏改到侧边并悬浮。



抛砖引玉。

以上。


评论·2
2023/12/28

场景:张三打开APP看到工作台关系数据型,OA待办数是1,点击OA进去批完后返回应该显示0了,做不到返回刷新,只能定时去刷吗?只有还是有延迟性

赞同
评论 1
2023/12/28
参考注意事项第2点,有两种方法:1是定时去刷新,会有一定延迟(如果能有优化建议第2点会好一些)  2是在待办处理成功后OA主动调用企微接口更新其个人数量,这样看到的就是实时的,但是可能会有次数限制或性能问题。   怎样在性能和延迟之间取得一个平衡,确实是需要考虑的。
赞同
回复
你还未登录,请先登录
2022/11/29

你好,能加好友么,公司想做成这种方式,但是不会开发,想请帮忙,有费用,联系电话:18114415755

赞同
评论