找回密码
 立即注册

QQ登录

只需一步,快速开始

phoben 讲师达人认证 悬赏达人认证 活字格认证
论坛元老   /  发表于:2021-11-26 10:40  /   查看:5972  /  回复:8
本帖最后由 phoben 于 2021-11-27 09:18 编辑

需求场景:
     这几天客户提出了一个需求,就是能否从活字格系统中,很方便的直接跳转到企业微信的某个群的聊天窗口。
     因为之前做了一个业务逻辑,就是为每个“工作任务”自动生成一个项目微信群,而且自动把任务相关的用户拉进群,简单说就是系统会自动创建微信群,方便成员沟通项目。
     但是时间长了以后,每个人都有上百个微信群,通过群名称(项目编号作为群名)很难直观的找到想要进入的群。
     这时候就有了这个需求,直接从活字格的项目列表中,直接能进群,毕竟项目列表显示的信息更直观。

    下面是项目列表的截图:

image.png135079344.png

下面就开始实现思路:
首先,我开始查找官方文档,是否有相关API可以调用。发现如下两个API,貌似是可以:

image.png99821471.png

上面的API确实可以打开企业微信群,但是详细一看,发现官方说明中有一段话

image.png103779295.png
这个API只支持客户群,而我们创建的是内部群,所以这个AIP不合适。
有小伙伴想到,为什么我们不创建客户群?  同样因为微信限制,企业微信是不允许在服务端直接创建客户群的。

所以我们接着往下找,发现另一个API:

image.png226018675.png

API的第一句说明,就直接告诉我可以打开内部群,所以我们开始研究如何调用的问题。
通过短暂的研究,发现这个API只需要传入一个chatId,也就是群ID,和一个消息对象就可以;
而这里我们不需要发消息,只需要打开窗口,让用户自己发消息就行,所以只需要传chatId。

那就简单了,直接JS调这个接口,传入chatId不就行了?
  1. wx.invoke("openExistedChatWithMsg", {
  2.                 chatId: 群ID,
  3.         },function(res){
  4.                 if (res.err_msg == "openExistedChatWithMsg:ok")
  5.                 {
  6.                 }
  7.         }
  8. );
复制代码

然后并没有这么简单,企业微信在使用前端JS接口功能时,需要注入agentConfig或者config权限,也叫“鉴权”;鉴权的过程比较繁琐,但是一旦实现了前端接口的鉴权,意味着我们可以任意使用企业微信所有前端API,那也是很爽的事情;
所以就想办法开始动手鉴权:


鉴权的过程中需要获取jsapi_ticket加密,有兴趣的朋友可以看官方文档
https://work.weixin.qq.com/api/doc/90000/90136/90506#%E7%AD%BE%E5%90%8D%E7%AE%97%E6%B3%95


这时候我利用服务端命令,做了一个可以生成供agentConfig使用的对象。

image.png349889525.png

这个服务端命令返回的是一个json对象,其中JSON是手动拼的,这里再次号召一下官方大大,赶紧出JSON的操作插件。。。

image.png970512695.png

接着前端页面可以直接调用这个服务端命令,得到一个JSON对象

image.png828393554.png


我们将这个JSON对象存到一个叫"jsonstr"的单元格中

下面就是开始注入权限了,执行JS命令如下:
下面代码的意思,就是说将"jsonstr"单元格的内容拿到,并转为JSON,然后放进一个configAll的大对象中,这个对象的格式是按照官方标准写的。

  1. var config = JSON.parse(Forguncy.Page.getCell("jsonstr").getValue())
  2. var configAll = {
  3.     ...config,
  4.     success: function (res) {
  5.         Forguncy.Page.getCell("jsApiTrue").setValue(1)
  6.     },
  7.     fail: function (res) {
  8.         Forguncy.Page.getCell("jsonstr").setValue(res.toString())
  9.         Forguncy.Page.getCell("jsApiTrue").setValue(0)
  10.         if (res.errMsg.indexOf('function not exist') > -1) {
  11.             alert('版本过低请升级')
  12.         } else {
  13.             alert(res.errMsg)
  14.         }
  15.     }
  16. }
  17. try {
  18.     wx.agentConfig(configAll);
  19. } catch (error) {
  20.     Forguncy.Page.getCell("jsApiTrue").setValue(0)
  21. }
复制代码


使用 wx.agentConfig() 来注入JS权限,这注入环节就完成了。

上面部分就完成了鉴权和注入,我们接下来就要具体实现点击按钮,直接跳转微信群功能。
回到之前找到的API



我们只需要把 chatId 放进去,然后调用就可以

image.png79367674.png

这里我用了一个按钮,如果点击这个按钮,就取到当前任务的项目群ID,然后执行API。
测试效果:

跳转群录屏.gif

好了,实现了这个以后,移动端同样复用过去即可。

总结一下这里的几个技术关键点:
  • 创建群的时候,要保存chatId;
  • 鉴权需要想办法生成一个JSON格式的配置对象;
  • 页面调用的时候,传入chatId,即可;



欢迎大家留言交流,或者加微信交流

活字格动态名片.gif

评分

参与人数 4金币 +666 满意度 +15 收起 理由
13794930121 + 5
sz_xd + 5
Chelsey.Wang + 666 赞一个!
swejet + 5

查看全部评分

8 个回复

正序浏览
137294886
金牌服务用户   /  发表于:2024-1-4 15:44:44
10#
感谢大神的分享
回复 使用道具 举报
无双经典
高级会员   /  发表于:2024-1-4 14:34:18
9#
留个记号
回复 使用道具 举报
小崽子来也
初级会员   /  发表于:2023-9-14 17:22:23
8#
这么好的帖子必须顶起来!感谢大神的分享,希望改天用的上
回复 使用道具 举报
qq189980980
中级会员   /  发表于:2023-9-14 09:24:14
7#
下次估计又搞好个人微信群了
回复 使用道具 举报
开心就好
注册会员   /  发表于:2023-9-13 20:50:53
地板
真牛 学习了 感谢
回复 使用道具 举报
hubei333
高级会员   /  发表于:2021-11-27 21:02:29
板凳
厉害!收藏、保存、学习!
回复 使用道具 举报
赛龙周
银牌会员   /  发表于:2021-11-27 06:56:26
沙发
回复 使用道具 举报
alexyui悬赏达人认证 活字格认证
银牌会员   /  发表于:2021-11-26 15:53:33
楼主
牛逼
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部