Hi, I've moved this discussion to users as it seems my query is moving in that direction :) So, upon looking at limit_hash, it appears to do what I need to do. My question then becomes, how do I set a hash for an originated call? 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. 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? 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? Just making sure :) -- Cheers, Matt Riddell Director
Hi, On Tue, Sep 15, 2009 at 4:10 PM, Matt Riddell <matt@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@jabber.ru
participants (2)
-
Matt Riddell
-
Timur Irmatov