🎩 You're Invited:Meet the Socket team at Black Hat in Las Vegas, August 3-6.RSVP
Sign In

aliyun-voip-web-sdk

Package Overview
Dependencies
Maintainers
3
Versions
30
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

aliyun-voip-web-sdk

阿里云 融合通信 VoIP SDK

latest
npmnpm
Version
1.9.4
Version published
Maintainers
3
Created
Source

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

Keywords

ARTC

FAQs

Package last updated on 22 Nov 2021

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts