Table of Contents
AVPops Module: http://www.openser.org/docs/modules/1.1.x/avpops.html
XLOG Module: http://www.openser.org/docs/modules/1.1.x/xlog.html
MySQL Module: http://www.openser.org/docs/modules/1.1.x/mysql.html
These examples will use two tables. The usr_preferences table is distributed with OpenSER. The user_table is locally defined.
... mpath="/usr/local/lib/openser/modules" loadmodule "mysql.so" loadmodule "avpops.so" loadmodule "xlog.so" ... # Example 1. # # Note: Prior to most example, an avp_delete() is issued to # clean up any AVP's from previous examples. # # This example reads two columns from the usr_preferences table # into two dynamically created AVP lists. # # An element in an AVP list can be accessed using an index, for # example: avp(i:1[1]), avp(i:1[2]), ... # avp_delete("*"); if (avp_db_query("SELECT attribute, value FROM usr_preferences WHERE username='5551212' ORDER BY attribute")) { xlog("L_NOTICE", "avp(i:1[1])=$avp(i:1[1]) avp(i:2[1])=$avp(i:2[1])\n"); xlog("L_NOTICE", "avp(i:1[2])=$avp(i:1[2]) avp(i:2[2])=$avp(i:2[2])\n"); xlog("L_NOTICE", "avp(i:1[3])=$avp(i:1[3]) avp(i:2[3])=$avp(i:2[3])\n"); } else { xlog("L_NOTICE", "avp_db_query() returned no records\n"); }; # Example 2. # # This example shows the use of is_avp_set() to determine if a dynamically # created AVP exists. We are using the results from the previous example. # if (is_avp_set("$avp(i:1[1])")) xlog("L_NOTICE", "avp(i:1[1]) is set to: $avp(i:1[1])\n"); if (is_avp_set("$avp(i:1[2])")) xlog("L_NOTICE", "avp(i:1[2]) is set to: $avp(i:1[2])\n"); if (is_avp_set("$avp(i:1[3])")) xlog("L_NOTICE", "avp(i:1[3]) is set to: $avp(i:1[3])\n"); if (is_avp_set("$avp(i:1[4])")) xlog("L_NOTICE", "avp(i:1[4]) is set to: $avp(i:1[4])\n"); if (is_avp_set("$avp(i:1[5])")) xlog("L_NOTICE", "avp(i:1[5]) is set to: $avp(i:1[5])\n"); if (is_avp_set("$avp(i:1[6])")) xlog("L_NOTICE", "avp(i:1[6]) is set to: $avp(i:1[6])\n"); if (is_avp_set("$avp(i:1[7])")) xlog("L_NOTICE", "avp(i:1[7]) is set to: $avp(i:1[7])\n"); if (is_avp_set("$avp(i:1[8])")) xlog("L_NOTICE", "avp(i:1[8]) is set to: $avp(i:1[8])\n"); if (is_avp_set("$avp(i:1[9])")) xlog("L_NOTICE", "avp(i:1[9]) is set to: $avp(i:1[9])\n"); # Example 3. # # This example reads two columns from the usr_preferences table # into two "locally defined" AVP's with integer names. # # It is interesting to note, that just like Example 1, an AVP list # is created and can be accessed using an index. # avp_delete("*"); if (avp_db_query("SELECT attribute, value FROM usr_preferences WHERE username='5551212' ORDER BY attribute","$avp(i:10);$avp(i:20)")) { xlog("L_NOTICE", "avp(i:10[1])=$avp(i:10[1]) avp(i:20[1])=$avp(i:20[1])\n"); xlog("L_NOTICE", "avp(i:10[2])=$avp(i:10[2]) avp(i:20[2])=$avp(i:20[2])\n"); xlog("L_NOTICE", "avp(i:10[3])=$avp(i:10[3]) avp(i:20[3])=$avp(i:20[3])\n"); } else { xlog("L_NOTICE", "avp_db_query() returned no records\n"); }; # Example 4. # # This example reads two columns from the usr_preferences table # into two "locally defined" AVP's with string names. # # It is interesting to note, that just like Examples 1 and 3, an AVP list # is created and can be accessed using an index. # avp_delete("*"); if (avp_db_query("SELECT attribute, value FROM usr_preferences WHERE username='5551212' ORDER BY value","$avp(s:attribute);$avp(s:value)")) { xlog("L_NOTICE", "avp(s:attribute[1])=$avp(s:attribute[1]) avp(s:value[1])=$avp(s:value[1])\n"); xlog("L_NOTICE", "avp(s:attribute[2])=$avp(s:attribute[2]) avp(s:value[2])=$avp(s:value[2])\n"); xlog("L_NOTICE", "avp(s:attribute[3])=$avp(s:attribute[3]) avp(s:value[3])=$avp(s:value[3])\n"); } else { xlog("L_NOTICE", "avp_db_query() returned no records\n"); }; # Example 5. # # This example reads multiple columns from the "locally defined" # user_table table into dynamically created AVP's. # avp_delete("*"); if (avp_db_query("SELECT Account_ID, Country_Code, NPA, CallerID_URI, CallerID_Name, Call_Forward_Blind FROM user_table WHERE username='5551212'")) { xlog("L_NOTICE", "avp(i:1)=$avp(i:1)\n"); xlog("L_NOTICE", "avp(i:2)=$avp(i:2)\n"); xlog("L_NOTICE", "avp(i:3)=$avp(i:3)\n"); xlog("L_NOTICE", "avp(i:4)=$avp(i:4)\n"); xlog("L_NOTICE", "avp(i:5)=$avp(i:5)\n"); xlog("L_NOTICE", "avp(i:6)=$avp(i:6)\n"); } else { xlog("L_NOTICE", "avp_db_query() returned no records\n"); }; # Example 6. # # This example reads multiple columns from the "locally defined" # user_table table into "locally defined" AVP's that can be accessed # with string names. # avp_delete("*"); if (avp_db_query("SELECT Account_ID, Country_Code, NPA, CallerID_URI, CallerID_Name, Call_Forward_Blind FROM user_table WHERE username='5551212'", "$avp(s:Account_ID); $avp(s:Country_Code); $avp(s:NPA); $avp(s:CallerID_URI); $avp(s:CallerID_Name); $avp(s:Call_Forward_Blind)")) { xlog("L_NOTICE", "avp(s:Account_ID)=$avp(s:Account_ID)\n"); xlog("L_NOTICE", "avp(s:Country_Code)=$avp(s:Country_Code)\n"); xlog("L_NOTICE", "avp(s:NPA)=$avp(s:NPA)\n"); xlog("L_NOTICE", "avp(s:CallerID_URI)=$avp(s:CallerID_URI)\n"); xlog("L_NOTICE", "avp(s:CallerID_Name)=$avp(s:CallerID_Name)\n"); xlog("L_NOTICE", "avp(s:Call_Forward_Blind)=$avp(s:Call_Forward_Blind)\n"); if (is_avp_set("$avp(s:Account_ID)")) xlog("L_NOTICE", "avp(s:Account_ID) is set to: $avp(s:Account_ID)\n"); if (is_avp_set("$avp(s:UNDEFINED)")) xlog("L_NOTICE", "avp(s:UNDEFINED) is set to: $avp(s:UNDEFINED)\n"); } else { xlog("L_NOTICE", "avp_db_query() returned no records\n"); }; # Example 7. # # This example shows the usage of avp_db_load(). # For an explanation of the parms passed to avp_db_load(), # please visit: http://www.openser.org/docs/modules/1.1.x/avpops.html#AEN208 # avp_delete("*"); if (avp_db_load("$fU","a")) { xlog("L_NOTICE", "avp(s:Account_ID)=$avp(s:Account_ID)\n"); xlog("L_NOTICE", "avp(s:Country_Code)=$avp(s:Country_Code)\n"); xlog("L_NOTICE", "avp(s:NPA)=$avp(s:NPA)\n"); xlog("L_NOTICE", "avp(s:CallerID_URI)=$avp(s:CallerID_URI)\n"); xlog("L_NOTICE", "avp(s:CallerID_Name)=$avp(s:CallerID_Name)\n"); xlog("L_NOTICE", "avp(s:Call_Forward_Blind)=$avp(s:Call_Forward_Blind)\n"); } else { xlog("L_NOTICE", "avp_db_load() returned no records\n"); };
Example 1. avp(i:1[1])=CallerID_Name avp(i:2[1])=John Doe avp(i:1[2])=CallerID_URI avp(i:2[2])=sip:5551212@test.com avp(i:1[3])=Call_Forward_Blind avp(i:2[3])=sip:john.doe@test.com Example 2. avp(i:1[1]) is set to: CallerID_Name avp(i:1[2]) is set to: CallerID_URI avp(i:1[3]) is set to: Call_Forward_Blind avp(i:1[4]) is set to: Country_Code avp(i:1[5]) is set to: NPA Example 3. avp(i:10[1])=CallerID_Name avp(i:20[1])=John Doe avp(i:10[2])=CallerID_URI avp(i:20[2])=sip:5551212@test.com avp(i:10[3])=Call_Forward_Blind avp(i:20[3])=sip:john.doe@test.com Example 4. avp(s:attribute[1])=Account_ID avp(s:value[1])=123456789 avp(s:attribute[2])=NPA avp(s:value[2])=212 avp(s:attribute[3])=CallerID_Name avp(s:value[3])=John Doe Example 5. avp(i:1)=123456789 avp(i:2)=1 avp(i:3)=212 avp(i:4)=sip:5551212@test.com avp(i:5)=John Doe avp(i:6)=sip:john.doe@test.com Example 6. avp(s:Account_ID)=123456789 avp(s:Country_Code)=1 avp(s:NPA)=212 avp(s:CallerID_URI)=sip:5551212@test.com avp(s:CallerID_Name)=John Doe avp(s:Call_Forward_Blind)=sip:john.doe@test.com avp(s:Account_ID) is set to: 123456789 Example 7. avp(s:Account_ID)=123456789 avp(s:Country_Code)=1 avp(s:NPA)=212 avp(s:CallerID_URI)=sip:5551212@test.com avp(s:CallerID_Name)=John Doe avp(s:Call_Forward_Blind)=sip:john.doe@test.com