# SobotCallSDK
**Repository Path**: ZCSobot/sobotcallsdk
## Basic Information
- **Project Name**: SobotCallSDK
- **Description**: No description available
- **Primary Language**: Objective-C
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2021-12-24
- **Last Updated**: 2022-06-01
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# iOS 集成说明
智齿客服呼叫 SDK 具有以下特性:
* 语音电话:键盘拨号、发起语音通话。
* 资源文件可以在 SobotCall.bundle 中替换。
相关限制及注意事项:
1、iOS SDK 新版支持 iOS9 以上版本。
2、目前发布 XCode 版本为 XCode 13.0,建议使用新版开发。
3、iOS需要申请麦克风权限,否则功能无法使用。
4、SDK 不可与智齿 APP 中的呼叫功能以及智齿 PC 工作台中呼叫功能同时使用。
#### 文档介绍
##### ● 集成流程示意图

##### ● 文件说明
**SDK 包含(SobotCall.framework、SobotCall.bundle、Frameworks)和SobotDemo、Doc 相关说明文档。**
| 文件 | 描述|
|:----|:----|
| SobotCall.framework | 呼叫 SDK 代码库 |
| SobotCall.bundle | SDK 资源库,包含图片文件、音频文件 |
| ZCSobotCallApi.h | 关键功能操作类 |
| SobotCallInfo.h | 功能配置类 |
| SCUIConfig.h | UI配置类 |
| Frameworks | 需要添加的依赖库 |
#### 集成方式
使用呼叫 SDK 需要加入的权限
```js
NSMicrophoneUsageDescription
语音电话需要使用您的麦克风权限
```
##### ● 手动集成
###### 1. 将集成包并导入到项目中
下载并解压 [iOS_SobotCallSDK](https://img.sobot.com/mobile/callsdk/iOS_SobotCallSDK_1.0.0.zip),添加必要文件 SobotCall.framework 和 SobotCall.bundle 以及 Frameworks 依赖库到你的工程里。
###### 2. 需要导入以下framework依赖库
```js
belr.framework
mediastreamer2.framework
msopenh264.framework
bctoolbox.framework
mswebrtc.framework
msamr.framework
linphonetester.framework
ortp.framework
mscodec2.framework
mssilk.framework
belcard.framework
msx264.framework
linphone.framework
```
###### 3. 配置启动参数 SobotCallInfo
配置参数 SobotCallInfo 用于话机登录,该配置类中参数获取请联系智齿售后人员获取。
[SobotCallInfo 参数说明](#5.1)
```js
//配置参数样例:
SobotCallInfo *sobotCallInfo = [[SobotCallInfo alloc]init];
sobotCallInfo.companyid = @"您的企业ID";
sobotCallInfo.sip_number = @"142160000";
sobotCallInfo.appid = @"a4b246c8b67e4543b3b870ce62f75546";
sobotCallInfo.client_secret = @"f6943eb4fbf144e2949d7538ee2cc665";
sobotCallInfo.agentid = @"969a7ee9fd4c42f48171b0128df2f16c";
sobotCallInfo.agent_phone_num = @"18600978969";
sobotCallInfo.groupid = @"36b0f8eb2de948d99e89c8f0c3d92e68_5";
sobotCallInfo.is_iecord_stereo = NO;
sobotCallInfo.sip_pwd = @"xjw2nz2a";
sobotCallInfo.display_number = @"01051393569";
sobotCallInfo.sip_address = @"39.105.93.78:7880";
```
###### 4. 话机登录启动 SDK
##### ● pod 集成
```js
pod 'SobotCall'
// 注意: 普通github源下载较慢可以选择gitee源下载
// -> SobotCallSDK
// sobot_call_sdk.
// pod 'SobotCallSDK'
// - Homepage: https://gitee.com/ZCSobot/sobotcallsdk.git
// - Source: https://gitee.com/ZCSobot/sobotcallsdk.git
// - Versions: 0.0.1 [master repo]
```
方式一:普通方式启动
```js
[[ZCSobotCallApi getInstance] loginWithSobotCallInfo:sobotCallInfo sobotCallListenBlock:^(id _Nonnull object) {
}];
```
方式二:如您已获取到 token 直接以 token 方式登录话机
```js
[[ZCSobotCallApi getInstance] loginWithTokenWithCallInfo:sobotCallInfo access_token:_info.access_token sobotCallListenBlock:^(id _Nonnull object) {
}];
```
【注意:sobotCallInfo 为语音电话的启动配置信息,不可为空。】
#### 功能说明
##### ● 域名设置(可选)
【说明:host 请联系智齿售后人员获取。】
域名说明:
**默认域名为:https://sobot.com/com** 如果您是本地化部署,请使用自己的部署的服务域名。
```
如果您是本地化部署 设置域名方式如下
[[ZCSobotCallApi getInstance] setApiHost:@""];
```
##### ● 跳转到拨号界面
该方法在话机登录成功后调用,唤起拨号界面,输入您要拨打的电话号码进行呼叫。
```js
/**
* 跳转到拨号界面
* 该方法需在登录成功之后使用
* @param userPhoneNumber 用户的电话号,可为空,有值的话会自动带入到拨号界面
* @param userNick 用户的昵称,可为空,有值的话会自动带入到拨号界面
* @param callBlock 呼叫回调
*/
-(void)openCallPhoneNumberWithPhoneNumber:(NSString *)userPhoneNumber userNick:(NSString *)userNick callBlock:(void (^)(id object))callBlock;
```
##### ● 直接发起通话
该方法在话机登录成功后,传入对应的用户电话号码发起呼叫,直接唤起呼叫页面。
【注意: 电话号码不能为空。】
```js
/**
* 发起通话
* 该方法需在登录成功之后使用
* @param userPhoneNumber 用户的电话号, 不能为空
* @param userNick 用户的昵称 可为空
* @param callBlock 呼叫回调
*/
-(void)startCallWithPhoneNumber:(NSString *)userPhoneNumber userNick:(NSString *)userNick callBlock:(void (^)(id object))callBlock;
```
##### ● 监听通话状态的变化
监听状态: 用户来电、用户响铃中、通话中、通话结束。
[SobotVoipCallListenerState 说明](#5.3)
```js
-(void)setCallListener:(void (^)(SobotVoipCallListenerState state))listenerBlock;
```
##### ● 离线退出
呼叫坐席离线,退出 SDK。
```js
- (void)exitSobotCall:(void (^)(id object))exitBlock;
```
##### ● 图片和音频资源文件修改
图片和音频资源请在 ***SobotCall.bundle*** 中找到相应的文件名做替换。
【注意:替换文件时文件名不可以修改,否则 SDK 会找不到对应的资源。】
##### ● 拨号界面 UI 控件颜色修改
[SCUIConfig 参数说明](#5.3)
拨号页面控件颜色修改样例如下:
```js
SCUIConfig *uiconfig = [SCUIConfig new];
uiconfig.numberTextColor = [UIColor redColor];
[ZCSobotCallApi getInstance].uiConfig = uiconfig;
```
#### 配置类说明
##### ● SobotCallInfo 参数说明
| 属性名 | 类型 | 必填 |描述|
|:----|:----|:----|:----|
| appid |NSString | 是 | 应用id |
| client_secret |NSString | 是 | 秘钥,即创建app时返回的token值 |
| companyid |NSString | 是 | 企业ID |
| access_token |NSString | 是| token 登录接口使用 (备注 根据登录 api 是否传入,如果传入就使用传入的 token 覆盖,没有就通过 client_secret 、companyId 调用获取 token 接口去获取) |
| agent_state |NSString | 否| 坐席状态 |
| display_number |NSString | 是 | 坐席手机登录时,回呼坐席手机的外显号码,以及坐席转接或咨询第三方时,呼叫第三方号码的外显号码 |
| agent_phone_num |NSString | 是 | 特殊时使用,此字段代表 voip 账号上班,但呼入时是转到坐席的指定的手机号,只有呼出时才使用 voip 账号呼出 |
| groupid |NSString | 是 | 所在技能组 |
| agentid |NSString | 是| 坐席ID |
| callWay |int | 否 | 呼叫方式,固定为 SIP=2(SDK默认2) |
| sip_number |NSString | 是 | SIP 账号 |
| sip_address |NSString | 是 | 域名 注册 SIP 话机使用 |
| sip_pwd |NSString | 是| SIP 密码 |
##### ● SCUIConfig 参数说明
| 参数 | 类型 | 必填 | 描述 |
|:----|:----|:----|:----|
| numberTextColor | UIColor | 否 | 拨号界面数字的文字颜色 (1 2 3 4 5 6 7 8 9 0) |
| charTextColor | UIColor | 否 | 拨号界面字母文字颜色 (abc 、# 等) |
| accpetViewBgColor | UIColor | 否 | 接听页面背景色 |
| callViewBgColor | UIColor | 否 | 拨号界面 电话号 区域 背景色 |
| callViewKeyBoardBgColor | UIColor | 否 | 拨号界面 键盘 区域 背景色 |
| accpetViewTextColor | UIColor | 否 | 通话界面 文字颜色 |
##### ● SobotVoipCallListenerState 说明
| 状态名称 | 类型 | 描述 |
|:----|:----|:----|:----|
| SobotVoipCallListenerStateNewCall | int | 外呼成功 |
| SobotVoipCallListenerStateCalled | int | 来电响铃状态 |
|SobotVoipCallListenerStateHandup | int | 挂断 | 通话挂断 |
| SobotVoipCallListenerStateCallClose | int | 通话结束 |
| SobotVoipCallListenerStateCallReading | int | 通话中 |
| SobotVoipCallListenerStateAfterWorkSuccess | int | 坐席下班成功 |
#### 源码和Demo
iOS_SDKDemo 源码[点击下载](https://github.com/ZCSDK/sobot_call_demo)。
+ 将 [iOS_SobotCallSDK](https://img.sobot.com/mobile/callsdk/iOS_SobotCallSDK_1.0.0.zip)解压后的文件 Frameworks、SobotCall.bundle、SobotCall.framework 导入到下载的demo中。
+ 输入配置参数(SobotCallInfo 配置类中的属性)。
+ 点击登录 查看日志是否登录成功。
+ 拨号。
+ 视频教程 [使用视频引导](https://img.sobot.com/mobile/callsdk/video(2).MP4)。
#### 更新说明
[《SDK 版本更新说明》](https://shimo.im/docs/erAdP5rLwYcv4zAG/)
#### 隐私政策说明
呼叫 SDK 需要在 APP 中开启麦克风权限,[《智齿科技 SDK 收集使用个人信息说明》](https:/www.sobot.com/docs/clause/sdk-clause.html)。