1.9.4 • Published 2 years ago

aliyun-voip-web-sdk v1.9.4

Weekly downloads
-
License
MIT
Repository
-
Last release
2 years ago

Aliyun VoIP Web SDK

阿里云融合通信voip-web-sdk,提供基于WebRTC适用于浏览器VoIP2PSTN或VoIP2VoIP通话场景的SDK。

接入可参考demo: https://github.com/pianzuozj/voip-web-demo

为保证稳定性,建议使用最新版chrome使用该功能

Status

NPM version

Installation

You can install it as dependency with npm/cnpm or yarn.

$ # save into package.json dependencies with -S
$ npm install aliyun-voip-web-sdk -S

$ # you can use cnpm for fast install
$ cnpm install aliyun-voip-web-sdk -S

$ # use yarn for install
$ yarn add aliyun-voip-web-sdk

快速开始

一、接入前准备

客户端需要从阿里云申请融合通信账号后才能接入,为了保证安全性,融合通信SDK通过服务端下发的临时token作为身份标识与服务进行交互。临时token可通过融合通信服务pop接口从阿里云获得(详见服务端接入文档),并且具有时效性。SDK在token即将失效或其他需求而需要更新token时,会通过回调通知接入方,接入方需自行实现接口获取最新token并传递给SDK。

WebSDK交互流程

二、快速开始

  • 创建实例
import {
    AlicomRTC, // AlicomRTC实例
    Errors, // 错误码
} from 'aliyun-voip-web-sdk'

/**
 * 创始实例
 */
var rtc = new AlicomRTC()
/**
 * 是否允许日志上传 默认不上传
 * @param enable true 上传日志  false 取消上传日志
 */

setUploadEnable(enable)
/**
 * 设置服务监听
 */
rtc.setServiceListener({
  /**
   * 服务连接成功,当前处于可用状态
   */
  onServiceAvailable: function () {
    // 此时可以开始呼叫操作
  },

  /**
   * 服务连接失败、或者连接断开了,当前处于不可用状态,服务正在销毁。
   * @param errCode {number} 错误码
   * @param errMsg {string} 错误描述
   */
  onServiceUnavailable: function (errCode, errMsg) {
  },

  /**
   * 服务闲时
   * @param errCode {number} 错误码
   * @param errMsg {string} 错误描述
   */
  onServiceIdle: function (errCode, errMsg) {
  },

  /**
   * 作为被叫,收到点对点音频来电
   * @param call {Call} 表示这通来电的call实例
   */
  onReceivingAudioCall: function(call) {
    // todo: 已有通话的情况下拒绝新呼入,或是挂断当前通话接听
  },
})

/**
 * 可选,设置默认的呼叫超时时间
 */
// rtc.setDefaultCallTimeout(30)
  • 连接服务
/**
 * 使用RtcId初始化AlicomRTC实例
 */
rtc.initWithRtcId('RTCID', {
  updateToken: function (tokenHandler) {
    var token = {} // todo: 通过服务端接口获取Token
    tokenHandler.setToken(token)
  }
})
  • 始初化通话实例 当ServiceListener中的onServiceAvailable回调被唤起时,表示服务已经连接成功,此时可以开始创建VoIP2PSTN通话实例,设置并开始通话:
/**
 * 创建VoIP2Pstn的Call实例,每一次通话都需要生成一个Call实例
 */
var pstnCall = rtc.createVoIP2PstnCall('被叫号显', '被叫号码')

/**
 * 创建VoIP2VoIP的Call实例,每一次通话都需要生成一个Call实例
 */
var voipCall = rtc.createVoIP2VoIPCall('被叫RtcID')

/**
 * 开启服务端录音(可选)
 */
pstnCall.setServerRecordEnabled(true)

/**
 * 本地禁音(可选)
 */
pstnCall.muteLocalAudio()

/**
 * 本地取消禁音(可选)
 */
pstnCall.unmuteLocalAudio()

/**
 * 发送dtmf (只能是0-9、*、#组成的字符串,最大长度不超过32位)
 */
pstnCall.sendDtmfData(dtmf)

/**
* 返回当前通话的channelId
*/
getChannelId(): string
  • 通话状态管理
/**
 * 设置Call状态监听
 */
pstnCall.setCallListener({
  /**
   * 电话已通知到被叫方,被叫振铃中
   * @param talk {Talk} 通话对象
   */
  onCalleeRinging: function (talk) {},

  /**
   * 被叫已接听电话,正在连接中
   * @param talk {Talk} 通话对象
   */
  onCalleeConnecting: function (talk) {},

  /**
   * 电话拨通了可以正常通话了。被叫已接听
   * @param talk {Talk} 通话对象
   */
  onActive: function (talk) {},

  /**
   * 对端传来DTMF信息,每次回调只传入一个字符,如果是一连串输入的话则会多次回调,需要接入方自行根据时间戳处理
   * @param dtmf {string} 对端传入的DTMF信息
   * @param timestamp {number} 时间戳
   * @param talk {Talk} 通话对象
   */
  onDtmfData: function (dtmf, timestamp, talk) {},
})
  • 主叫开始呼叫 / 被叫开始接听
pstnCall.start()
  • 停止呼叫/通话
pstnCall.stop()
  • 销毁实例
rtc.destroy()

三、常见错误码

错误码数值原因
ERROR_MQTT_CONNECT_FAIL1000100mqtt连接失败
ERROR_UPLOAD_TOKEN_FAIL1000104token上传失败
ERROR_LOCAL_STOP2000000本地主动挂断
ERROR_REMOTE_HANGUP2000099对端主动挂断
ERROR_CALL_SELF2000100拨打自己
ERROR_CALL_EMPTY2000101拨打电话为空
ERROR_CALLEE_ALERTING_TIMEOUT2000103被叫时,振铃超时
ERROR_REMOTE_REFUSE2000106主叫时,对端拒绝应答
ERROR_REMOTE_CANCEL2000107被叫时,对端取消呼叫
ERROR_NO_ANSWER2000108被叫无人接听
ERROR_SERVICE_UNAVAILABLE2000113AlicomRTC服务不可用
ERROR_LOCAL_DESTROY2000116本地主动销毁服务
ERROR_TIME_OUT2000102joinChannel超时
ERROR_NETWORK_INVALID2000121网络异常
ERROR_MICROPHONE_NO_PERMISSION2000130麦克风无权限
ERROR_MICROPHONE_NO_DEVICE2000135没有麦克风设备
ERROR_MICROPHONE_NOT_ALLOWED2000136浏览器不允许使用麦克风
ERROR_MICROPHONE_NOT_READABLE2000137系统禁用麦克风或者麦克风被占用
ERROR_SERVER_BASE3000000服务端返回业务异常的错误基准
ERROR_SERVER_KICKED3110000账号被登录或被踢
ERROR_SERVER_UNAVAILABLE3110001服务异常
ERROR_MEDIA_BASE4000000媒体sdk返回异常的错误基准

License

The MIT License

1.9.4

2 years ago

1.9.3

2 years ago

1.9.2

3 years ago

1.9.1

3 years ago

1.9.0

3 years ago

1.8.2

3 years ago

1.8.1

3 years ago

1.8.0

3 years ago

1.7.0

4 years ago

1.6.6

4 years ago

1.6.5

4 years ago

1.6.4

4 years ago

1.6.3

4 years ago

1.6.2

4 years ago

1.6.1

4 years ago

1.6.0

4 years ago

0.1.0

5 years ago

0.0.11-beta.3

5 years ago

0.0.11-beta.2

5 years ago

0.0.11-beta.1

5 years ago

0.0.11

5 years ago

0.0.10

5 years ago

0.0.9

5 years ago

0.0.8

5 years ago

0.0.7

5 years ago

0.0.6

5 years ago

0.0.5

5 years ago

0.0.4

5 years ago

0.0.3

5 years ago

0.0.2

5 years ago

0.0.1

5 years ago