目前,市场上关于开源的SIP项目很多,绝大部分使用的是C语言开发,但是C语言在互联网应用部署方面有不少局限性。最近几年,Go语言比较火,在互联网部署开发方面突飞猛进,基于Go语言的很多应用也应运而生。
sipgo是一个基于GO语言开发的SIP协议支持库,为SIP服务提供更快速的SIP服务。它附带了经过优化,用于快速解析的SIP协议栈(RFC 3261|RFC3581)。
基于sipgo开发的新业务库,包括:
diago:
github.com/emiago/diago: 完整的VOIP库/框架,带有媒体协议栈
sipgox
github.com/emiago/sipgox: 用于快速构建SIP电话或SIP助手(建议切换到Diago),支持命令行执行注册,Invite等命令。
使用方式,通过Go直接获取:
go get github.com/emiago/sipgo
支持的协议包括目前主流的:
- UDP
- TCP
- TLS
- WS
- WSS
SIP应用示例包括:
- Stateful proxy
- Register with authentication
- RTP echo with sipgox
基于SIPgo开发的GOPHONE, 软电话,通过命令呼叫:
gophone dial -media=audio sip:alice@sip.dev.server:5060
此软电话还支持windows环境,用户直接下载安装,linux版本参考安装命令。更多使用命令:
$>gophone -hUsage of gophone command:
Commands: dial Dial destination. answer Answer call register Send register request only without answer.
-t string Transport udp|tcp|tls|ws|wss (default "udp")
Enviroment variables: LOG_LEVEL=debug|info|error Log level for output. Default=info LOG_FORMAT=json|console Log format for output. Default=console LOG_NOCOLOR Disable color SIP_DEBUG LOG SIP traffic. Used with LOG_LEVEL=debug RTP_DEBUG LOG RTP traffic. Used with LOG_LEVEL=debug RTCP_DEBUG LOG RTCP traffic. Used with LOG_LEVEL=debug GOPHONE_MEDIA=<same as -media> Sets default media in case of calls
gophone is CLI SIP softphone powered by sipgo library.To find more information about tool and licences visithttps://github.com/emiago/gophone
Answer:gophone answer -l 127.0.0.200:5060 gophone answer -l 127.0.0.200:5060 -code 486 -reason Busy
Answer with register:gophone answer -ua alice -username alice1234 -password 1234 -register "127.0.0.1:5060"
Dial:gophone dial sip:1234@127.0.0.200:5060gophone dial -sipheader="X-AccountId:test123" sip:1234@server:5060
Register:gophone register -username=sipgo -password=1234 127.0.0.1:5060
With digest authentication:gophone dial -ua alice -username=alice1234 -password=1234 "sip:echo@server:5060"
With media:gophone dial -media=audio sip:1234@localhost:5060gophone dial -media=mic sip:1234@localhost:5060gophone answer -media=speaker
With transcribe:gophone dial -media=log -transcribe sip:1234@localhost:5060
With DTMF:gophone dial -dtmf=79 -dtmf_delay=8s -dtmf_digit_delay=1s -media=speaker sip:1234@localhost:5060
With INTERACTIVE mode:echo "wait=3s; dtmf=123; hangup;" | gophone dial -i -media=speaker sip:demo@127.0.0.1:5060
SIPGo以及基于此项目开发的支持库链接:
https://emiago.github.io/diago/
https://github.com/emiago/sipgo
版权声明:本文内容转自互联网,本文观点仅代表作者本人。本站仅提供信息存储空间服务,所有权归原作者所有。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至1393616908@qq.com 举报,一经查实,本站将立刻删除。