Have ideas to improve npm?Join in the discussion! »

    aliyun-voip-web-sdk
    TypeScript icon, indicating that this package has built-in type declarations

    1.8.2 • Public • Published

    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_FAIL 1000100 mqtt连接失败
    ERROR_UPLOAD_TOKEN_FAIL 1000104 token上传失败
    ERROR_LOCAL_STOP 2000000 本地主动挂断
    ERROR_REMOTE_HANGUP 2000099 对端主动挂断
    ERROR_CALL_SELF 2000100 拨打自己
    ERROR_CALL_EMPTY 2000101 拨打电话为空
    ERROR_CALLEE_ALERTING_TIMEOUT 2000103 被叫时,振铃超时
    ERROR_REMOTE_REFUSE 2000106 主叫时,对端拒绝应答
    ERROR_REMOTE_CANCEL 2000107 被叫时,对端取消呼叫
    ERROR_NO_ANSWER 2000108 被叫无人接听
    ERROR_SERVICE_UNAVAILABLE 2000113 AlicomRTC服务不可用
    ERROR_LOCAL_DESTROY 2000116 本地主动销毁服务
    ERROR_TIME_OUT 2000102 joinChannel超时
    ERROR_NETWORK_INVALID 2000121 网络异常
    ERROR_MICROPHONE_NO_PERMISSION 2000130 麦克风无权限
    ERROR_MICROPHONE_NO_DEVICE 2000135 没有麦克风设备
    ERROR_MICROPHONE_NOT_ALLOWED 2000136 浏览器不允许使用麦克风
    ERROR_MICROPHONE_NOT_READABLE 2000137 系统禁用麦克风或者麦克风被占用
    ERROR_SERVER_BASE 3000000 服务端返回业务异常的错误基准
    ERROR_SERVER_KICKED 3110000 账号被登录或被踢
    ERROR_SERVER_UNAVAILABLE 3110001 服务异常
    ERROR_MEDIA_BASE 4000000 媒体sdk返回异常的错误基准

    License

    The MIT License

    Install

    npm i aliyun-voip-web-sdk

    DownloadsWeekly Downloads

    30

    Version

    1.8.2

    License

    MIT

    Unpacked Size

    532 kB

    Total Files

    6

    Last publish

    Collaborators

    • avatar
    • avatar
    • avatar