I am using AVPs for distinctive ring preferences. I allows users to store up to 5 phone numbers that can be assigned a custom ring. The method below works fine but as you can see it requires 5 db queries. There must be a better way to do this. Any ideas?
- Daryl
if (avp_db_load("$ruri/username", "s:ringone")) { if (avp_check("s:ringone", "eq/$from/i")) { append_hf("Alert-Info: Bellcore-r1\r\n"); }; }; if (avp_db_load("$ruri/username", "s:ringtwo")) { if (avp_check("s:ringtwo", "eq/$from/i")) { append_hf("Alert-Info: Bellcore-r2\r\n"); }; }; if (avp_db_load("$ruri/username", "s:ringthree")) { if (avp_check("s:ringthree", "eq/$from/i")) { append_hf("Alert-Info: Bellcore-r3\r\n"); }; }; if (avp_db_load("$ruri/username", "s:ringfour")) { if (avp_check("s:ringfour", "eq/$from/i")) { append_hf("Alert-Info: Bellcore-r4\r\n"); }; }; if (avp_db_load("$ruri/username", "s:ringfive")) { if (avp_check("s:ringfive", "eq/$from/i")) { append_hf("Alert-Info: Bellcore-r5\r\n"); }; };
SER is severely limited on the passing of variables which ends up making things like that string of queries necessary to perform some things.
OpenSER I think allows the use of tossing in pseudo variables here and there, so you could probably grab the value of the ringtone from the AVP and then toss it into the Alert-Info header making it into one query instead of 5.
Not being an OpenSER user, however, this is only what I understand from my cursory reading of its docs. You'd have to check on that with someone else, I think.
N.
On Mon, 7 Nov 2005 12:35:55 -0700, Daryl Sanders wrote
I am using AVPs for distinctive ring preferences. I allows users to store up to 5 phone numbers that can be assigned a custom ring. The method below works fine but as you can see it requires 5 db queries. There must be a better way to do this. Any ideas?
Daryl
if (avp_db_load("$ruri/username", "s:ringone")) { if (avp_check("s:ringone", "eq/$from/i")) { append_hf("Alert-Info: Bellcore-r1\r\n"); }; }; if (avp_db_load("$ruri/username", "s:ringtwo")) { if (avp_check("s:ringtwo", "eq/$from/i")) { append_hf("Alert-Info: Bellcore-r2\r\n"); }; }; if (avp_db_load("$ruri/username", "s:ringthree")) { if (avp_check("s:ringthree", "eq/$from/i")) { append_hf("Alert-Info: Bellcore-r3\r\n"); }; }; if (avp_db_load("$ruri/username", "s:ringfour")) { if (avp_check("s:ringfour", "eq/$from/i")) { append_hf("Alert-Info: Bellcore-r4\r\n"); }; }; if (avp_db_load("$ruri/username", "s:ringfive")) { if (avp_check("s:ringfive", "eq/$from/i")) { append_hf("Alert-Info: Bellcore-r5\r\n"); }; };
Serusers mailing list Serusers@iptel.org http://mail.iptel.org/mailman/listinfo/serusers
Daryl,
Try something like this: avp_db_load("$ruri/domain","i:/usr_preferences"); - loads all AVPs with ID from 'usr_preferences' table for domain from RURI
Run that ONCE, then do all your AVP checks without using the avp_db_load statements. This *should* work with SER and OpenSER, but definitely OpenSER.
Lenir
-----Original Message----- From: serusers-bounces@iptel.org [mailto:serusers-bounces@lists.iptel.org] On Behalf Of sip Sent: Monday, November 07, 2005 2:57 PM To: Daryl Sanders; SER Users; users@openser.org Subject: Re: [Serusers] AVP Distinctive-Ring question
SER is severely limited on the passing of variables which ends up making things like that string of queries necessary to perform some things.
OpenSER I think allows the use of tossing in pseudo variables here and there, so you could probably grab the value of the ringtone from the AVP and then toss it into the Alert-Info header making it into one query instead of 5.
Not being an OpenSER user, however, this is only what I understand from my cursory reading of its docs. You'd have to check on that with someone else, I think.
N.
On Mon, 7 Nov 2005 12:35:55 -0700, Daryl Sanders wrote
I am using AVPs for distinctive ring preferences. I allows users to store up to 5 phone numbers that can be assigned a custom ring. The method below works fine but as you can see it requires 5 db queries. There must be a better way to do this. Any ideas?
Daryl
if (avp_db_load("$ruri/username", "s:ringone")) { if (avp_check("s:ringone", "eq/$from/i")) { append_hf("Alert-Info: Bellcore-r1\r\n"); }; }; if (avp_db_load("$ruri/username", "s:ringtwo")) { if (avp_check("s:ringtwo", "eq/$from/i")) { append_hf("Alert-Info: Bellcore-r2\r\n"); }; }; if (avp_db_load("$ruri/username", "s:ringthree")) { if (avp_check("s:ringthree", "eq/$from/i")) { append_hf("Alert-Info: Bellcore-r3\r\n"); }; }; if (avp_db_load("$ruri/username", "s:ringfour")) { if (avp_check("s:ringfour", "eq/$from/i")) { append_hf("Alert-Info: Bellcore-r4\r\n"); }; }; if (avp_db_load("$ruri/username", "s:ringfive")) { if (avp_check("s:ringfive", "eq/$from/i")) { append_hf("Alert-Info: Bellcore-r5\r\n"); }; };
Serusers mailing list serusers@lists.iptel.org http://lists.iptel.org/mailman/listinfo/serusers
_______________________________________________ Serusers mailing list serusers@lists.iptel.org http://lists.iptel.org/mailman/listinfo/serusers
Daryl,
Try something like this: avp_db_load("$ruri/domain","i:/usr_preferences"); - loads all AVPs with ID from 'usr_preferences' table for domain from RURI
Run that ONCE, then do all your AVP checks without using the avp_db_load statements. This *should* work with SER and OpenSER, but definitely OpenSER.
Lenir
-----Original Message----- From: serusers-bounces@iptel.org [mailto:serusers-bounces@iptel.org] On Behalf Of sip Sent: Monday, November 07, 2005 2:57 PM To: Daryl Sanders; SER Users; users@openser.org Subject: Re: [Serusers] AVP Distinctive-Ring question
SER is severely limited on the passing of variables which ends up making things like that string of queries necessary to perform some things.
OpenSER I think allows the use of tossing in pseudo variables here and there, so you could probably grab the value of the ringtone from the AVP and then toss it into the Alert-Info header making it into one query instead of 5.
Not being an OpenSER user, however, this is only what I understand from my cursory reading of its docs. You'd have to check on that with someone else, I think.
N.
On Mon, 7 Nov 2005 12:35:55 -0700, Daryl Sanders wrote
I am using AVPs for distinctive ring preferences. I allows users to store up to 5 phone numbers that can be assigned a custom ring. The method below works fine but as you can see it requires 5 db queries. There must be a better way to do this. Any ideas?
Daryl
if (avp_db_load("$ruri/username", "s:ringone")) { if (avp_check("s:ringone", "eq/$from/i")) { append_hf("Alert-Info: Bellcore-r1\r\n"); }; }; if (avp_db_load("$ruri/username", "s:ringtwo")) { if (avp_check("s:ringtwo", "eq/$from/i")) { append_hf("Alert-Info: Bellcore-r2\r\n"); }; }; if (avp_db_load("$ruri/username", "s:ringthree")) { if (avp_check("s:ringthree", "eq/$from/i")) { append_hf("Alert-Info: Bellcore-r3\r\n"); }; }; if (avp_db_load("$ruri/username", "s:ringfour")) { if (avp_check("s:ringfour", "eq/$from/i")) { append_hf("Alert-Info: Bellcore-r4\r\n"); }; }; if (avp_db_load("$ruri/username", "s:ringfive")) { if (avp_check("s:ringfive", "eq/$from/i")) { append_hf("Alert-Info: Bellcore-r5\r\n"); }; };
Serusers mailing list Serusers@iptel.org http://mail.iptel.org/mailman/listinfo/serusers
_______________________________________________ Serusers mailing list Serusers@iptel.org http://mail.iptel.org/mailman/listinfo/serusers
Hello,
you can store the ringtone only in one avp, load the value in one query, and then push it into a header. See: http://www.voice-system.ro/docs/avpops/ar01s06.html#avp_pushto
If you need to compose another string based on the value loaded from database and other stuff, you can use avp_printf() prior adding the header. http://www.voice-system.ro/docs/avpops/ar01s06.html#avp_printf
Cheers, Daniel
On 11/07/05 21:35, Daryl Sanders wrote:
I am using AVPs for distinctive ring preferences. I allows users to store up to 5 phone numbers that can be assigned a custom ring. The method below works fine but as you can see it requires 5 db queries. There must be a better way to do this. Any ideas?
Daryl
if (avp_db_load("$ruri/username", "s:ringone")) { if (avp_check("s:ringone", "eq/$from/i")) { append_hf("Alert-Info: Bellcore-r1\r\n"); }; }; if (avp_db_load("$ruri/username", "s:ringtwo")) { if (avp_check("s:ringtwo", "eq/$from/i")) { append_hf("Alert-Info: Bellcore-r2\r\n"); }; }; if (avp_db_load("$ruri/username", "s:ringthree")) { if (avp_check("s:ringthree", "eq/$from/i")) { append_hf("Alert-Info: Bellcore-r3\r\n"); }; }; if (avp_db_load("$ruri/username", "s:ringfour")) { if (avp_check("s:ringfour", "eq/$from/i")) { append_hf("Alert-Info: Bellcore-r4\r\n"); }; }; if (avp_db_load("$ruri/username", "s:ringfive")) { if (avp_check("s:ringfive", "eq/$from/i")) { append_hf("Alert-Info: Bellcore-r5\r\n"); }; };
Users mailing list Users@openser.org http://openser.org/cgi-bin/mailman/listinfo/users