• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 832
  • Last Modified:

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?

0
Muhajreen
Asked:
Muhajreen
  • 5
  • 3
  • 2
2 Solutions
 
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
 
naulivCommented:
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
 
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
[Video] Create a Disruption-Free Workspace

Open offices have their challenges. And Sometimes, it's even hard to work at work. It's time to reclaim your office and create a disruption-free workspace. With the MB 660, you can:

-Increase Concentration
-Improve well-being
-Boost Productivity

 
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
 
naulivCommented:
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

Featured Post

How to Use the Help Bell

Need to boost the visibility of your question for solutions? Use the Experts Exchange Help Bell to confirm priority levels and contact subject-matter experts for question attention.  Check out this how-to article for more information.

  • 5
  • 3
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now