Summary:ASTERISK-03347: PrivacyManager Doesn't Intercept Calls
Reporter:velochap (velochap)Labels:
Date Opened:2005-01-25 10:39:02.000-0600Date Closed:2011-06-07 14:10:15
Versions:Frequency of
Description:PrivacyManager is not intercepting calls with the CallerID field set to Unavailable.  Calls are being placed by using *67 before dialing the DID on Asterisk which in turn disabled CallerID display and makes the call private.

Calls are arriving via IAX2 from VoicePulse Connect and the IAX2 debug does confirm that the CallerID is indeed arriving as Unavailable.   However, PrivacyManager executes and determines "CallerID Present: Skipping"

PrivacyManager is determining that the callerid is present even when it is being relayed as Unavailable.  The correct operation would be for PrivacyManager to intercept the call when is sees Unavailable in the CallerID field.

Debugs are console output are included.  



Rx-Frame Retry[No] -- OSeqno: 000 ISeqno: 000 Type: IAX     Subclass: NEW    

  Timestamp: 00011ms  SCall: 00335  DCall: 00000 []

  VERSION         : 2

  CALLED NUMBER   : 7326556755

  CALLING NUMBER  : Unavailable                                <**************************************

  CALLING NAME    : Unavailable                                  <**************************************

  LANGUAGE        : en

  USERNAME        : voicepulse-in-01

  FORMAT          : 4

  CAPABILITY      : 1086

  ADSICPE         : 2

  DATE TIME       : 171511810

Tx-Frame Retry[000] -- OSeqno: 000 ISeqno: 001 Type: IAX     Subclass: AUTHREQ

  Timestamp: 00015ms  SCall: 00001  DCall: 00335 []


  CHALLENGE       : 123344711

  USERNAME        : voicepulse-in-01

Rx-Frame Retry[No] -- OSeqno: 001 ISeqno: 001 Type: IAX     Subclass: AUTHREP

  Timestamp: 00049ms  SCall: 00335  DCall: 00001 []

  RSA RESULT      : Sc+mxi0AL1JdD4Gh3s8Y5LJ13MrLm4DNNMDkCV2a5nSwuPx9djbCr2YmJO7eoxCbrP+077fdeMhpfXo

   -- Accepting AUTHENTICATED call from, requested format = 4, actual format = 4

   -- Executing PrivacyManager("IAX2[voicepulse-in-01@]/1", "") in new stack

Tx-Frame Retry[000] -- OSeqno: 001 ISeqno: 002 Type: IAX     Subclass: ACCEPT

  Timestamp: 00051ms  SCall: 00001  DCall: 00335 []

  FORMAT          : 4

   -- CallerID Present: Skipping              <**************************************

   -- Executing Dial("IAX2[voicepulse-in-01@]/1", "SIP/5001") in new stack

   -- Called 5001



exten => 7326556755,1,PrivacyManager

exten => 7326556755,2,DIAL(SIP/5001)

exten => 7326556755,3,Voicemail(u5001)

exten => 7326556755,4,Hangup

Comments:By: twisted (twisted) 2005-01-28 19:33:00.000-0600

This is becuase _technically_ the Caller*ID *IS* set, it's set to Unavailable.  You could always hanlde this yourself in the dialplan, like so:

exten => s,1,GotoIf($[${CALLERIDNAME} != Unavailable]?5)
exten => s,2,NoOp(Current Callerid = ${CALLERID})
exten => s,3,SetCallerid(""<>)
exten => s,4,NoOp(New Callerid = ${CALLERID})
exten => s,5,PrivacyManager()

I can confirm this works.

By: velochap (velochap) 2005-01-28 20:41:31.000-0600

Ok, interesting workaround.   Would it be also possible to change the code to catch an "Unavailable" setting as well?   Setting the CLID to "Unavailable" is pretty standard when someone hits *67

I think the change would be:  (I am not a C programmer so just taking a stab..)

if (chan->callerid)
               if (option_verbose > 2)
                       ast_verbose (VERBOSE_PREFIX_3 "CallerID Present: Skipping\n");

if (chan->callerid) or (chan[0]!="Unavailable")
               if (option_verbose > 2)
                       ast_verbose (VERBOSE_PREFIX_3 "CallerID Present: Skipping\n");

By: nick (nick) 2005-01-28 20:56:38.000-0600

That would be a hard-coded solution to what esentially is a highly variable configuration problem...

By: velochap (velochap) 2005-01-28 20:59:40.000-0600

I took your idea and tweaked it a bit to get it to work.  I have found that this works:

exten => s,1,GotoIf($[${CALLERIDNUM} != Unavailable]?4)
exten => s,2,SetCIDNum()
exten => s,3,SetCIDName()
exten => s,4,PrivacyManager()
exten => s,5,DIAL(SIP/5001)
exten => s,6,Voicemail(u5001)
exten => s,7,Hangup

Since "Unavailable" is pretty standard when someone is trying to block their CallerID and PrivacyManager's intention is to intercept these calls I still think it would be good to test for "Unavailable" or "unavailable" in the CALLERIDNUM field within the code itself.

By: velochap (velochap) 2005-01-28 21:01:55.000-0600

Ok, if the consensus is to leave it as is...I'll add a config note to the Wiki for this.

By: Mark Spencer (markster) 2005-01-28 21:45:48.000-0600

I don't see this as a bug...

By: Brian West (bkw918) 2005-01-28 22:40:57.000-0600

Not a bug...