# 用户身份
当用户登录或退出应用时,请确保将相应的事件同步到 AIHelp,以确认或重置用户身份。
注意
请确保调用 API 时同步给 AIHelp 的 userId 是唯一的有效值。
将 userId 设置为诸如空字符串("")、"null"、0 或 -1 等无效值,可能会导致客服功能异常。
# API
# login()
当用户登录应用时,请将用户 ID 同步给 AIHelp,以便 AIHelp 为其生成合法的身份令牌。
AIHelpSupport.login("THIS IS YOUR USER ID");
或者通过配置 LoginConfig
来实现其它能力,比如用户信息、企业级身份授权等:
let userConfig = {
userName: "AIHelper",
userTags: "recharge,suggestion",
customData: JSON.stringify({
key: 'value'
})
};
let loginConfig = {
userId: "THIS IS YOUR USER ID",
userConfig: userConfig,
isEnterpriseAuth: false
}
AIHelpSupport.login(loginConfig);
# logout()
当用户退出登录时,请调用此方法来清除当前登录的用户信息,以保证退出登录后游客身份的准确性。
AIHelpSupport.logout();
# URL
或者,你也可以通过拼接 URL 的方式实现同样的需求:
<script>
let domain = "THIS IS YOUR APP DOMAIN";
let appId = "THIS IS YOUR APP ID";
let entranceId = "THIS IS YOUR ENTRANCE ID";
(function () {
let baseUrl = `https://${domain}/webchatv5/#/${appId}`;
let params = `entranceId=${entranceId}&userId=${your_user_id}&userName=${your_user_name}&userTags=${your_user_tags}&customData=${encodeURIComponent(JSON.stringify({key:"value"}))}`;
let url = `${baseUrl}?${params}`;
window.open(url);
})();
</script>
# 事件
# 用户登录
你可以通过监听 userLogin
事件来了解当前用户的登录状态:
AIHelpSupport.registerAsyncEventListener("userLogin", function(jsonData) {
// `jsonData`: { "code": 1, "message": "Success" }
});
其中,jsonData
中的 code
可选值为:
1
表示登录成功;-1
表示无效的 user Id;-2
表示登录失败,具体原因可以查看message
字段的说明;
# 企业授权
当通过 isEnterpriseAuth: true
启用企业授权时,调用 login
API 会触发 enterpriseAuth
事件。
你需要监听该事件自行处理用户认证逻辑,之后将用户身份信息通过 ack
回调方法回传给 AIHelp。
AIHelpSupport.registerAsyncEventListener("enterpriseAuth", function(jsonData, ack) {
ack("{'token':'your async token'}")
});
出于兼容性的考虑,需要以 JSON 的格式将数据回传给 AIHelp。用户令牌以 token
字段进行存储。
# 参数释义
# loginConfig
- 类型:
object
- 详情:必填参数。 登录可选配置项的封装。
# userId
- 类型:
String
- 默认值:
用户设备随机数
- 详情:必填参数。 用户唯一标识,不可以设置为空字符串、0 或 -1。
# userConfig
- 类型:
object
- 详情:可选参数。 用户信息配置项,包括用户名、服务器 ID、用户标签以及其它自定义信息。除了在登录的时候,你还可以单独调用 updateUserInfo API 来更新用户信息。
- 接入示例:
let userConfig = { userName: "AIHelper", userTags: "recharge,suggestion", customData: { key: 'value' } }; let loginConfig = { userId: "THIS IS YOUR USER ID", userConfig: userConfig } AIHelpSupport.login(loginConfig);
# isEnterpriseAuth
- 类型:
boolean
- 默认值:
false
- 详情:可选参数。 开启企业授权后,需要注册
enterpriseAuth
事件处理认证逻辑。 - 接入示例:
let loginConfig = { userId: "THIS IS YOUR USER ID", isEnterpriseAuth: true } AIHelpSupport.login(loginConfig);
# 其他
# 企业授权流程
为了最大限度地保证安全性,你可以选择自行处理用户身份的认证逻辑,即企业授权。
企业授权属于服务器验证,验证过程完全在服务端进行,SDK 和游戏客户端全程都不持有密钥。
企业身份认证的逻辑时序如下:
游戏客户端调用 SDK login 接口登录,指定 userId 并开启企业认证;
游戏客户端收到服务端响应后,在企业认证事件回调里,利用 ack 回调将服务端颁发的 token 回传给 SDK 使用;
SDK 用收到的 token 请求 AIHelp 服务端接口,服务端会对该 token 做二次验证,如果不是合法身份会返回登录失败;
# token 生成规则
在企业认证过程中,你需要在 AIHelp 后台获取密钥,并在服务端为用户颁发 token。
其中,token 生成规则如下:
使用 AIHelp 颁发的秘钥,在后台设置 - 应用设置 - SecretKey 处获取;
使用 HS256 签名算法,有效时间推荐 24 小时;
生成标准格式的 JWT,格式如下:
{
"exp": 1718868267, // 过期时间戳(秒
"iat": 1718781867, // 发布时间戳(秒)
"nbf": 1718781867, // 生效时间戳(秒)
"iss": "xxxx", // 自定义
"jti": "947b3086-9aad-40d8-b5cf-752c9294f392" // UUID
}