Michael Higgins
2009-Mar-19 19:53 UTC
[asterisk-users] Can I tell if a call picked up on PSTN extension... for example?
Don't know enough to properly term the problem I'm seeing... sorry if subject appears vague. And I have other questions too, but "Newbie Help Wanted" isn't exactly more specific... ;-) My setup, intended for testing and all, "*" version 1.6.0.6, dahdi with an X100p clone. Regular phone line provides PSTN access with one port (and my DSL). Calls come in and are passed to 'linphone' on a laptop inside my local network. Everything works great with IAX2 and SIP peers, in that, calls end and linphone reports 'call terminated', or whatever. All *so* very cool! '-) But, when someone calls on the land line, there are issues. First, I admit to having virtually no clue what I'm doing... but, here goes: When the caller hangs up, linphone doesn't "know". This is an annoyance, more than anything, perhaps, as I'm not sure yet if it shows busy on the other end. And, to the "Subject:", when a call comes in, if someone should pick up on a phone attached on the PSTN line elsewhere, the dialplan continues, announces prompts and records a voice mail... Should it, or could it even, detect if the line was picked up elsewhere? There's only one port on the card. I have a feeling there are glaring errors in my setup, so hope I'm not asking too much indulgence from the list to have a look... IOW, I'm keen to test in the latest branch moving forward, so thinking maybe asking a little help on this glorified home answering machine setup isn't *too* far out of line. '-) . . . Here are my configs, hopefully well sanitized... # cat /etc/asterisk/chan_dahdi.conf [trunkgroups] [channels] toneduration=250 usecallerid=yes callwaiting=yes usecallingpres=yes callwaitingcallerid=yes threewaycalling=yes transfer=yes canpark=yes cancallforward=yes callreturn=yes echocancel=yes echocancelwhenbridged=no echotraining=yes rxgain=10 txgain=10 group=1 callgroup=1 pickupgroup=1 immediate=yes ringtimeout=8000 signalling=fxs_ls callerid=asreceived channel => 1 # cat /etc/asterisk/extensions.conf [general] static=yes writeprotect=no clearglobalvars=no [globals] CONSOLE=Console/dsp TRUNK=DAHDI/g1 TRUNKMSD=0 [trunktollfree] exten => _91800NXXXXXX,1,Dial(${GLOBAL(TRUNK)}/${EXTEN:${GLOBAL(TRUNKMSD)}}) exten => _91888NXXXXXX,1,Dial(${GLOBAL(TRUNK)}/${EXTEN:${GLOBAL(TRUNKMSD)}}) exten => _91877NXXXXXX,1,Dial(${GLOBAL(TRUNK)}/${EXTEN:${GLOBAL(TRUNKMSD)}}) exten => _91866NXXXXXX,1,Dial(${GLOBAL(TRUNK)}/${EXTEN:${GLOBAL(TRUNKMSD)}}) [macro-stdexten] exten => s,1,Dial(${ARG2},20,m) exten => s,2,Goto(s-${DIALSTATUS},1) exten => s-BUSY,1,Voicemail(${ARG1},b) exten => s-BUSY,2,Goto(default,s,5) exten => s-NOANSWER,1,Voicemail(${ARG1},u) exten => s-NOANSWER,2,Goto(default,s,5) exten => _s-.,1,Goto(s-NOANSWER,1) [macro-trunkdial] exten => s,1,Dial(${ARG1}) exten => s,n,Goto(s-${DIALSTATUS},1) exten => s-NOANSWER,1,Hangup exten => s-BUSY,1,Hangup exten => _s-.,1,NoOp [page] exten => _X.,1,Macro(page,SIP/${EXTEN}) [opensky] exten => _1.,1,NoOp('opensky dial') exten => _1.,2,Dial(SIP/${EXTEN}@gizmo5|120|j) exten => _1.,3,Hangup() [default] include => opensky ;# interrupt to voicemail exten => a,1,VoicemailMain(${mbx}) exten => a,n,Hangup() ;# Answering machine...??? exten => s,1,Verbose(1|dumb answering machine|${CALLERIDNUM}) ; pick up local extension? exten => s,2,Wait(10) exten => s,3,Answer() exten => s,4,Macro(stdexten,6666,SIP/linphone) exten => s,5,Hangup() exten => s,6,SoftHangup(SIP/linphone) exten => s,7(fail),Hangup exten => 600,1,Playback(demo-echotest) exten => 600,n,Echo exten => 600,n,Playback(demo-echodone) exten => 600,n,Hangup() ;# record message exten => 1205,1,Wait(2) exten => 1205,2,Record(/tmp/asterisk-recording:gsm) exten => 1205,3,Hangup exten => _X.,1,Dial(DAHDI/1/${EXTEN}) exten => _X.,n,Hangup() ;# opensky gizmo5 exten => _1333.,1,Goto(opensky,,1) exten => _333.,1,Goto(opensky,,1) ;COPY THIS CONFIG exten => _skype[_].,1,Goto(opensky,,1) ;INTO YOUR exten => 563,1,Dial(SIP/skype_echo123 at proxy01.sipphone.com) ;extensions.conf ; transfer all to cell phone exten => 5555,1,Wait(1) exten => 5555,n,Dial(DAHDI/1/*72XXXXXXXXXX,,) exten => 5555,n,Wait(1) exten => 5555,n,Hangup() exten => XXXX,1,Dial(SIP/linphone,20) exten => XXXX,n,Hangup() ; straight to voicemail exten => 6666,1,Voicemail(6666 at default) exten => 6666,n,Hangup() exten => 8500,1,VoicemailMain exten => 8500,n,Hangup # cat /etc/asterisk/iax.conf [general] bandwidth=low disallow=lpc10 jitterbuffer=no forcejitterbuffer=no autokill=yes [guest] type=user context=default callerid="Guest IAX User" [iaxtel] type=user context=default auth=rsa inkeys=iaxtel [iaxfwd] type=user context=default auth=rsa inkeys=freeworlddialup [demo] type=peer username=asterisk secret=supersecret host=216.207.245.47 [XXXX] type=user insecure=very context=default context=default disallow=all allow=ulaw allow=alaw allow=gsm # cat /etc/asterisk/modules.conf [modules] autoload=yes preload => func_strings.so noload => pbx_gtkconsole.so load => res_musiconhold.so noload => chan_alsa.so # cat /etc/asterisk/musiconhold.conf [general] [default] mode=files directory=/var/lib/asterisk/moh # cat /etc/asterisk/phone.conf [interfaces] mode=fxo ;mode=immediate format=slinear echocancel=medium # cat /etc/asterisk/sip.conf [general] context=default allowoverlap=no bindport=5060 bindaddr=0.0.0.0 tcpenable=no tcpbindaddr=0.0.0.0 srvlookup=yes localnet=192.168.1.0/23 externip = XXX.XXX.XXX.XXX [authentication] [basic-options](!) dtmfmode=rfc2833 context=from-office type=friend [natted-phone](!,basic-options) nat=yes canreinvite=no host=dynamic [public-phone](!,basic-options) nat=no canreinvite=yes [my-codecs](!) disallow=all allow=ilbc allow=g729 allow=gsm allow=g723 allow=ulaw [ulaw-phone](!) disallow=all allow=ulaw [linphone] type=peer context=default secret=secret host=dynamic dtmfmode=inband defaultuser=defaultuser canreinvite=yes disallow=all allow=ulaw allow=alaw allow=speex [gizmo5] type=peer host=198.65.166.131 fromdomain=proxy01.sipphone.com canreinvite=no nat=yes dtmfmode=rfc2833 insecure=very qualify=yes fromuser=x-xxx-xxx-xxxx authuser=x-xxx-xxx-xxxx username=x-xxx-xxx-xxxx secret=ohsoverysecret disallow=all allow=ulaw allow=alaw allow=ilbc # cat /etc/asterisk/voicemail.conf [general] format=wav49|gsm|wav serveremail=asterisk attach=yes skipms=3000 maxsilence=10 silencethreshold=128 maxlogins=3 emaildateformat=%A, %B %d, %Y at %r sendvoicemail=yes [zonemessages] eastern=America/New_York|'vm-received' Q 'digits/at' IMp central=America/Chicago|'vm-received' Q 'digits/at' IMp central24=America/Chicago|'vm-received' q 'digits/at' H N 'hours' military=Zulu|'vm-received' q 'digits/at' H N 'hours' 'phonetic/z_p' european=Europe/Copenhagen|'vm-received' a d b 'digits/at' HM [default] 1234 => XXXX,Example Mailbox,root at localhost 6666 => XXXX,Test Mailbox,linux at evolone.org [other] 1234 => XXXX,Company2 User,root at localhost . . . Having posted all that, it'd be nice if someone points out the "big whoops-es" before they're exploited or something. SIP and IAX2 seem to "just work". ;-) Though, looking again, I have to wonder about 'bandwidth=low', like where did that come from... might explain the cheesy sound on that line. Anyway, I'd like to have a good first commit of my configs to SVN before I start playing around and breaking things... and much obliged to anyone who helps. # asterisk -V && uname -a Asterisk 1.6.0.6 Linux lbg2 2.6.27-gentoo-r8 #1 Sat Mar 14 20:06:08 PDT 2009 i686 AMD Athlon(tm) XP 2400+ AuthenticAMD GNU/Linux Cheers, -- |\ /| | | ~ ~ | \/ | |---| `|` ? | |ichael | |iggins \^ / michael.higgins[at]evolone[dot]org