[asterisk-users] PJSIP device_state_busy_at, how does this work?

Benoit Panizzon benoit.panizzon at imp.ch
Thu Nov 28 09:49:46 CST 2019


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_COUNT

Yes, 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
______________________________________________________



More information about the asterisk-users mailing list