tencent cloud

云联络中心

产品公告
产品动态
关于云联络中心术语更新
产品简介
产品概述
功能列表
名词介绍
应对防火墙限制相关
AI 专区
购买指南
语音通话计费概述
在线会话计费概述
查看账单
退费指引
新用户手册
语音通话指引
在线会话指引
场景用例
客服热线(呼入)
电话营销(呼出)
语音提醒(自动外呼)
集成用例(SDK)
管理员操作手册
语音通话分册
在线会话分册
工作台操作手册
语音通话分册
在线会话分册
AI 智能体操作手册
语音智能体介绍
语音智能体实践教程
新建语音智能体
实现智能体通话
查看智能体通话
开发操作手册
SDK 开发指南
数据推送
语音通话 API 文档
History
Introduction
API Category
Making API Requests
Agent APIs
Skill Group APIs
Number APIs
Dual Call APIs
Predictive Outbound Call APIs
SIP Phone APIs
Call Service Record APIs
Billing APIs
Other APIs
Outbound Call APIs
Speech Intelligent Agent APIs
Data Types
Error Codes
在线会话 API 文档
服务端 API
回调配置
常见问题
数据删除指引
相关协议
隐私政策
数据隐私和安全协议
服务等级协议
云联络中心用户协议
词汇表
联系我们

iOS

PDF
聚焦模式
字号
最后更新时间: 2025-01-09 15:41:52
本文主要介绍云联络中心(TCCC)坐席端的常用 API,在 iOS 端我们提供了Swift、Objective-C、C++ 接口供开发者选择使用。我们推荐 iOS 开发者在开发应用时候请用 Swift 语言开发。

创建实例和事件回调

API
描述
创建 ITCCCWorkstation 实例(单例模式)。
销毁 ITCCCWorkstation 实例(单例模式)。
添加 ITCCCWorkstation 事件回调。
移除 ITCCCWorkstation 事件回调。

创建实例和设置事件回调示例代码

Swift
Objective-C
C++
import TCCCSDK

let tcccSDK: TCCCWorkstation = {
// 创建实例
return TCCCWorkstation.sharedInstance()
}()

// 设置TCCC事件回调
tcccSDK.addTcccListener(self)

// 移除TCCC事件回调
tcccSDK.removeTCCCListener(self)
// 销毁实例
TCCCWorkstation.destroySharedIntance()
// 引入 OC 头文件
#import "TCCCSDK/tccc/platform/apple/TCCCWorkstation.h"

@property (strong, nonatomic) TCCCWorkstation *tcccSDK;

- (TCCCWorkstation*)tcccSDK {
if (!_tcccSDK) {
// 创建实例
_tcccSDK = [TCCCWorkstation sharedInstance];
}
return _tcccSDK;
}
// 设置TCCC事件回调
[self.tcccSDK addTcccListener:self];

// 移除TCCC事件回调
[self.tcccSDK removeTCCCListener:self];
// 销毁实例
[TCCCWorkstation destroySharedIntance];
_tcccSDK = nil;
#include "TCCCSDK/tccc/include/ITCCCWorkstation.h"
using namespace tccc;
// 创建实例和设置事件回调
ITCCCWorkstation* tcccSDK = getTCCCShareInstance();
// 设置回调,TCCCCallbackImpl 需要继承 ITCCCCallback
class TCCCCallbackImpl:public ITCCCCallback {
public:
TCCCCallbackImpl() {}
~TCCCCallbackImpl() {}

void onError(TCCCError errCode, const char* errMsg, void* extraInfo) {}
void onWarning(TCCCCWarning warningCode, const char* warningMsg, void* extraInfo) {}

void onNewSession(TCCCSessionInfo info) {}

void onEnded(EndedReason reason, const char* reasonMessage, const char* sessionId) {}
};
TCCCCallbackImpl* tcccCallback = new TCCCCallbackImpl();
tcccSDK->addCallback(tcccCallback);
// 销毁实例
destroyTCCCShareInstance();
tcccSDK = nullptr;

登录相关接口

API
描述
login
SDK 登录。
检查 SDK 是否已登录。
logout
SDK 退出登录。

登录、退出登录示例代码

Swift
Objective-C
C++
import TCCCSDK

let param = TXLoginParams()
// 登录的坐席ID,通常为邮箱地址
param.userId = "";
// 登录票据,在登录模式为Agent必填。更多详情请参见[创建 SDK 登录
// Token](https://www.tencentcloud.com/document/product/679/49227?from_cn_redirect=1)
param.token = "";
// 腾讯云联络中心应用ID,通常为1400开头
param.sdkAppId = 0;
// 设置为坐席模式
param.type = .Agent;
// 登录
tcccSDK.login(param) { info in
// 登录成功
} fail: { code, message in
// 登录失败
}

// 检查登录状态
tcccSDK.checkLogin {
// 已登录
} fail: { code, message in
// 未登录或者被T了
}

// 退出登录
tcccSDK.logout {
// 退出成功
} fail: { code, message in
// 退出异常
}
// 引入 OC 头文件
#import "TCCCSDK/tccc/platform/apple/TCCCWorkstation.h"

TXLoginParams *param = [[TXLoginParams alloc] init];
// 登录的坐席ID,通常为邮箱地址
param.userId = @"";
// 登录票据,在登录模式为Agent必填。更多详情请参见[创建 SDK 登录
// Token](https://www.tencentcloud.com/document/product/679/49227?from_cn_redirect=1)
param.token = @"";
// 腾讯云联络中心应用ID,通常为1400开头
param.sdkAppId = 0;
// 设置为坐席模式
param.type = Agent;
[self.tcccSDK login:param succ:^(TXLoginInfo * _Nonnull info) {
// 登录成功
} fail:^(int code, NSString * _Nonnull desc) {
// 登录失败
}];

// 检查登录状态
[self.tcccSDK checkLogin:^{
// 已登录
} fail:^(int code, NSString * _Nonnull desc) {
// 未登录或者被T了
}];

// 退出登录
[self.tcccSDK logout:^{
// 退出成功
} fail:^(int code, NSString * _Nonnull desc) {
// 退出异常
}];
#include "TCCCSDK/tccc/include/ITCCCWorkstation.h"
using namespace tccc;
// 登录回调类
class TCCCLoginCallbackImpl : public ITXValueCallback<TCCCLoginInfo> {
public:
TCCCLoginCallbackImpl() {
}
~TCCCLoginCallbackImpl() override {}
void OnSuccess(const TCCCLoginInfo &value) override {
// 登录成功
}
void OnError(TCCCError error_code, const char *error_message) override {
// 登录失败
}
};
TCCCLoginCallbackImpl* loginCallBackImpl = nullptr;
if (nullptr == loginCallBackImpl) {
loginCallBackImpl = new TCCCLoginCallbackImpl();
}
TCCCLoginParams param;
/// 登录的坐席ID,通常为邮箱地址
param.userId = "";
/// 登录票据,在登录模式为Agent必填。更多详情请参见[创建 SDK 登录
/// Token](https://www.tencentcloud.com/document/product/679/49227?from_cn_redirect=1)
param.token = "";
/// 腾讯云联络中心应用ID,通常为1400开头
param.sdkAppId = 0;
// 设置为坐席模式
param.type = TCCCLoginType::Agent;
// 登录
tcccSDK->login(param,loginCallBackImpl);
// 退出登录
tcccSDK->logout(nullptr);

呼叫相关接口函数

API
描述
call
发起通话。
answer
接听来电。
结束通话。
sendDTMF
发送 DTMF(双音多频信号)。
mute
静音。
unmute
取消静音。

发起呼叫和结束呼叫示例代码

Swift
Objective-C
C++
import TCCCSDK

let callParams = TXStartCallParams()
// 呼叫的手机号
callParams.to = "";
// 号码备注,在通话条中会替代号码显示(可选)
callParams.remark = "";
// 发起外呼
tcccSDK.call(callParams) {
// 发起呼叫成功
} fail: { code, message in
// 发起呼叫失败
}
// 结束通话
tcccSDK.terminate()
// 引入 OC 头文件
#import "TCCCSDK/tccc/platform/apple/TCCCWorkstation.h"

TXStartCallParams *callParams = [[TXStartCallParams alloc] init];
// 呼叫的手机号
callParams.to = TO;
// 号码备注,在通话条中会替代号码显示(可选)
callParams.remark = @"testByIos";
// 发起外呼
[self.tcccSDK call:callParams succ:^{
// 发起呼叫成功
} fail:^(int code, NSString * _Nonnull desc) {
// 发起呼叫失败
}];

// 结束通话
[self.tcccSDK terminate];
#include "TCCCSDK/tccc/include/ITCCCWorkstation.h"
using namespace tccc;
class TCCCCommonCallback : public ITXCallback {
private:
NSString* mFunName;
public:
TCCCCommonCallback(NSString* funName) {
mFunName = funName;
}
~TCCCCommonCallback() override {
}
void OnSuccess() override {
// 成功
}
void OnError(TCCCError error_code, const char *error_message) override {
std::string copyErrMsg = makeString(error_message);
// 失败
}
};
TCCCCommonCallback* startCallCallbackImpl = nullptr;
if (nullptr == startCallCallbackImpl) {
startCallCallbackImpl = new TCCCCommonCallback(@"startCall");
}
TCCCStartCallParams callParams;
//呼叫的手机号
callParams.to = "";
// 发起外呼
tcccSDK->call(callParams, startCallCallbackImpl);
// 结束通话
tcccSDK->terminate();

音频设备接口函数

API
描述
设定本地音频的采集音量。
获取本地音频的采集音量。
设定远端音频的播放音量。
获取远端音频的播放音量。
设置音频路由。

切换音频路由示例代码

Swift
Objective-C
C++
import TCCCSDK

// 切换为扬声器
tcccSDK.getDeviceManager().setAudioRoute(.TCCCAudioRouteSpeakerphone)
// 静音
tcccSDK.mute()
// 取消静音
tcccSDK.unmute()
// 引入 OC 头文件
#import "TCCCSDK/tccc/platform/apple/TCCCWorkstation.h"

// 切换为扬声器
[[self.tcccSDK getDeviceManager] setAudioRoute:TCCCAudioRouteSpeakerphone];
// 静音
[self.tcccSDK mute];
// 取消静音
[self.tcccSDK unmute];
#include "TCCCSDK/tccc/include/ITCCCWorkstation.h"
using namespace tccc;

// 切换为扬声器
tcccSDK->getDeviceManager()->setAudioRoute(TCCCAudioRoute::TCCCAudioRouteSpeakerphone);
// 静音
tcccSDK->mute();
// 取消静音
tcccSDK->unmute();

调试相关接口

API
描述
获取 SDK 版本信息。
设置 Log 输出级别。
启用/禁用控制台日志打印。
调用实验性接口。

获取SDK版本示例代码

Swift
Objective-C
C++
import TCCCSDK

// 获取SDK版本号
let version = TCCCWorkstation.getSDKVersion()
// 引入 OC 头文件
#import "TCCCSDK/tccc/platform/apple/TCCCWorkstation.h"

// 获取SDK版本号
NSString* version = [TCCCWorkstation getSDKVersion];
#include "TCCCSDK/tccc/include/ITCCCWorkstation.h"
using namespace tccc;

// 获取SDK 版本号
tcccSDK->getSDKVersion();

错误和警告事件

API
描述
onError
错误事件回调。
onWarning
警告事件回调。

处理错误回调事件回调示例代码

Swift
Objective-C
C++
import TCCCSDK

func onError(_ errCode: TCCCErrorCode, errMsg: String, extInfo: [AnyHashable : Any]?) {
// 错误事件回调
}
func onWarning(_ warningCode: TCCCCWarningCode, warningMsg: String, extInfo: [AnyHashable : Any]?) {
// 警告事件回调
}

// 设置TCCC事件回调
tcccSDK.addTcccListener(self)
// 引入 OC 头文件
#import "TCCCSDK/tccc/platform/apple/TCCCWorkstation.h"

#pragma mark - TCCCDelegate
- (void)onError:(TCCCErrorCode)errCode errMsg:(NSString * _Nonnull)errMsg extInfo:(nullable NSDictionary *)extInfo {
// 错误事件回调
}
- (void)onWarning:(TCCCCWarningCode)warningCode warningMsg:(NSString *_Nonnull)warningMsg extInfo:(nullable NSDictionary *)extInfo {
// 警告事件回调
}

// 设置TCCC事件回调
[self.tcccSDK addTcccListener:self];
#include "TCCCSDK/tccc/include/ITCCCWorkstation.h"
using namespace tccc;

// 设置回调,TCCCCallbackImpl 需要继承 ITCCCCallback
class TCCCCallbackImpl:public ITCCCCallback {
public:
TCCCCallbackImpl() {}
~TCCCCallbackImpl() {}
// 错误事件回调
void onError(TCCCError errCode, const char* errMsg, void* extraInfo) {}
// 警告事件回调
void onWarning(TCCCCWarning warningCode, const char* warningMsg, void* extraInfo) {}
};
TCCCCallbackImpl* tcccCallback = new TCCCCallbackImpl();
tcccSDK->addCallback(tcccCallback);

呼叫相关事件回调

API
描述
新会话事件。包括呼入和呼出。
onEnded
会话结束事件。
音量大小的反馈回调。
网络质量的实时统计回调。

处理接听和坐席挂断事件回调示例代码

Swift
Objective-C
C++
import TCCCSDK

func onNewSession(_ info: TXSessionInfo) {
// 新会话事件。包括呼入和呼出
}
func onAccepted(_ sessionId: String) {
// 对端已接听事件
}
func onEnded(_ reason: TXEndedReason, reasonMessage: String, sessionId: String) {
// 通话结束事件
}

// 设置TCCC事件回调
tcccSDK.addTcccListener(self)
// 引入 OC 头文件
#import "TCCCSDK/tccc/platform/apple/TCCCWorkstation.h"

- (void)onNewSession:(TXSessionInfo *)info {
// 新会话事件。包括呼入和呼出
}
- (void)onEnded:(TXEndedReason)reason reasonMessage:(NSString *_Nonnull)reasonMessage sessionId:(NSString *_Nonnull)sessionId {
// 通话结束事件
}
- (void)onAccepted:(NSString *_Nonnull)sessionId {
// 对端已接听事件
}
// 设置TCCC事件回调
[self.tcccSDK addTcccListener:self];
#include "TCCCSDK/tccc/include/ITCCCWorkstation.h"
using namespace tccc;

// 设置回调,TCCCCallbackImpl 需要继承 ITCCCCallback
class TCCCCallbackImpl:public ITCCCCallback {
public:
TCCCCallbackImpl() {}
~TCCCCallbackImpl() {}
// 新会话事件。包括呼入和呼出
void onNewSession(TCCCSessionInfo info) {}
// 会话结束事件
void onEnded(EndedReason reason, const char* reasonMessage, const char* sessionId) {}
};
TCCCCallbackImpl* tcccCallback = new TCCCCallbackImpl();
tcccSDK->addCallback(tcccCallback);

与云端连接情况的事件回调

API
描述
SDK 与云端的连接已经断开。
SDK 正在尝试重新连接到云端。
SDK 与云端的连接已经恢复。

与云端连接情况的事件回调示例代码

Swift
Objective-C
C++
import TCCCSDK

func onConnectionLost(_ serverType: TXServerType) {
// SDK 与云端的连接已经断开
}
func onConnectionRecovery(_ serverType: TXServerType) {
// SDK 与云端的连接已经恢复
}
func onTry(toReconnect serverType: TXServerType) {
// SDK 正在尝试重新连接到云端
}

// 设置TCCC事件回调
tcccSDK.addTcccListener(self)
// 引入 OC 头文件
#import "TCCCSDK/tccc/platform/apple/TCCCWorkstation.h"

- (void)onConnectionLost:(TXServerType)serverType {
// SDK 与云端的连接已经断开
}
- (void)onTryToReconnect:(TXServerType)serverType {
// SDK 正在尝试重新连接到云端
}
- (void)onConnectionRecovery:(TXServerType)serverType {
// SDK 与云端的连接已经恢复
}
// 设置TCCC事件回调
[self.tcccSDK addTcccListener:self];
#include "TCCCSDK/tccc/include/ITCCCWorkstation.h"
using namespace tccc;

// 设置回调,TCCCCallbackImpl 需要继承 ITCCCCallback
class TCCCCallbackImpl:public ITCCCCallback {
public:
TCCCCallbackImpl() {}
~TCCCCallbackImpl() {}
// SDK 与云端的连接已经断开
void onConnectionLost(TCCCServerType serverType) {}
// SDK 正在尝试重新连接到云端
void onTryToReconnect(TCCCServerType serverType) {}
// SDK 与云端的连接已经恢复
void onConnectionRecovery(TCCCServerType serverType) {}
};
TCCCCallbackImpl* tcccCallback = new TCCCCallbackImpl();
tcccSDK->addCallback(tcccCallback);

API 错误码

基础错误码

符号
含义
ERR_SIP_SUCCESS
200
成功。
ERR_UNRIGIST_FAILURE
20001
登录失败。
ERR_ANSWER_FAILURE
20002
接听失败,通常是 trtc 进房失败。
ERR_SIPURI_WRONGFORMAT
20003
URI 格式错误。
ERR_HTTP_REQUEST_FAILURE
-10001
Http 请求失败,请检查网络连接情况。
ERR_HTTP_TOKEN_ERROR
-10002
token 登录票据不正确或者已过期。
ERR_HTTP_GETSIPINFO_ERROR
-10003
获取坐席配置失败,请 联系我们

SIP相关错误码

符号
含义
ERR_SIP_BAD_REQUEST
400
错误请求。
ERR_SIP_UNAUTHORIZED
401
未授权(用户名密码不对情况)。
ERR_SIP_AUTHENTICATION_REQUIRED
407
代理需要认证,请检查是否已经调用登录接口。
ERR_SIP_REQUESTTIMEOUT
408
请求超时(网络超时)。
ERR_SIP_REQUEST_TERMINATED
487
请求终止(网络异常,网络中断场景下)。
ERR_SIP_SERVICE_UNAVAILABLE
503
服务不可用。
ERR_SIP_SERVER_TIMEOUT
504
服务超时。

音频设备相关错误码

符号
含义
ERR_MIC_START_FAIL
-1302
打开麦克风失败。设备,麦克风的配置程序(驱动程序)异常,禁用后重新启用设备,或者重启机器,或者更新配置程序。
ERR_MIC_NOT_AUTHORIZED
-1317
麦克风设备未授权,通常在移动设备出现,可能是权限被用户拒绝了。
ERR_MIC_SET_PARAM_FAIL
-1318
麦克风设置参数失败。
ERR_MIC_OCCUPY
-1319
麦克风正在被占用中,例如移动设备正在通话时,打开麦克风会失败。
ERR_MIC_STOP_FAIL
-1320
停止麦克风失败。
ERR_SPEAKER_START_FAIL
-1321
打开扬声器失败,例如在 Windows 或 Mac。
ERR_SPEAKER_SET_PARAM_FAIL
-1322
扬声器设置参数失败。
ERR_SPEAKER_STOP_FAIL
-1323
停止扬声器失败。
ERR_UNSUPPORTED_SAMPLERATE
-1306
不支持的音频采样率。

网络相关错误码

符号
含义
ERR_RTC_ENTER_ROOM_FAILED
-3301
进入房间失败,请查看 onError 中的 -3301 对应的 msg 提示确认失败原因。
ERR_RTC_REQUEST_IP_TIMEOUT
-3307
请求 IP 和 sig 超时,请检查网络是否正常,或网络防火墙是否放行 UDP。
ERR_RTC_CONNECT_SERVER_TIMEOUT
-3308
请求进房超时,请检查是否断网或者是否开启 vpn,您也可以切换 4G 进行测试确认。
ERR_RTC_ENTER_ROOM_REFUSED
-3340
进房请求被拒绝,请检查是否连续调用 enterRoom 进入相同 ID 的房间。


帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈