Benoit Panizzon
2019-Nov-28 14:31 UTC
[asterisk-users] PJSIP device_state_busy_at, how does this work?
Hi Gang According to: https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+Configuration_res_pjsip#Asterisk12Configuration_res_pjsip-endpoint_device_state_busy_at And endpoint should return busy if this number is reached. We have PBX Trunks registering to the Asterisk. So we want to limit the number of concurrent calls to a PBX and return busy, if more than the configured number of channels are in use. I set for example: device_state_busy_at=4 to limit the trunk to 4 channels so 400kbit/s can be assured by QOS measure. But when testing, I noticed caller don't get busy. pjsip show endpoints happily shows 5 of 4 channels in use. Do I have to query the device state from the dialplan and manually return busy? Mit freundlichen Grüssen -Benoît Panizzon- -- I m p r o W a r e A G - Leiter Commerce Kunden ______________________________________________________ Zurlindenstrasse 29 Tel +41 61 826 93 00 CH-4133 Pratteln Fax +41 61 826 93 01 Schweiz Web http://www.imp.ch ______________________________________________________
Joshua C. Colp
2019-Nov-28 14:41 UTC
[asterisk-users] PJSIP device_state_busy_at, how does this work?
On Thu, Nov 28, 2019 at 10:32 AM Benoit Panizzon <benoit.panizzon at imp.ch> wrote:> Hi Gang > > According to: > > https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+Configuration_res_pjsip#Asterisk12Configuration_res_pjsip-endpoint_device_state_busy_at > > And endpoint should return busy if this number is reached. > > We have PBX Trunks registering to the Asterisk. > > So we want to limit the number of concurrent calls to a PBX and return > busy, if more than the configured number of channels are in use. > > I set for example: > > device_state_busy_at=4 to limit the trunk to 4 channels so 400kbit/s > can be assured by QOS measure. > > But when testing, I noticed caller don't get busy. > > pjsip show endpoints happily shows 5 of 4 channels in use. > > Do I have to query the device state from the dialplan and manually > return busy? >The option strictly controls device state. Any enforcement of a limit for calling does not exist, and is up to you to do using various methods. Device state could be queried and used, or GROUP[1] and GROUP_COUNT[2]. [1] https://wiki.asterisk.org/wiki/display/AST/Asterisk+17+Function_GROUP [2] https://wiki.asterisk.org/wiki/display/AST/Asterisk+17+Function_GROUP_COUNT -- Joshua C. Colp Senior Software Developer Sangoma Technologies Check us out at www.sangoma.com -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.digium.com/pipermail/asterisk-users/attachments/20191128/819ead73/attachment.html>
Benoit Panizzon
2019-Nov-28 15:49 UTC
[asterisk-users] PJSIP device_state_busy_at, how does this work?
Hi Joshua> The option strictly controls device state. Any enforcement of a limit for > calling does not exist, and is up to you to do using various methods. > Device state could be queried and used, or GROUP[1] and GROUP_COUNT[2]. > > [1] https://wiki.asterisk.org/wiki/display/AST/Asterisk+17+Function_GROUP > [2] > https://wiki.asterisk.org/wiki/display/AST/Asterisk+17+Function_GROUP_COUNTYes, I had a shot at GROUP and GROUP_COUNT but somehow did not manage to achieve efficient control of the channels. I have hacked together an ugly solution. I use an agi script for routing decision. If the call originates from a Customer Device: ($tech,$device,$callid) = $chan_vars{'channel'} =~ m/([A-Za-z]*)\/(.*)?-(.*)/; So $device contains the part I need to use in: $AGI->get_variable("DEVICE_STATE(PJSIP/$device)"); If this returns BUSY, I send the call to HangUp(17) On calls TO a Customer Device, I use the same $device to build the destination URI: Dial(PJSIP/$destination@$device) and therefore I can also query the state and figure out if I need to send the call to HangUp(17). One interesting observation. If the count of channels is not at the limit (eg 2 of 2 => busy), so for example 3 out of 2 channels, the status does not stay ab BUSY but goes back to IN_USE. Shouldn't that still be busy? :-) Mit freundlichen Grüssen -Benoît Panizzon- -- I m p r o W a r e A G - Leiter Commerce Kunden ______________________________________________________ Zurlindenstrasse 29 Tel +41 61 826 93 00 CH-4133 Pratteln Fax +41 61 826 93 01 Schweiz Web http://www.imp.ch ______________________________________________________