Solved

Checking for extensions in use in Asterisk

Posted on 2011-02-12
10
824 Views
Last Modified: 2013-11-12
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
Comment
Question by:Muhajreen
  • 5
  • 3
  • 2
10 Comments
 
LVL 11

Expert Comment

by:jfaubiontx
ID: 34883103
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
 
LVL 7

Accepted Solution

by:
nauliv earned 500 total points
ID: 34885511
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
 

Author Comment

by:Muhajreen
ID: 34906671
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
3 Use Cases for Connected Systems

Our Dev teams are like yours. They’re continually cranking out code for new features/bugs fixes, testing, deploying, testing some more, responding to production monitoring events and more. It’s complex. So, we thought you’d like to see what’s working for us.

 
LVL 11

Expert Comment

by:jfaubiontx
ID: 34906906
I'll ask again, what phone are you using?
0
 
LVL 7

Expert Comment

by:nauliv
ID: 34907904
Can you post the sip.conf for this extension?
0
 
LVL 7

Expert Comment

by:nauliv
ID: 34907906
Can you post the sip.conf for this extension?
0
 

Author Comment

by:Muhajreen
ID: 34910168
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
 
LVL 7

Assisted Solution

by:nauliv
nauliv earned 500 total points
ID: 34912032
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
 
LVL 7

Expert Comment

by:nauliv
ID: 34912040
PS: don't forget to do a "sip reload" at the console after the changes :)
0
 

Author Closing Comment

by:Muhajreen
ID: 34915129
Great ! callcounter=yes has solved it ! Thank you.

I will post another question soon regarding paging only NOT_INUSE multiple extensions.
0

Featured Post

VMware Disaster Recovery and Data Protection

In this expert guide, you’ll learn about the components of a Modern Data Center. You will use cases for the value-added capabilities of Veeam®, including combining backup and replication for VMware disaster recovery and using replication for data center migration.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Cheapest VOIP Phone with 48+ shortcut keys 4 23
SonicWall hosted VoIP Issues 3 100
IP Phone with a Analog Home Phone Line (Rj-11) 8 92
set url:tel to a website 3 47
There are no good configuration guides for HP-H3C router to LYNC on the web. :( Big statement, but we havent been able to find one yet. We did find the following document useful, but the information was not enough to use H3C router for use as a L…
Skype is a P2P (Peer to Peer) instant messaging and VOIP (Voice over IP) service – as well as a whole lot more.
Along with being a a promotional video for my three-day Annielytics Dashboard Seminor, this Micro Tutorial is an intro to Google Analytics API data.
A short tutorial showing how to set up an email signature in Outlook on the Web (previously known as OWA). For free email signatures designs, visit https://www.mail-signatures.com/articles/signature-templates/?sts=6651 If you want to manage em…

773 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question