Solved

Checking for extensions in use in Asterisk

Posted on 2011-02-12
10
827 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 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
Webinar: Aligning, Automating, Winning

Join Dan Russo, Senior Manager of Operations Intelligence, for an in-depth discussion on how Dealertrack, leading provider of integrated digital solutions for the automotive industry, transformed their DevOps processes to increase collaboration and move with greater velocity.

 
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

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

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

How To Create Custom / Distinctive Ring Tones on Polycom Phones Purpose and Overview When creating a custom ring tone, you have simple aspirations: to make your phone cooler than everyone else's. Perhaps you need a louder ringer. Perhaps you w…
Hey there Heard about jingle, the add on for XMPP that enables point to point audio between two XMPP clients. No server config necessary. Actually quite a cool feature. However, how good is it if you can not use those voice capabilities to do a P…
In this video, viewers will be given step by step instructions on adjusting mouse, pointer and cursor visibility in Microsoft Windows 10. The video seeks to educate those who are struggling with the new Windows 10 Graphical User Interface. Change Cu…
Michael from AdRem Software explains how to view the most utilized and worst performing nodes in your network, by accessing the Top Charts view in NetCrunch network monitor (https://www.adremsoft.com/). Top Charts is a view in which you can set seve…

729 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