My isdn phone don't send the caller id: what I miss?

My isdn phone can call my sip phone, but no caller id is send. This is my configuration

dahdi_channels.conf


group=0,11
context=from-dahdi
switchtype = euroisdn
signalling = bri_net_ptmp
channel => 1-2
context = default
group = 63
group=0,12
context=from-dahdi
switchtype = euroisdn
signalling = bri_net_ptmp
channel => 4-5
context = default
group = 63
group=0,13
context=from-dahdi
switchtype = euroisdn
signalling = bri_net_ptmp
channel => 7-8
context = default
group = 63
group=0,14
context=from-dahdi
switchtype = euroisdn
signalling = bri_net_ptmp
channel => 10-11
context = default
group = 63

chan_dahdi.conf

[trunkgroups]
[channels]
language=it
context=local
switchtype=euroisdn
overlapdial=yes
signalling=bri_net_ptmp
usecallerid=yes
callwaiting=yes
usecallingpres=yes
callwaitingcallerid=yes
threewaycalling=yes
transfer=yes
canpark=yes
cancallforward=yes
callreturn=yes
context=local
echocancel=yes
channel => 1,2,4,5,7,8,10,11
echocancelwhenbridged=yes
group=1
callgroup=1
pickupgroup=1
                                                ; cause the given audio file to
                                                ; be played upon completion of
                                                ; an attended transfer to the
                                                ; target of the transfer.
immediate=no

extensions.conf

exten => 1796522,1,Set(CALLERID(all)=”My Name” <1796522>)
exten => 1796522,1,Dial(DAHDI/g12/${EXTEN})
exten => 1796522,n,Hangup()

exten => s,1,Answer()
exten => s,2,Dial(Local/${EXTEN},10,t,m)
exten => s,4,Hangup()

[local]
include => from-dahdi
exten => 1001,1,Dial(SIP/telefono1,20,Ttm)
same  => n,Hangup

exten => 7500,1,VoicemailMain(@mycontext)

exten => 600,1,Answer()
exten => 600,2,Playback(demo-echotest) ; Let them know what
exten => 600,3,Echo()                  ; Do the echo test
exten => 600,4,Playback(demo-echodone) ; Let them know it
exten => 600,5,Hangup()
exten => 511,1,Answer
exten => 511,n,MusicOnHold

What I miss?

First progress: in sip.conf i put the “fromuser” option which overwrite the callerid.
Removed the fromuser and now I can see the correct number, but still no caller id
in extensions.conf I had this

exten => 1003,1,Set(CALLERID(all)=”Joe Smith” <2095551212>)
exten => 1003,1,Dial(DAHDI/g14/${EXTEN},10)
exten => 1003,n,Hangup()

When I call from 1003 to 1001 or 1004 it show only “sip:1003…” but no caller id

Nothing to do with ISDN, although you do seem to be spewing out lots of threads for your ISDN phone, which should all be part of the original thread. This question only justifies a new thread if you remove the ISDN phone assumption.

You dialplan sets caller ID for calls to extension 1003. It has no effect on calls from device 1003. Device 1003 need not even have an extension.

To override the device provided caller ID, you need to specify it in the channel technology configuration file section for the originating device, or in a dialplan priority that is present for all extension in the context specified for the incoming device, although it can be more complex, as you could use conditional dialplan to recognize which device originated the call.

From a previous question, as well, I think you really need to get a good understanding of Asterisk dialplans before complicating things with unusual devices.

1 Like

Finally I found a workaround. Using the db

exten => _X.,1,GotoIf(${DB_EXISTS(cidname/${CALLERID(num)})}?:nocidname)
exten => _X.,n,Set(CALLERID(name)=${DB(cidname/${CALLERID(num)})})
exten => _X.,n(nocidname),Dial(local/${EXTEN}@local,10,t,m)
exten => _X.,n,Hangup()

I insert in the db the name and the number

database put cidname 1003 "Phone Isdn"

And works fine, at least for sip phones

Another solution even better is to use “Execif”

exten => 1004,1,ExecIf($["${CALLERID(num)}" = "1003"]?set(CALLERID(all)=My company<123456>))

or better use a gosub function wich for every phone subsitute the callerid.

[mygosub]
exten = s,1,NoOp()
same => n,ExecIf($["${CALLERID(num)}" = "1003"]?set(CALLERID(all)=SoftPhone Windows<123456>))
same => n,ExecIf($["${CALLERID(num)}" = "1002"]?set(CALLERID(all)=Isdn phone 1 <5678910>))
same => n,Return()

the nice thing is I was thinking my system doesn’t working because I cannot see the name “isdn phone 1” or " Windows phone" on my isdn phone display, now I think the isdn phone cannot see the name on display, I have tested it, if I substitute the number 1234… with an alphanumeric string return me “unknown” on both isdn phones, I think the isdn phones can display also the alphanumeric strings on display as the ip phones did, I was wrong.
But at least I understand a little the functions of dialplan, is like a script language.