< Previous by Date Date Index Next by Date >
< Previous in Thread Thread Index Next in Thread >

RE: [reSIProcate] Cisco DTMF


I’m not sure what your setup is. When my client deals with Cisco CallManager directly, I have to subscribe first for KPML event in order to receive the notification from CallManager. I did have to modify DUM to make subscribe/notify work though. The code base of DUM I have, which is a couple of months old, didn’t handle the incoming subscription request of KPML event, if I recalled correctly.

 

Hong

 


From: Matt Porter [mailto:mporter@xxxxxxxxxxxxx]
Sent: Friday, April 14, 2006 2:37 PM
To: resiprocate-devel@xxxxxxxxxxxxxxxxxxx
Subject: [reSIProcate] Cisco DTMF

 

In the past I have made some modifications to the DUM in order to support dtmf using sip NOTIFY.  The changes were pretty straight forward before, but now i am trying to sync up with the latest codebase, and wanted to see if maybe someone out there had a better way to handle it.

 

just to quickly explain the way it works. When you receive an INVITE from the gateway it will have a Call-Info header.

if your final 200 response to the invite contains that Call-Info then NOTIFY will be used for DTMF instead of the rtp media stream.

 

So the stack has to be extended so you can receive unsoliticited NOTIFY messages.

Im a little confused now where the best place to make this change is. it used to be done in Dialog.cxx.. but the NOTIFY handling has changed somewhat.

 

These were the 3 changes i had in the older codebase to support this ( probably a couple months old ).

 

void
DialogUsage::send(SharedPtr<SipMessage> msg)
{
   //if (msg->isRequest())           <-----  !!!!  took this out, because i need to add the "Call-Info" header !!!!
   {
      // give app an chance to adorn the message.
      onReadyToSend(*msg);
   }
   mDialog.send(msg);
}

 

class InviteSessionHandler
{

......existing code.............

 //!! Added this !!  (return 0, if you like the message)
 virtual int onUnsolicitedNotify(InviteSessionHandle,const SipMessage& msg){ return -1; }

}

 

void
Dialog::dispatch(const SipMessage& msg)

 

 

......existing code.............

 

  case NOTIFY:

 

   ......existing code.............

 

    //last chance to let the app decide if i likes this NOTIFY

  if( mDum.mInviteSessionHandler->onUnsolicitedNotify( mInviteSession->getSessionHandle(), msg) != 0 )
  {
         SipMessage response;
         makeResponse(response, msg, 406);
        send(response);
  }