我正在尝试使用 asterisk 服务器为我的本地主机实现 SIP 呼叫,并在成功后进一步在生产中实现。 我面临的问题是,当我尝试将呼叫连接到第二个用户时,呼叫被拨出,另一个人能够接听电话,但两端接听后都没有声音。没有声音,没有噪音,一片空白。分享我的配置文件如下:
使用https://github.com/christoofar/asterisk。 sip.conf:
[starcom]
type=peer
host=173.193.144.207
context=starcom-in
insecure=port
disallow=all
allow=ulaw
qualify=yes
dtmfmode=rfc2833
sendrpid=yes
[general]
nat=auto_force_rport
directmedia=no
context=public
allowoverlap=no
udpbindaddr=0.0.0.0
;tcpenable=yes
;tcpbindaddr=0.0.0.0
transport=udp
srvlookup=yes
disallow=all
allow=ulaw
debug=yes
externip=172.17.0.1
localnet=10.0.0.32/255.255.255.0
[user1]
type=friend
secret=12345
host=dynamic
username=user1
context=from-internal
[user2]
type=friend
secret=12345
host=dynamic
username=user2
context=from-internal
扩展.conf:
[public]
exten => 1000,1,Dial(SIP/user1) ; Call user1 when dialing 1000
exten => 1001,1,Dial(SIP/user2) ; Call user2 when dialing 1001
这些是星号服务器的日志:
= Using SIP RTP CoS mark 5
-- Executing [1000@public:1] Dial("SIP/user2-0000000a", "SIP/user1") in new stack
== Using SIP RTP CoS mark 5
-- Called SIP/user1
-- SIP/user1-0000000b is ringing
-- SIP/user1-0000000b answered SIP/user2-0000000a
-- Channel SIP/user1-0000000b joined 'simple_bridge' basic-bridge <5eacb834-c3ef-48cc-955c-de6c93db94f2>
-- Channel SIP/user2-0000000a joined 'simple_bridge' basic-bridge <5eacb834-c3ef-48cc-955c-de6c93db94f2>
[Mar 27 06:24:01] WARNING[51]: chan_sip.c:4126 retrans_pkt: Retransmission timeout reached on transmission JMGAQqnwzo for seqno 21 (Critical Response) -- See https://wiki.asterisk.org/wiki/display/AST/SIP+Retransmissions
Packet timed out after 32000ms with no response
[Mar 27 06:24:01] WARNING[51]: chan_sip.c:4150 retrans_pkt: Hanging up call JMGAQqnwzo - no reply to our critical packet (see https://wiki.asterisk.org/wiki/display/AST/SIP+Retransmissions).
在应用程序端(Android)我使用 linphone sdk 并创建远程地址为 -> remoteAddress = Factory.instance().createAddress("sip:1000@"+domain);
谁能帮我看看我做错了什么。
双方的通话都正常,但双方都没有声音,完全空白。 另外,我每次尝试时,通话都会在 31 秒后自动断开。
任何解决方案,有人遇到过这个问题吗?
可能是因为您无法在同一个 5060 端口上运行两个系统。至少你必须在任何一个端口切换并调用 127.0.0.1:5061
您还可以选择添加另一个环回 IP,例如 127.0.0.2 并调用该 IP。
我建议您更多地了解 TCP/IP 和 UDP 堆栈以及为什么这是不可能的。