Thanks Brad.
Really Appreciated.
This helps a lot.
Kind Regards
On Aug 25, 2010, at 9:11 AM, Brad Bendy wrote:
> Deon,
>
> It's kind of sloppy as was thrown together for testing, but it works.
>
> The IAD we were sending calls to sends a 486 if the line is in use, we then
> route advance on the 486 until all destinations have been tried.
>
> We made the hunt_list static for testing, but avp_db_load or memcached it was
> will be used in production.
>
>
> route[hunt] {
>
> $avp(s:hunt_timeout) = 20;
> #hunt list is number_to_hunt,dest1,dest2,dest3
>
> $avp(s:hunt_list) = "3,5000,5001,5002";
> $avp(s:total_hunts) = $(avp(s:hunt_list){s.select,0,,});
> #Are we starting the hunt or picking up?
> if(!is_avp_set("$avp(s:hunt_pos)")){
> #Set to 1 as its first try
> $avp(s:hunt_pos) = 1;
> $avp(s:hunt_num) = $(avp(s:hunt_list){s.select,$avp(s:hunt_pos),,});
> xlog("L_NOTICE","***Initial hunting***: Starting to hunt for Call ID: $ci
> with Source ANI of: $fU");
> xlog("L_NOTICE","***Initial hunting***: Number to hunt to:
> $avp(s:hunt_num) with hunt pos: $avp(s:hunt_pos) with timeout of
> $avp(s:hunt_timeout) seconds and hunt list: $avp(s:hunt_list)");
>
> } else {
> #Not the 1st time, let's pull the next in order
> $avp(s:hunt_num) = $(avp(s:hunt_list){s.select,$avp(s:hunt_pos),,});
> xlog("L_NOTICE","***Trying #$avp(s:hunt_pos) of $avp(s:total_hunts) in
> seq*** Number to hunt to: $avp(s:hunt_num) Call ID: $ci with Source ANI of:
> $fU");
> #pull the next number to call from the set
> $avp(s:hunt_num) = $(avp(s:hunt_list){s.select,$avp(s:hunt_pos),,});
> }
> #send the call
> $rU = $avp(s:hunt_num);
>
> $rd = '1.1.1.1;
>
> t_on_branch("hunt");
> t_on_reply("hunt");
> t_on_failure("hunt");
>
> if (!t_relay()) {
> sl_reply_error();
> };
> exit();
>
> }
>
> failure_route[hunt] {
> xlog("L_NOTICE","hit failure");
> if (t_was_cancelled()) {
> xlog("L_NOTICE","Call 487'ed");
> exit();
> }
>
> xlog("L_NOTICE","Hit failure route, num of hunts: $avp(s:total_hunts) hunt
> pos: $avp(s:hunt_pos)");
> #route advance on certain codes
> if($avp(s:total_hunts) == $avp(s:hunt_pos)){
> xlog("L_NOTICE","All hunting members tried, forwarding to final
> destination");
> seturi("sip:[email protected]");
> t_relay();
> exit();
> }
> if(t_check_status("480")){
> t_reply("480","Request timeout");
> exit();
> }
> if(t_check_status("404")) {
> t_reply("404","Not found");
> exit();
> }
>
> if(t_check_status("400|408|483|486|503|500|603|403")) {
> #Adtran will either send a 480 or 408 or 486 depending on the status of
> extension being called
> $avp(s:hunt_pos) = $(avp(s:hunt_pos){s.int}) + 1;
> xlog("L_NOTICE","hunt pos in failure route after add: $avp(s:hunt_pos)");
>
> route(hunt);
> exit();
> }
>
> }
>
>
> On Wed, 2010-08-25 at 07:54 +0200, Deon Vermeulen wrote:
>> Brad
>>
>>
>> would you be so kind and show a sample config for how you setup the serial
>> fork?
>>
>>
>> I have to set this up but have no idea where to start.
>>
>>
>> Some sort of template would be great just to give an idea of how this is
>> done.
>>
>>
>> I should be able to figure out the rest as I go along.
>>
>>
>> Thanks
>>
>> Kind Regards
>>
>>
>>
>> On Aug 25, 2010, at 5:20 AM, Brad Bendy wrote:
>>
>>> I just setup serial hunting and it was pretty easy.
>>>
>>> We stored the list of users to be called in memcached, counted how many
>>> total users need to be called and advanced to the next one in failure_route
>>> as needed, set a ring timeout and then have it go to a voicemail server or
>>> wherever it needed to go.
>>>
>>> I think you could do the same thing by just tracking the last user rang and
>>> use that as your starting point for the next call to take place, then after
>>> that is called update memcached or your avp and start all over again on the
>>> next call.
>>>
>>> I saw a post that said there was a module to do hunting, but ive yet to
>>> find it, as I don't think it does exist.
>>>
>>> On Tue, 2010-08-24 at 20:13 -0700, osiris123d wrote:
>>>>
>>>> I saw a post saying it was possible to do hunt groups with col, but i
>>>> wasn't
>>>> sure how one would keep up with calls to each group user so that one could
>>>> do "least called user" or even the user that was next in line to be
>>>> called.
>>>> I am guessing avps and contact array could help, but i was just wondering
>>>> what solutions some people might have used. I was even thinking that i
>>>> might be able to relay the calls to a hunt group number to asterisk and let
>>>> asterisk handle the hunt group logic, but i am not sure if that would work.
>>>
>>>
>>> _______________________________________________
>>> Users mailing list
>>> [email protected]
>>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>
>>
>> _______________________________________________
>> Users mailing list
>> [email protected]
>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
> --
> Brad Bendy
> Chief Technical Officer
> [email protected]
>
> Benga Networks, LLC.
> 10115 E. Bell Rd, Ste. 107-451
> Scottsdale, AZ 85260-2189
>
> Toll Free: 877-44-BENGA
> Local: 480-970-5200
> Cell: 602-550-4004
> Fax: 866-852-4468
> _______________________________________________
> Users mailing list
> [email protected]
> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
_______________________________________________
Users mailing list
[email protected]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users