SipListener 인터페이스를 구현하는 클래스를 생성하여 JAIN-SIP 스택 (Android 디바이스 용)에서 이벤트를받습니다. 테스트를 위해 OpenSIP에 2 개의 장치를 연결하고 다른 장치를 호출하려고합니다. 타사 클라이언트를 사용하는 데 문제가 없습니다.JAIN-SIP RINGING 응답이 전송되지 않음
하나의 이상한 문제를 제외하고 모든 것이 기본 구현에서 잘 작동하는 것 같습니다. processRequest에서 INVITE 요청을 수신하면 RINGING 응답을 작성한 다음 OK 응답을 작성합니다. 문제는 (tcpdump에 따라) RINGING 응답이 결코 서버에 도착하지 않는다는 것입니다. INVITE 패킷이 수신 된 후, 디바이스는 TRYING 패킷을 보낸다 (나는 나의 코드에서 그렇게하지 않으므로 JAIN-SIP의 일부 여야한다). 그리고 그것을 OK 패킷으로 뒤 따른다. 나는 다양한 예제를 따라 그들은 모두이 라인을 따라 뭔가 제안하는 것 : 참고로
//This function gets called from processRequest
//Some initialization code removed to keep this short
private void processInvite(RequestEvent requestEvent)
{
ServerTransaction serverTransaction = requestEvent.getServerTransaction();
SipProvider sipProvider = (SipProvider) requestEvent.getSource();
Request request = requestEvent.getRequest();
//Create RINGING response
Response response = m_messageFactory.createResponse(Response.RINGING,
request);
//Add a contact header
Address contactAddress = m_addressFactory
.createAddress(m_username + " <sip:" + getLocalIpAddress() + ":" + m_sipPort + ">");
ContactHeader contactHeader = m_headerFactory.createContactHeader(contactAddress);
response.addHeader(contactHeader);
if (serverTransaction == null)
{
serverTransaction = sipProvider.getNewServerTransaction(request);
}
//Send RINGING response
//This never makes it to the server
serverTransaction.sendResponse(response);
//Create OK response
Response okResponse = m_messageFactory.createResponse(Response.OK, request);
ToHeader toHeader = (ToHeader) okResponse.getHeader(ToHeader.NAME);
toHeader.setTag("4321");
okResponse.addHeader(contactHeader);
//Send OK Response
//This makes it to the server
serverTransaction.sendResponse(okResponse);
}
가, 초대 헤더는 다음과 같이 :
INVITE sip:[email protected]:5060 SIP/2.0
Call-ID: [email protected]
CSeq: 20 INVITE
From: "Caller" <sip:[email protected]:5060>;tag=12345
To: "Callee" <sip:[email protected]:5060>
Via: SIP/2.0/UDP 10.x.x.10:5060;branch=z9hG4bKe45cd7919b5177a806ec1a9238b841f9393739
Max-Forwards: 70
Contact: "4321" <sip:[email protected]:5060>
Content-Length: 0
64.xxx가 OpenSIPs IP 10 인으로한다. xx10은 UAC의 IP입니다.
헤더가 누락되었거나 달리 RINGING 패킷을 잘못 설정 했습니까? 어떤 도움이라도 대단히 감사합니다!
다른 라이브러리를 사용하여 끝났지 만 올바른 의미로 표시 할 수 있습니다. 감사! – Andrey
@Andrey 나는 아주 늦게 알고있다, 그러나 나는 지금 꼬집어있다. 결국 어떤 라이브러리를 사용 했습니까? JAIN SIP? –