Open BRIDGE-AI opened 3 months ago
보낸 사람: 김 형준 <hjoon.kim@bridgelabs.io>
날짜: 2024년 7월 8일 월요일 오후 5:16
받는 사람: "(주)처음넷" <info@fn070.com>
주제: [BRIDGE AI] 소프트폰 통화 발신 방법 문의
안녕하세요.
BRIDGE AI 김형준입니다.
저희가 개발한 python기반 pbx에서 통화 발신을 테스트 중인데, 잘 안돼서 기술 문의 드려요.
사용중인 회선 : 07076830773
저희가 보유중인 07076830773 번호에 REGI 한 후에 01027667137로 발송을 위해서 아래 패킷을 보내는데,
타겟 번호에 벨이 울리지 않고, 회신되는 패킷도 없는 것 같습니다.
아마 발신을 위한 패킷 구성이 잘못 되어서 그런 것으로 의심 되는데, 혹시 확인해주실 수 있을까요?
ps. 수신은 잘 되고 있습니다.
INVITE sip:01027667137@211.233.26.247 SIP/2.0
Via: SIP/2.0/UDP 0.0.0.0:5060;branch=z9hG4bK4e07408562bedb8b60ce05c1d
Max-Forwards: 70
Contact: <sip:07076830783@0.0.0.0>
To: <sip:01027667137@211.233.26.247>
From: <sip:07076830783@0.0.0.0>;tag=35663387
Call-ID: 4b227777d4dd1fc61c6f884f48641d02@0.0.0.0:5060
CSeq: 1 INVITE
Allow: INVITE, ACK, BYE, CANCEL, OPTIONS, NOTIFY, REGISTER, MESSAGE, SUBSCRIBE, REFER
Content-Type: application/sdp
User-Agent: pyVoIP 2.0.0a5
Content-Length: 220
v=0
o=pyVoIP 1 3 IN IP4 0.0.0.0
s=pyVoIP 2.0.0a5
c=IN IP4 0.0.0.0
t=0 0
m=audio 10638 RTP/AVP 0 101
a=rtpmap:0 PCMU/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15
a=ptime:20
a=maxptime:150
a=sendrecv
감사합니다.
보낸 사람: "(주)처음넷" <info@fn070.com>
날짜: 2024년 7월 9일 화요일 오전 9:21
받는 사람: 김 형준 <hjoon.kim@bridgelabs.io>
주제: Re: [BRIDGE AI] 소프트폰 통화 발신 방법 문의
안녕하세요. 처음넷 입니다.
[그림]
Contact 와 From에 IP가 0.0.0.0으로 잡혀있어 메시지를 보낸 후 받을 라우팅이 안되어 있는것으로 판단됩니다.
보낸 사람: 김 형준 <hjoon.kim@bridgelabs.io>
날짜: 2024년 7월 10일 수요일 오후 8:41
받는 사람: "(주)처음넷" <info@fn070.com>
주제: Re: [BRIDGE AI] 소프트폰 통화 발신 방법 문의
안녕하세요~
회신 감사합니다!
아주 큰 도움이 됩니다!
패킷 문제가 아니고, 네트워크 관련 코드에 문제가 있나 싶어서 확인하느라 인사가 늦었어요. (_ _)
외부 네트워크에서 netcat 명령을 사용해서 udp로 위에서 수정한 부분의 IP로 패킷을 보내봤는데 받아지더라고요.
알려주신 내용을 참고해서 패킷을 아래와 같이 수정해 보았는데, 여전히 이 패킷에 대한 응답 패킷은 없는 것 같아서 다시 한 번 문의 드려도 될까요?
INVITE sip:01027667137@211.233.26.247 SIP/2.0
Via: SIP/2.0/UDP 0.0.0.0:5060;branch=z9hG4bK4e07408562bedb8b60ce05c1d
Max-Forwards: 70
Contact: <sip:07076830783@43.202.127.199>
To: <sip:01027667137@211.233.26.247>
From: <sip:07076830783@43.202.127.199>;tag=0e192597
Call-ID: 4b227777d4dd1fc61c6f884f48641d02@0.0.0.0:5060
CSeq: 1 INVITE
Allow: INVITE, ACK, BYE, CANCEL, OPTIONS, NOTIFY, REGISTER, MESSAGE, SUBSCRIBE, REFER
Content-Type: application/sdp
User-Agent: pyVoIP 2.0.0a5
Content-Length: 220
v=0
o=pyVoIP 1 3 IN IP4 0.0.0.0
s=pyVoIP 2.0.0a5
c=IN IP4 0.0.0.0
t=0 0
m=audio 14531 RTP/AVP 0 101
a=rtpmap:0 PCMU/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15
a=ptime:20
a=maxptime:150
a=sendrecv
이 주소는 아래의 사용중인 회선 0773에 대해 트렁크 레지 등록되어 있는 IP입니다.
발신을 위해 보낸 위의 패킷에서 잘못된 부분이 있는지 다시 한 번 봐주실 수 있을까요?
혹은 위의 내용으로 211.233.26.247에서 로그 확인이 가능하다면 왜 발신 연결이 안되는지 알 수 있지 않을까 싶어요.
현재 개발에 사용중인 회선 : 07076830773
ps. 지난번 질문에서 말씀드린 회선은 서비스 중인 회선이고, 지금 개발에 사용중인 회선이랑 달라서 다시 공유 드려요~
업무가 바쁘신 줄 알면서 염치 불구하고 어려운 기술 문의 드립니다. (_ _)
감사합니다.
보낸 사람: "(주)처음넷" <info@fn070.com>
날짜: 2024년 7월 11일 목요일 오전 9:16
받는 사람: 김 형준 <hjoon.kim@bridgelabs.io>
주제: Re: [BRIDGE AI] 소프트폰 통화 발신 방법 문의
안녕하세요. 처음넷 입니다.
당사 Proxy 서버(211.233.26.247) 로 인입된 INVITE 메세지는 없으며, 트렁크 REGISTER 메세지만 있습니다.
보내는 SIP메세지에 문제가 있어도 ACK, BYE, CANCEL 등의 메세지를 사용중이신 장비에서 받아야 정상적으로 Proxy 서버에 인입이 된 것으로
사용중이신 방화벽이나 교환기 또는 G/W 장비 확인 하시기 바랍니다.
감사합니다.
INVITE sip:07076830783@0.0.0.0:5060;user=phone SIP/2.0
Via: SIP/2.0/UDP 211.233.26.247:5060;branch=z9hG4bK2a6aaa6f_102
Via: SIP/2.0/UDP 3.39.185.227:5060;branch=z9hG4bK2a6aaa6f
From: <sip:01027667137@211.233.26.247>;tag=813ff0e7fb8caac457ae6ed02f1ea252
To: <sip:07076830783@0.0.0.0>
Record-Route: <sip:211.233.26.247;lr>
Call-ID: 211.233.26.247_7fe3e83612b58e74706a8ddc6fda768e@3.39.185.227
CSeq: 102 INVITE
Contact: <sip:01027667137@211.233.26.247:5060;user=phone>
Max-Forwards: 69
Content-Type: application/sdp
Content-Length: 200
v=0
o=root 876702393 876702393 IN IP4 211.233.26.249
s=GP ARS 1.0
c=IN IP4 211.233.26.249
t=0 0
m=audio 20560 RTP/AVP 0 8
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=maxptime:150
a=sendrecv
0.0.0.0
대신 43.202.127.199
로 맞춘 상태
INVITE sip:01027667137@211.233.26.247 SIP/2.0
Via: SIP/2.0/UDP 43.202.127.199:5060;branch=z9hG4bK4e07408562bedb8b60ce05c1d
From: <sip:07076830783@43.202.127.199>;tag=00ae3c2e
To: <sip:01027667137@211.233.26.247>
Call-ID: 4b227777d4dd1fc61c6f884f48641d02@0.0.0.0:5060
CSeq: 1 INVITE
Allow: INVITE, ACK, BYE, CANCEL, OPTIONS, NOTIFY, REGISTER, MESSAGE, SUBSCRIBE, REFER
User-Agent: pyVoIP 2.0.0a5
Contact: <sip:07076830783@43.202.127.199>
Max-Forwards: 70
Content-Type: application/sdp
Content-Length: 220
v=0 o=pyVoIP 1 3 IN IP4 0.0.0.0 s=pyVoIP 2.0.0a5 c=IN IP4 0.0.0.0 t=0 0 m=audio 10983 RTP/AVP 0 101 a=rtpmap:0 PCMU/8000 a=rtpmap:101 telephone-event/8000 a=fmtp:101 0-15 a=ptime:20 a=maxptime:150 a=sendrecv
패킷 비교에서 content body의 `o=pyVoIP 1 3 IN IP4 0.0.0.0`, `c=IN IP4 0.0.0.0` 부분 IP주소가 외부 접근 가능주소 여부가 다른 부분을 확인하여 테스트 해 본 결과
c=IN IP4 0.0.0.0 부분에 외부 접근 가능한 `43.202.127.199`로 세팅하니 전화가 걸려 오는 것으로 확인됨
pyVoIP/SIP/client.py
의 def gen_invite(self, ...) -> str:
에서 body의 c=
를 작성하는 코드에서 기존 self.bind_ip
대신 callback_ip = "43.202.127.199"
를 사용하도록 수정
VoIPPhone생성시 callback_ip
를 받아서 가지고 있다가 SIPClient.invite()
할 때 넘겨서 SIPClient.gen_invite()로 전달
brief.