SIP.js 0.20.0版本简单Demo
SIP.js的0.20.0版本是使用typescript开源的JavaScript库
-
首先从npm上加载SIP.js
npm install sip.js
-
可以根据习惯使用ts或js来开发
<script lang="ts"> import { UserAgent, UserAgentOptions, Registerer, Inviter, SessionState } from sip.js const transportOptions = { server: "wss://xxxxx.xxxx" // SIP Websocket 服务器的 Websocket URL } const uri = UserAgent.makeURI("sip:分机号@服务器地址") const userAgentOptions: UserAgentOptions = { authorizationPassword: , // 分机密码 authorizationUsername: , // 分机号 transportOptions, uri } const userAgent = new UserAgent(userAgentOptions) // 创建 SIP 用户代理 const registerer = new Registerer(userAgent) userAgent.start() // 连接 .then(() => { registerer.register() // 注册,向服务器进行身份验证并接收消息 const target: any = UserAgent.makeURI("sip:被叫号码@服务器地址") const inviter = new Inviter(userAgent, target); inviter.invite() // 拨号 }) </script>
-
挂断电话,如果是使用的简单用户,那么直接调用simpleUser.hangup()即可,使用完全API的用户,需要判断下通话状态,接通前的建立阶段和接通后的确立阶段挂断电话调用的方法不同
inviter.stateChange.addListener((state: SessionState) => { switch (state) { case SessionState.Initial: console.log(SessionState.Initial) // 最初 break; case SessionState.Establishing: console.log(SessionState.Establishing) // 建立 break; case SessionState.Established: console.log(SessionState.Established) // 确立 break; case SessionState.Terminating: console.log(SessionState.Terminating) // 终止 case SessionState.Terminated: console.log(SessionState.Terminated) // 结束 break; default: throw console.log(`Unknown session state.`) } })
-
建立阶段使用 inviter.cancel(),确立阶段使用inviter.bye() 简单用户的demo,简单用户的方法都很简单直接调用方法即可
<script lang="ts"> import { SimpleUser,SimpleUserOptions,SimpleUserDelegate} from sip.js/lib/platform/web import { UserAgent} from sip.js let displayName = "分机号" let webSocketServer = "wss://Websocket URL" let target = "sip:被叫号码@服务器地址" let uri = UserAgent.makeURI("sip:分机号@服务器地址") let simpleUserOptions: SimpleUserOptions = { media: { remote: { audio: document.getElementById(audio) } }, userAgentOptions: { displayName, authorizationPassword: , authorizationUsername: , uri } } let simpleUser = new SimpleUser(webSocketServer,simpleUserOptions) /* 连接 */ simpleUser.connect() /* 注册 */ simpleUser.register() /* 拨号 */ simpleUser.call(target,{ inviteWithoutSdp: false}) /* 挂断 */ simpleUser.hangup() /* 断开连接 */ simpleUser.disconnect() </script>
-
SIP.js官方文档: GitHub地址: 可参考的同类库: JsSIP官方文档:
上一篇:
IDEA上Java项目控制台中文乱码