Rtc555Sdk 1.3.4

Rtc555Sdk 1.3.4

维护者:由 Harish GuptaGirish AvilamArunkavi AngamuthuVikram 维护。



Rtc555Sdk 1.3.4

  • 名字

概述

555 RTC SDK 提供了 APIs,允许 iOS 开发者创建具有音频/视频/PSTN 通话、会议通话、聊天、屏幕共享等不同功能的 app。SDK 提供的服务由 555 平台的可靠且可扩展的基础设施支持,该基础设施旨在处理大量通话。

以下步骤允许用户进行端到端 PSTN 通话。这包括用户认证、登录、创建媒体连接的通知。

  1. 按照安装指南将 SDK 集成到项目中。
  2. 555门户获取API密钥和访问令牌。
  3. 完成登录以获取访问任何SDK或后端API所需的JWT。
  4. 按照通知指南来实现应用中对APNS通知的支持。
  5. 使用以下SDK API文档来制作来电/去电PSTN电话。

用法

PSTN 呼叫

本文档列出所有 SDK API 调用以及它们在发起/接收 PSTN 呼叫和使用高级呼叫功能如呼叫保持/释放、静音/取消静音等的使用方法。

在发起或接收 PSTN 呼叫之前,确保您已登录到 555 平台。这里登录

SDK初始化

以下API用于初始化并设置SDK的上下文。建议在应用程序启动时调用此API。

Rtc555Sdk.initializeLibrary()

添加SDK配置。

为了进行PSTN/语音相关API调用,SDK需要有以下提到的必填配置数据,以便与555平台后端建立连接。

let config:Rtc555Config = Rtc555Sdk.sharedInstance.getConfig()
config.phoneNumber =  // Source Telephone Number
config.routingId =  // 555 platform login response will provide unique id for the logged in user.
config.url =  // Event manager URL
config.token =  /// 555 platform login response will provide unique jwt token for the logged in user.

Rtc555Sdk.setConfig(config: config)

发起电话拨打

要发起电话拨打,请将目标电话号码和通知有效载荷传递给dial API。通知有效载荷包含两个字段,分别是datanotification。用户可以在data键的部分添加任何自定义数据,这些数据将成为通知的一部分发送到远程端。通知键包含通知类型和联邦通知类型(以下示例中这两个值均已填充)。

dial API返回枚举类型为Result。成功的拨打电话API调用将返回电话ID,失败情况返回错误代码和错误原因。

Rtc555Voice.dial( number: targetTelephoneNumber, notificationPayload:buildNotificationPayload()){ result in
           switch result {
           case .success(let callId):
               print("Dial was success and callid is = \(callId)")
           case .failure(let error):
            print(error)
           }
       }
       
 //build notification  payload
 private func buildNotificationPayload() -> String{
     let data = ["cname" : <Source Telephone Number>,    // source telephone number
                 "cid" : <Source Telephone Number>,      // source telephone number
                 "tar" : <Target Telephone Number>]    // target telephone number

    let notificationPayload = ["type" : "pstn",
                               "topic": "federation/pstn"]


    let userData = ["data": data, "notification" : notificationPayload]

    do{
        let jsonData = try JSONSerialization.data(withJSONObject: userData, options: JSONSerialization.WritingOptions.prettyPrinted)

        return String(data: jsonData, encoding: String.Encoding.utf8)!
    }catch {
        Log.e("Error creating notification payload")
    }
    return " "
}
       
参数 类型 描述
targetTelephoneNumber 字符串 包含目标10位电话号码
notificationPayload 字典 cname, cid, targtid,type,topic

以下是为外出通知Data构建通知有效载荷

参数 类型 描述
data 字典
  • cname
  • cid
  • targetId
notification 字典
  • type:"pstn"
  • topic :"federation/pstn"

注意:请在访问Dial/Accept呼叫API之前,确保在您的info.plist文件中添加必选麦克风权限,以便允许SDK创建本地音频流。

接听/拒绝来电

当用户收到PSTN来电提醒时,用户可以选择

接受通话

如果用户想接受 incoming PSTN 通话请求,请使用 accept API 并传入从 incoming APNS 推送通知接收到的通知有效载荷。 accept API 返回枚举结果。结果成功的情况将返回通话 ID,失败情况返回错误代码和错误原因。

Rtc555Voice.rtcDelegate = self
Rtc555Voice.accept(notificationData: notificationdata){ result in
            switch result {
            case .success(let callId):
                print("callId :: \(callId)")
                 self.callId = callId
            case .failure(let error):
             print(error)
            }
        }

传递在 incoming 通知中接收到的通知有效载荷。

参数
trace_id 跟踪 ID
room_id 需要加入的房间名称,该名称包含在通知有效载荷中。
room_token 包含在通知有效载荷中的房间令牌。
room_token_expiry_time 从通知有效载荷中检索到的房间令牌过期时间。
to_routing_id toRoutingId
rtc_server 从通知有效载荷中提取的 RTC 服务器 URL。

拒绝来电

用户可以使用拒绝 API 拒绝来电。通过传入接收到的来电 APNs 推送通知的负载。

Rtc555Voice.reject(notificationData: notificationdata){ result in
            switch result {
            case .success(let callId):
                print("Reject was success  = \(callId)")
                 self.callId = result
            case .failure(let error):
             print(error)
            }
        }
参数
trace_id 跟踪 ID
room_id 需要加入的房间名称,该名称包含在通知有效载荷中。
room_token 包含在通知有效载荷中的房间令牌。
room_token_expiry_time 从通知有效载荷中检索到的房间令牌过期时间。
to_routing_id toRoutingId
rtc_server 从通知有效载荷中提取的 RTC 服务器 URL。

结束活动通话

用户需要调用挂断API来结束正在通话。

Rtc555Voice.hangup(callId: callId)
参数
callId callId是此通话的唯一标识符,由拨号/接受API返回。

清理会话。

在Rtc555Sdk中调用以下API来释放SDK使用的所有资源。此调用还允许客户端与555平台后端断开连接。如果应用进入后台或终止状态,应用开发者应调用此API。

Rtc555Sdk.cleanup()

在呼功能

由iOS SDK提供用于PSTN通话的功能包括

挂断电话

此API调用允许用户挂起当前通话。在调用此通话之后,主叫和被叫双方将无法相互听到对方。

Rtc555Voice.hold(callId: callIds)
参数
callId callId是此通话的唯一标识符,由拨号/接受API返回。

解除通话

此API调用允许用户解除已持有的通话。调用此调用后,主叫方和被叫方将能够互相听到对方。

Rtc555Voice.unhold(callId: callId)
参数
callId callId是此通话的唯一标识符,由拨号/接受API返回。

静音本地音频

这个API调用允许用户在通话中静音其音频。

Rtc555Voice.mute(callId: callId)
参数
callId callId是此通话的唯一标识符,由拨号/接受API返回。

取消本地音频静音

此API调用允许用户取消通话中的音频静音。

Rtc555Voice.unmute(callId: callId)
参数
callId callId是此通话的唯一标识符,由拨号/接受API返回。

要获取通话状态或错误报告,实现 Rtc555SdkDelegate 协议并将音频委托初始化如下

Rtc555Voice.rtcDelegate = self

onStatus

当接收到进行中的PSTN电话状态时,此回调将被调用。

    func onStatus(status callStatus: CallStatus,id callId:String) {
         
     }
参数
状态 进行中电话的状态
callId 从后端接收到的callId

状态

  • 初始化                         - 当电话正在初始化时
  • 连接                        - 当电话正在连接时
  • 已连接                     - 当电话已连接时
  • 已断开连接                 - 当电话已断开连接时
  • 挂起                       - 当电话处于挂起状态时

onError

此回调在接收到进行的PSTN通话错误时被调用。

    func onError(error errorInfo: Error,id callId:String) {
         
     }
参数
错误信息 错误对象包含错误代码和错误消息
callId 从后端接收到的callId

onNotification

如果您想使用XMPP通知(而不是APNS),请使用此可选的代理调用。客户需要连接到555后端才能获取此通知回调。

    @objc func onNotification(notification notificationData: [AnyHashable : Any]) {

    }
参数
notificationData 进来通知的通知有效载荷