前提条件是设置企微联系人权限,可以参考这里

微信开发者工具

直接打开页面,并在 console 下执行选择联系人的接口:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
wx.invoke('selectExternalContact', {
  "filterType": 0, //0表示展示全部外部联系人列表,1表示仅展示未曾选择过的外部联系人。默认值为0;除了0与1,其他值非法。在企业微信2.4.22及以后版本支持该参数
}, function(res){
  console.log(res);
  if(res.err_msg == "selectExternalContact:ok"){
    userIds  = res.userIds ; //返回此次选择的外部联系人userId列表,数组类型
  }else {
    //错误处理
  }
});

会出现错误:

1
{errMsg: "selectExternalContact:fail, the permission value is offline verifying"}

企业微信桌面版

桌面版本开启调试模式可以参考这里:

新版本桌面端其实已经集成了开发者工具了,所以不需要安装了,只需要使用 ctrl + alt + shift + d 开启就好了

发送消息测试一下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
wx.invoke('selectExternalContact', {
  "filterType": 0, //0表示展示全部外部联系人列表,1表示仅展示未曾选择过的外部联系人。默认值为0;除了0与1,其他值非法。在企业微信2.4.22及以后版本支持该参数
}, function(res){
  console.log(res);
  if(res.err_msg == "selectExternalContact:ok"){
    userIds  = res.userIds ; //返回此次选择的外部联系人userId列表,数组类型
  }else {
    //错误处理
  }
});

错误的message是: fail_no_permission

但是权限已经按照前面的方法设置过了。

这里我们重新调用agentconfig配置一下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
wx.agentConfig({
  agentid: "1000004",
  appId: "ww319d502067667268",
  corpid: "ww319d502067667268",
  jsApiList: ["selectExternalContact", "openEnterpriseChat", "shareToExternalContact"], //必填
  nonceStr: "VZ7ydRc7FDrc6wit",
  signature: "22024421a7dfd0d2a877e1cedd08c6d97619fb94",
  timestamp: "1630548726952",
  success: function(res) {
    // 回调
    console.log(res);
    // wx.invoke(
    //   "selectExternalContact",
    //   {
    //     filterType: 0, //0表示展示全部外部联系人列表,1表示仅展示未曾选择过的外部联系人。默认值为0;除了0与1,其他值非法。在企业微信2.4.22及以后版本支持该参数
    //   },
    //   function(res) {
    //     if (res.err_msg == "selectExternalContact:ok") {
    //       console.log(res.userIds);
    //       that.startPast(res.userIds); //返回此次选择的外部联系人userId列表,数组类型
    //     } else {
    //       //错误处理
    //     }
    //   }
    // );

    wx.invoke(
      "shareToExternalContact", {
      text: {
        content:"hello world",    // 文本内容
      },
    },
      function(res) {
        console.log(res);
        if (res.err_msg == "shareToExternalContact:ok") {
        }
      }
    );
  },
  fail: function(res) {
    console.log(res);
    if (res.errMsg.indexOf("function not exist") > -1) {
      alert("版本过低请升级");
    }
  },
});

这个窗口终于弹出来了。

手机上测试:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
wx.agentConfig({
  agentid: "1000004",
  appId: "ww319d502067667268",
  corpid: "ww319d502067667268",
  jsApiList: ["selectExternalContact", "openEnterpriseChat", "shareToExternalContact"], //必填
  nonceStr: "daoiXrElKjprVYiC",
  signature: "59f0d81a81240c45ed37a80e86b5562f8ecafb40",
  timestamp: 1630550692634,
  success: function(res) {
    // 回调
    console.log(res);
    // wx.invoke(
    //   "selectExternalContact",
    //   {
    //     filterType: 0, //0表示展示全部外部联系人列表,1表示仅展示未曾选择过的外部联系人。默认值为0;除了0与1,其他值非法。在企业微信2.4.22及以后版本支持该参数
    //   },
    //   function(res) {
    //     if (res.err_msg == "selectExternalContact:ok") {
    //       console.log(res.userIds);
    //       that.startPast(res.userIds); //返回此次选择的外部联系人userId列表,数组类型
    //     } else {
    //       //错误处理
    //     }
    //   }
    // );

    wx.invoke(
      "shareToExternalContact", {
      text: {
        content:"hello world",    // 文本内容
      },
    },
      function(res) {
        console.log(res);
        if (res.err_msg == "shareToExternalContact:ok") {
        }
      }
    );
  },
  fail: function(res) {
    console.log(res);
    if (res.errMsg.indexOf("function not exist") > -1) {
      alert("版本过低请升级");
    }
  },
});

这有点坑……