Summary:ASTERISK-07535: CALLERID on attended transfers
Reporter:k-egg (k-egg)Labels:
Date Opened:2006-08-15 05:11:47Date Closed:2011-06-07 14:08:13
Versions:Frequency of
Description:This is all internal no extern line is used.

Phone1 calls Phone2
Phone2 makes an attended tranfer to Phone3.
Callerid(num) contains not the Callerid of Phone2 neither Phone1, but the extension Phone2 was called from, and in my case this looks like this:

1)exten => s-intern,2,Macro(stdexten,${DEST},intern)

2)exten => s,1,NoOp(#1 Callerid = ${CALLERID(num)})
3)exten => s,11,Dial(${DEST})

in 3) phone2 is called, and when phone2 makes an atxfer (which also runs thru the steps 1)2)3) )  to phone3, callerid(num) is s-intern, i.e. phone 3 sees "s-intern" as caller.

Comments:By: Joshua C. Colp (jcolp) 2006-08-15 09:38:45

What dial options are you using?

By: k-egg (k-egg) 2006-08-15 09:40:13

max  t,T, or r  no "o"

By: Joshua C. Colp (jcolp) 2006-08-15 09:42:18

I need to see the console output, plus whether you are doing the attended feature in Asterisk or on your phone.

By: k-egg (k-egg) 2006-08-15 09:51:29

console output: (i think it was nearly unreadable to you, so i cut some parts out, but only wher the <snip> is. everything else is from the original "scrolldown")

  -- Called 1/221
   -- mISDN/1-u12 is ringing
   -- mISDN/1-u12 answered mISDN/8-1
   -- Started music on hold, class 'default', on mISDN/8-1
   -- Playing 'pbx-transfer' (language 'de')
   -- Executing waitfordigits("Local/116@isdn-nt-1-2daa,2", "3000|20|addexten") in new stack
You passed timeout:3000 maxnum:20 addexten:1 control:0
Overwriting extension:116 with new Number: 116
Not Sending any control  to Channel 116

   -- Executing Answer("Local/116@isdn-nt-1-2daa,2", "") in new stack
   -- Executing SayDigits("Local/116@isdn-nt-1-2daa,2", "4") in new stack
   -- Playing 'digits/4' (language 'en')
   -- Executing NoOp("Local/116@isdn-nt-1-2daa,2", "CALLERID(num) = s-intern") in new stack
   -- Executing NoOp("Local/116@isdn-nt-1-2daa,2", "DEST is 116") in new stack
   -- Executing NoOp("Local/116@isdn-nt-1-2daa,2", "EXTEN is s-AT") in new stack
   -- Executing NoOp("Local/116@isdn-nt-1-2daa,2", "CDR src =  s-intern") in
new stack


   -- Executing Dial("Local/116@isdn-nt-1-2daa,2", "Zap/6r2|15|tTr") in new stack
   -- Called 6r2
   -- Zap/6-1 is ringing
   -- Zap/6-1 is ringing
   -- Zap/6-1 is ringing

and i use atxfer from res_features, ahm features.conf, if you asked this in part 2 of your question.

By: Joshua C. Colp (jcolp) 2006-08-16 11:02:01

And if you do use the 'o' option? I think what you're running into is that after the device is called (mISDN in your case) then the callerid gets changed to the extension, so when you go to do an attended transfer via atxfer in features.conf, it uses that instead.

By: Joshua C. Colp (jcolp) 2006-09-05 15:43:58

No feedback so suspended for now.

By: k-egg (k-egg) 2006-09-06 08:30:28

sry, was busy on other things...
will give feedback either today or tomorrow. but for sure this week!

By: k-egg (k-egg) 2006-09-07 04:24:41

okay, i tested the "o", but this doesn't make me happy, as the callerid of the
transfered caller is shown and not the caller who is actually calling.
i.e the callerid from Phone1

when i get everything right, with no "o"-Option it should be the CID from Phone2.
But it is something different.

From my dialplan:

exten => _X.,1,Set(DEST=${EXTEN})
exten => _X.,2,GotoIf($["${EXTEN:0:1}"="0"]?s-extern,1:s-intern,1)

exten => s-extern,1,Macro(dial_extern,${DEST:1})
exten => s-intern,1,Macro(stdexten,${DEST},intern)

what Phone 3 gets in his display is s-intern

By: k-egg (k-egg) 2006-09-08 03:17:09

yesterday i read thru the output of "show Applications" on the cli, and there
was an application i didn't know about. i wondered if this thing could make me

and yes it does make me happy! Why? i dont't have to use a goto and then call a Macro , because the Application i read about yesterday is called "MacroIf".

so i cann call my Macros from the extension where they are originated . i.e

exten => _X.,1,Set(DEST=${EXTEN})
exten => _X.,2,MacroIf($["${EXTEN:0:1}"="0"]? \

and now PhoneC shows the CID of PhoneB.

Hmm this is not quite correct, Phone C shows the CID PhoneA has
dialled to reach PhoneB.

So if PhoneA is an external caller, the CID presented to PhoneC
is the external number of PhoneB.

By: Serge Vecher (serge-v) 2006-10-03 16:16:36

ok, so what do we do here?

By: k-egg (k-egg) 2006-10-04 02:01:21

not sure for the moment, did sone dialplan magic to handle this,
and i think a dial(local/<dest>) was my solution... not nice, but.
so to my point of view you can close that thing.