Re: [OpenSIPStack] Simple Sample for Subscribe
Brought to you by:
joegenbaclor
|
From: Joegen E. B. <jo...@pl...> - 2006-06-21 11:16:48
|
Hi Martin,
My advice is you use the UserAgent class instead of the SIPStack class
and implement your own UserAgent::ProcessEvent(). Checkout
OpenSBC::ProcessEvent() for a sample implementation. OpenSBC is a
Proxy/Registrar UA.
Joegen
Martin Hillmeier wrote:
> Hi,
>
> my subscribe works fine now, but how can I receive notifications from
> the server?
>
> Thanks
> Martin
>
>
> -----Ursprüngliche 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 = 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 =
> 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 = 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 = sipStack.ReadEvent();
> if( event->GetType() == SIPStackEvent::Final )
> break;
> else if( event->GetType() == SIPStackEvent::Message )
> {
> SIPMessage msg = ((SIPMessageArrival*)event)->GetMessage();
> if( !msg.IsRequest() )
> {
> /// we got a response
> std::cout << msg << std::endl;
> if( msg.GetStatusCode() >= 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
>>
>>
>
>
>
>
>
>
|