2010-12-21 7 views
1

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 패킷을 잘못 설정 했습니까? 어떤 도움이라도 대단히 감사합니다!

답변

0

나는 그 메시지를 보내는 피 호출자가 아니라 피 호출자에게 연락하려고하는 동안 보내야하는 메시지를 보내고있는 오픈 픽스라고 생각한다. 그리고 나는 당신이 그것을 위해 toheader를 설정하지 않았기 때문에 울리는 메시지가 보내지지 않고 있음을 확신합니다.

+0

다른 라이브러리를 사용하여 끝났지 만 올바른 의미로 표시 할 수 있습니다. 감사! – Andrey

+0

@Andrey 나는 아주 늦게 알고있다, 그러나 나는 지금 꼬집어있다. 결국 어떤 라이브러리를 사용 했습니까? JAIN SIP? –