# App 拉起微信客服功能

## 功能介绍

考虑到部分场景下 App 需要拉起微信客服，以完成相关咨询服务。为此 OpenSDK 提供了移动应用（App）拉起微信客服功能。移动应用（App）接入此功能后，用户可以从 App 拉起指定的微信客服会话。该功能已向全体开发者开放，开发者在已认证的微信开放平台账号下，申请移动应用审核通过后并上架，即可获得移动应用拉起微信客服的功能权限。

## 使用说明

### 账号要求

移动应用开发者使用该功能，需同时满足以下条件：

1. 微信开放平台账号已认证
2. 移动应用审核通过并上架

注意：若移动应用未上架，则最多只能拉起微信客服 100 次/天，用于满足调试需求。

### 关联说明

移动应用仅可拉起具有绑定关系的微信客服，开发者需前往 [微信客服官网](https://work.weixin.qq.com/kf) 完成移动应用（AppID）和企业 ID 的绑定。

注意：一个移动应用（AppID）最多绑定 15 个企业 ID。

## 开发示例

### 多端应用开发指南

为降低开发者构建移动应用的开发成本，平台推出基于小程序技术实现的多端框架，基于该多端框架可低成本开发 Android 和 iOS 应用，详情可查看 [多端框架概述](/miniprogram/dev/platform-capabilities/miniapp/intro/intro.md)。如果你的 App 是通过官方多端框架开发的，可分别调用如下 JSAPI 即可在 App 中实现拉起微信客服功能。

- [wx.miniapp.openCustomerServiceChat](/miniprogram/dev/platform-capabilities/miniapp/api/miniapp/openCustomerServiceChat.md)

### 非多端应用开发指南

如果你的 App 不是通过多端框架开发的，可按照下方的指南在 App 中集成微信 SDK 后，调用接口实现拉起微信客服功能。

#### Android 开发示例

- OpenSDK 版本：大于等于 6.7.9

调用接口：WXOpenCustomerServiceChat 移动应用跳转到微信客服会话示例：

```java
String appId = "wxd930ea5d5a258f4f"; // 填移动应用（App）的 AppId
IWXAPI api = WXAPIFactory.createWXAPI(context, appId);

// 判断当前版本是否支持拉起客服会话
if (api.getWXAppSupportAPI() >= Build.SUPPORT_OPEN_CUSTOMER_SERVICE_CHAT) {
    String url = kfUrl.getText().toString();
    WXOpenCustomerServiceChat.Req req = new WXOpenCustomerServiceChat.Req();
    req.corpId = "xxxx";                             // 企业 ID
    req.url = "https://work.weixin.qq.com/kfid/kfcxxxxx";  // 客服 URL
    api.sendReq(req);
}
```

#### iOS 开发示例

- OpenSDK 版本：大于等于 1.9.2

移动应用跳转到微信客服会话示例：

```objective-c
WXOpenCustomerServiceReq *req = [[WXOpenCustomerServiceReq alloc] init];
req.corpid = corpId;    // 企业 ID
req.url = url;          // 客服 URL
return [WXApi sendReq:req completion:nil];
```

回调说明

```objective-c
-(void)onResp:(BaseResp *)resp
{
    if ([resp isKindOfClass:[WXOpenCustomerServiceResp class]])
    {
        int errCode = resp.errCode;        // 0 为成功，其余为失败
        NSString *string = resp.extMsg;    // 相关错误信息
    }
}
```

#### 鸿蒙开发示例

- 鸿蒙微信版本：大于等于 1.0.11
- OpenSDK 版本：大于等于 1.0.15

移动应用跳转到微信客服会话示例：

```typescript
import * as wxopensdk from '@tencent/wechat_open_sdk';

const APP_ID = "wx4a8d53a2ceb957dc" // 填移动应用（App）的 AppId
const WXApi = wxopensdk.WXAPIFactory.createWXAPI(APP_ID)

let req = new wxopensdk.OpenCustomerServiceChatReq()
req.corpId = "wwxxxxx"; // 企业 ID
req.url = "https://work.weixin.qq.com/kfid/kfcxxxxx";  // 客服 URL
WXApi.sendReq(getContext(this) as common.UIAbilityContext, req)
```

回调说明：

```typescript
import * as wxopensdk from '@tencent/wechat_open_sdk';

class WXApiEventHandlerImpl implements wxopensdk.WXApiEventHandler {

  // ...

  onResp(resp: wxopensdk.BaseResp): void {
    if (resp instanceof wxopensdk.OpenCustomerServiceChatResp) {
      const errCode = resp.errCode   // 0 为成功，其余为失败
    }
  }
}
```
