Checking for extensions in use in Asterisk

Hello experts,

In an Asterisk 1.6.2 environment, I want to check for an extension if it's busy before paging it. I have found this code in extensions.conf sample, but it didn't work. When I page an extension while it's in a call, the other call becomes on hold and page is auto answered immediately.


[page]

exten => _*71XX,1,Macro(page,SIP/${EXTEN:2})

[macro-page]
;
; Paging macro:
;
;       Check to see if SIP device is in use and DO NOT PAGE if they are
;
;   ${ARG1} - Device to page

exten => s,1,ChanIsAvail(${ARG1},s)                     ; s is for ANY call
exten => s,n,GoToIf($[${AVAILORIGCHAN} = ""]?fail:autoanswer)
exten => s,n(autoanswer),Set(_ALERT_INFO="RA")                  ; This is for the PolyComs
exten => s,n,SIPAddHeader(Call-Info: Answer-After=0)    ; This is for the Grandstream, Snoms, and Others
exten => s,n,NoOp()                                     ; Add others here and Post on the Wiki!!!!
exten => s,n,Dial(${ARG1})
exten => s,n(fail),Hangup

Any help?

MuhajreenAsked:
Who is Participating?
 
naulivConnect With a Mentor Commented:
Hello Muhajreen,


In order to achieve what you are looking for, since you are using 1.6, you can use the DEVICE_STATE function.
In your macro, you can check the value of the following variable ${DEVICE_STATE(${ARG1})}
The possible return values are:
UNKNOWN
NOT_INUSE
INUSE
BUSY
INVALID
UNAVAILABLE
RINGING
RINGINUSE
ONHOLD

I'd suggest you start by adding the following command in your dialplan to experiment and see if the values are indeed changing based on the phone status:

NoOp(The status of ${ARG1} is ${DEVICE_STATE(${ARG1})})


Wish you have a lot of fun with Asterisk, and let us know if you need further help!

Nauliv
0
 
jfaubiontxCommented:
The problem is that call waiting is available. When the code checks to see if the channel is available, the reponse is sure I have more lines available. The the auto answer on message happily puts the call on hold and auto answers the incoming line. One way two fix it is to disable the call waiting feature. This way the phone reports the channel as unavailable. Depending on the model of phone there may be more ways to do this. What phones are you using?
0
 
MuhajreenAuthor Commented:
Thank you for the great new feature of Asterisk 1.6 ! And sorry for the delay.

Actually I have tried the following:

exten => _1[012]X,1,NoOp(The status of ${EXTEN} is ${DEVICE_STATE(SIP/${EXTEN})})
same => n,Dial(SIP/${EXTEN},60)

But always when an extension (ie. 118) is in a call, and on other extension dials 118, I get that:

The status of 118 is NOT_INUSE

So what is the problem?
0
Improve Your Query Performance Tuning

In this FREE six-day email course, you'll learn from Janis Griffin, Database Performance Evangelist. She'll teach 12 steps that you can use to optimize your queries as much as possible and see measurable results in your work. Get started today!

 
jfaubiontxCommented:
I'll ask again, what phone are you using?
0
 
naulivCommented:
Can you post the sip.conf for this extension?
0
 
naulivCommented:
Can you post the sip.conf for this extension?
0
 
MuhajreenAuthor Commented:
I am using Linksys SPA942.

[118]
context=full
callerid="Muhajreen" <118>
type=friend
secret=xxxxx
host=dynamic
mailbox=118@default
qualify=yes
deny=0.0.0.0/0.0.0.0
permit=192.168.99.118/255.255.255.255
allow=ulaw
canreinvite=no
callgroup=1
pickupgroup=1
0
 
naulivConnect With a Mentor Commented:
Muhajreen: here is what you need to do:

1) Add this line in the [general] section of your sip.conf:

callcounter=yes

2) Test, and if it still doesn't work, add this line for your 118 entry as well:

call-limit=20  (doesn't matter what the value is, it's just to make asterisk keep track of calls)

It should work fine after that.

Good Luck !
0
 
naulivCommented:
PS: don't forget to do a "sip reload" at the console after the changes :)
0
 
MuhajreenAuthor Commented:
Great ! callcounter=yes has solved it ! Thank you.

I will post another question soon regarding paging only NOT_INUSE multiple extensions.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.