[Freeswitch-users] Limit_Hash

Timur Irmatov irmatov at gmail.com
Thu Sep 17 07:08:09 PDT 2009


Hi,

On Tue, Sep 15, 2009 at 4:10 PM, Matt Riddell <matt at venturevoip.com> wrote:
> My question then becomes, how do I set a hash for an originated call?

You set a limit by executing limit_hash application at appropriate
place in your dial plan.

> It seems that limit_hash is an application rather than a channel
> variable, and so far I've been doing most things without touching the
> dialplan.

Correct, limit_hash is an application.

> So, say I want to originate 9 calls, 3 from 3 customers.
>
> I would like to mark the calls with my_customer_group_1 through 3, and
> then use the limit_hash_usage command to verify the count of channels in
> each group.
>
> I therefore have a few questions:
>
> 1. Can I mark a call in the originate statement?

Somehow you need an ability to distinguish one customer from another.
For example, if each customer has its own number and originates calls
only from this number, you can use this number for limiting their
usage.

> 2. How do I use the limit_hash_usage command?
> The wiki states:
> You can verify the usage of any resource with the limit_hash_usage api call.
> limit_hash_usage <realm> <id>
> Is realm the same as a SIP realm?
> Is id the hash that I have used to mark the call with?

No, <realm> is just an arbitrary string to allow you have same <id>s
in different realms. For example, realm can be a name of your
customer, and <id> can be a direction of call, so you can set a limit
of 5 outbound and 3 inbound calls per customer:

....
<action application="limit_hash" data="customer1 out 5"/>
....
<action application="limit_hash" data="customer1 in 3"/>
....

Of course, those two lines should be placed to appropriate (and most
probably separate) places of your dialplan.

So, back to your example. Three customers, 3 outbound calls per each.
Let's suppose customer 1, 2 and 3 have numbers 1001, 1002, 1003
assigned to them, and customer1 originates calls from 1001, and so
on.. You place the limit like this:

<extension name="customer_calls">
  <condition field="destination_number" expression="^0([0-9]+)$">
    <action application="limit_hash" data="customer ${caller-id-number} 3"/>
    <action application="bridge" data="sofia/gateway/mygate/$1" />
  </condition>
</extension>

You should see messages in console about limits during live calls.
Also, bear in mind that if you place a limit in one dialplan context
and then transfer your call to another, limit will be reset. Does
anyone know, why it is like this? Is it possible to allow limits
persist across dialplan contexts?

-- 
Timur Irmatov, xmpp:irmatov at jabber.ru




More information about the FreeSWITCH-users mailing list