在企微环境中,在客户聊天框下面的聊天工具中进入小程序,怎么获得该客户的external_user_id?
我在官网文档上查的是 用wx.qy.getContext
前面也用了wx.qy.login
但是还是报错 fail no session or expired
代码如下 写在了我客户信息编辑的页面:
pages/customer/_profile/customer_profile.js
```javascript
wx.qy.login({
success: (res) => {
wx.qy.getContext({
success: function (res) {
var entry = res.entry; //返回进入小程序的入口类型
var shareTicket = res.shareTicket;
console.log(res);
},
fail: (res) => {
console.log(res);
},
complete: (res) => {
console.log("好了");
},
});
},
});
```
一般报这个错误是小程序登录态过期了,可以尝试重新走一遍登录流程。
可以调用wx.qy.login()接口返回成功后随即调用wx.qy.checkSession()接口,看下返回啥。
另外由于企业微信涉及到可能会有一个小程序运行在多个企业的情况,此处和微信端的流程有些差异,在企业微信侧,调用checkSession之前,需要先调用 jscode2session 接口。
引用chatGPT作答,在企业微信中获取客户的external_user_id需要使用企业微信提供的接口,您需要先确保已经开通了对应的权限,具体可以参考企业微信官方文档:https://work.weixin.qq.com/api/doc/90000/90135/91774#%E8%8E%B7%E5%8F%96%E5%AE%A2%E6%88%B7%E4%BF%A1%E6%81%AF。
您的代码中调用了wx.qy.login和wx.qy.getContext,其中wx.qy.login用于登录企业微信,wx.qy.getContext用于获取当前小程序的运行环境,但是获取external_user_id需要通过企业微信提供的接口进行获取,而不是通过wx.qy.getContext。
具体获取external_user_id的接口可以参考企业微信官方文档:https://work.weixin.qq.com/api/doc/90000/90135/91774#%E8%8E%B7%E5%8F%96%E5%AE%A2%E6%88%B7%E7%9A%84openid%E5%92%8C%E5%A4%96%E9%83%A8%E7%94%A8%E6%88%B7id。
您可以使用wx.qy.request或wx.qy.httpRequest方法发送请求,具体实现可以参考以下代码:
wx.qy.request({
url: 'https://qyapi.weixin.qq.com/cgi-bin/externalcontact/get?access_token=ACCESS_TOKEN&external_userid=EXTERNAL_USER_ID',
success: function (res) {
console.log(res.data);
},
fail: function (res) {
console.log(res);
}
})
其中,ACCESS_TOKEN需要替换成企业微信提供的访问令牌,EXTERNAL_USER_ID需要替换成您需要获取的客户的external_user_id。
注意,获取访问令牌和external_user_id需要先进行身份认证,具体流程可以参考企业微信官方文档:https://work.weixin.qq.com/api/doc/90000/90135/90665%E3%80%82
在企微环境中,可以通过以下代码获取当前客户的 external_user_id:
wx.qy.invoke({
// 获取当前聊天窗口的信息
name: 'getCurrentChat',
complete: (res) => {
// 获取当前聊天窗口的 external_userid
const externalUserId = res.external_userid;
console.log('当前聊天窗口的 external_userid:', externalUserId);
// 在此处调用相应的接口,传入 externalUserId,即可获取该客户的信息
}
});
需要注意的是,如果该客户没有主动发起过聊天,则无法获取该客户的 external_user_id。另外,也要确保当前用户已经登录企微环境。
在企业微信环境中,要获取客户的 external_user_id,你需要使用企业微信的开发者工具。以下是获取 external_user_id 的步骤:
在企业微信后台创建一个小程序,并获取相应的 AppID 和 AppSecret。
使用企业微信开发者工具,为小程序添加一个按钮,用于触发获取客户信息的操作。
在小程序的 JavaScript 文件中,编写一个函数,用于调用企业微信提供的 API,获取客户信息。你可以使用 wx.qy.getCurExternalContact 接口来获取当前外部联系人的 external_user_id。
示例代码如下:
// 获取客户信息
function getCustomerInfo() {
wx.qy.getCurExternalContact({
success: function(res) {
console.log('获取客户信息成功:', res)
const externalUserId = res.userId
// 处理获取到的 external_user_id
},
fail: function(err) {
console.error('获取客户信息失败:', err)
}
})
}
// 绑定按钮点击事件
wx.createSelectorQuery().select('#getCustomerInfoBtn').on('tap', getCustomerInfo)
<button id="getCustomerInfoBtn" bindtap="getCustomerInfo">获取客户信息</button>
注意:使用企业微信的 API 时,需要确保已正确配置企业微信后台的相关设置,并在小程序中引入企业微信的 JSSDK。具体配置和使用方法,请参考企业微信官方文档:https://work.weixin.qq.com/api/doc/90000/90136/91770