Re: [OpenSIPStack] Simple Sample for Subscribe
Brought to you by:
joegenbaclor
From: Martin H. <mar...@te...> - 2006-06-21 08:50:04
|
Hi, my subscribe works fine now, but how can I receive notifications from the server? Thanks Martin -----Urspr=FCngliche Nachricht----- Von: Joegen E. Baclor [mailto:jo...@pl...] Gesendet: Montag, 19. Juni 2006 12:02 An: Martin Hillmeier Cc: Opensipstack Mailing List (ope...@li...) Betreff: Re: [OpenSIPStack] Simple Sample for Subscribe Hi Martin, Subscribe and Notify will be part of the RFC3265Session* files. These files are yet to be checked into the CVS head when support for PUBLISH and PIDF are finished. I am expecting new development on this subject within the next couple of weeks. As for constructing and sending a SUBSCRIBE, I have attached a sample code that demonstrates creation and sending of SUBSCRIBE using the stack //////////////////////////////////////////////////////////////////////// ///////////////////// SIPStack sipStack; sipStack.AddTransport( SIPTransport::UDP, "", 5060); SIPURI uri( "sip:som...@ex..." ); PIPSocket::Address targetAddress; WORD targetPort; if( SIPTransport::Resolve( uri, targetAddress, targetPort ) ) { std::cerr << uri << " does not resolve to an IP Address" << std::endl; } SIPMessage subscribe; BOOL willUseProxy =3D FALSE; /// create the request line RequestLine requestLine; requestLine.SetMethod( "SUBSCRIBE" ); requestLine.SetRequestURI( uri.AsString() ); subscribe.SetStartLine( requestLine ); Via via; PIPSocket::Address viaHost; WORD viaPort; SIPTransportManager * transportManager =3D sipStack.GetTransportManager(); if( !transportManager->GetListenerAddress( SIPTransport::UDP, targetAddress, viaHost, viaPort )) return; via.SetAddress( viaHost.AsString() ); via.SetPort( viaPort ); via.SetBranch( ParserTools::GenBranchParameter() ); via.AddParameter( "rport", "" ); subscribe.AppendVia( via ); /// Set From header From from; SIPURI fromURI( "sip:so...@ex..." ); from.SetURI( fromURI ); from.AddParameter( "tag", ParserTools::GenTagParameter() ); subscribe.SetFrom( from ); /// Set To header To to; to.SetURI( uri ); subscribe.SetTo( to ); /// Set the call Id CallId callId; callId.SetHeaderBody( "call-id-123456" ); subscribe.SetCallId( callId ); /// Set the CSeq CSeq cSeq; cSeq.SetMethod( "SUBSCRIBE" ); cSeq.SetSequence( 4711 ); subscribe.SetCSeq( cSeq ); /// Set the contact SIPURI contactURI =3D fromURI; contactURI.SetHost( via.GetURI().GetHost() ); contactURI.SetPort( via.GetURI().GetPort() ); ContactURI contact( contactURI, "My Display Name" ); subscribe.AppendContact( contact ); Event event( "presence" ); subscribe.SetEvent( event ); TransactionId transactionId; sipStack.FindTransactionAndAddEvent( subscribe, transactionId, FALSE ); while( TRUE ) { SIPStackEvent * event =3D sipStack.ReadEvent(); if( event->GetType() =3D=3D SIPStackEvent::Final ) break; else if( event->GetType() =3D=3D SIPStackEvent::Message ) { SIPMessage msg =3D ((SIPMessageArrival*)event)->GetMessage(); if( !msg.IsRequest() ) { /// we got a response std::cout << msg << std::endl; if( msg.GetStatusCode() >=3D 200 ) break; } } } sipStack.Terminate(); //////////////////////////////////////////////////////////////////////// ////////////////////// Martin Hillmeier wrote: > Hi, > > can somebody give me a simple sample (few lines of code) how I can > send a SUBSCRIBE with opensipstack. I'm a newbie and have no idea how > to do. > > > Thanks in advance > > Martin Hillmeier > ---------------------------------------------------------------------- > -- > > _______________________________________________ > opensipstack-devel mailing list > ope...@li... > https://lists.sourceforge.net/lists/listinfo/opensipstack-devel > |