User Tools

Site Tools


cookbooks:devel:transformations

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
cookbooks:devel:transformations [2020/08/29 21:21]
miconda [{uri.suri}]
cookbooks:devel:transformations [2021/06/25 11:05] (current)
miconda [{s.rbefore,x}]
Line 1: Line 1:
 ====== Transformations ====== ====== Transformations ======
  
-Version: Kamailio SIP Server v5.5.x (devel)+Version: Kamailio SIP Server v5.6.x (devel)
  
 <code> <code>
Line 375: Line 375:
  
 <code c> <code c>
-abababa"{s.count,a}+"abababa"{s.count,a}
 # will return 4 # will return 4
 </code> </code>
  
 +==== {s.after,x} ====
  
 +Return the part of the string after the character **x** searched from the start of the value. If the character **x** is not found, it returns empty string.
 +
 +<code c>
 +"abcdef"{s.after,c}
 +# will return "def"
 +</code>
 +
 +==== {s.rafter,x} ====
 +
 +Return the part of the string after the character **x** searched from the end of the value. If the character **x** is not found, it returns empty string.
 +
 +<code c>
 +"abcdefcgh"{s.rafter,c}
 +# will return "gh"
 +</code>
 +==== {s.before,x} ====
 +
 +Return the part of the string before the character **x** searched from the start of the value. If the character **x** is not found, it returns the entire input string.
 +
 +<code c>
 +"abcdef"{s.before,c}
 +# will return "ab"
 +</code>
 +
 +==== {s.rbefore,x} ====
 +
 +Return the part of the string before the character **x** searched from the end of the value. If the character **x** is not found, it returns the entire input string.
 +
 +<code c>
 +"abcdefcgh"{s.rbefore,c}
 +# will return "abcdef"
 +</code>
 +
 +==== {s.fmtlines,n,m} ====
 +
 +Format the value in lines of n characters, adding m spaces to the start of each new line (not to first line). Each line is ended with "\r\n" apart of last line.
 +
 +<code c>
 +"abcdefgh"{s.fmtlines,4,2}
 +</code>
 +
 +==== {s.fmtlinet,n,m} ====
 +
 +Format the value in lines of n characters, adding m tabs to the start of each new line (not to first line). Each line is ended with "\r\n" apart of last line.
 +
 +<code c>
 +"abcdefgh"{s.fmtlinet,4,2}
 +</code>
 ==== {s.urlencode.param} ==== ==== {s.urlencode.param} ====
  
Line 475: Line 524:
 $var(ouri) = "sip:alice@server.com:5060;nat=yes;transport=tcp;line=xyz"; $var(ouri) = "sip:alice@server.com:5060;nat=yes;transport=tcp;line=xyz";
 $var(duri) = $(var(ouri){uri.duri}); # => "sip:server.com:5060;transport=tcp" $var(duri) = $(var(ouri){uri.duri}); # => "sip:server.com:5060;transport=tcp"
 +</code>
 +
 +==== {uri.saor} ====
 +
 +Return the SIP AoR, keeping only schema, user and host. If user is not in the original value, it is also not in the returned value.
 +
 +Example:
 +
 +<code c>
 +$var(ouri) = "sip:alice@server.com:5060;nat=yes;transport=tcp;line=xyz";
 +$var(suri) = $(var(ouri){uri.saor}); # => "sip:alice@server.com"
 </code> </code>
  
Line 503: Line 563:
 <code> <code>
 "a=1;b=2;c=3"{param.value,c} = "3" "a=1;b=2;c=3"{param.value,c} = "3"
 +</code>
 +
 +'name' can be a pseudo-variable
 +
 +'delimiter' allows you to specify a single character to use as the parameter delimiter. For example, when parsing HTTP URL query strings use '&'.
 +
 +==== {param.in,name[,delimiter]} ====
 +
 +Return 1 if the parameter 'name' is found in parameters list, 0 if not found.
 +
 +Example:
 +<code>
 +"a=1;b=2;c=3"{param.in,c} = 1
 </code> </code>
  
Line 621: Line 694:
 ==== {line.at,pos} ==== ==== {line.at,pos} ====
  
-Return the line at position 'pos'. The index start from 0. Negative position can be used to count from last line (which is -1).+Return the line at position 'pos'. The index start from 0. Negative position can be used to count from last line (which is -1). The pos can be also a variable holding the index value.
  
 Example: Example:
Line 803: Line 876:
 $var(Custom-Data) = $(rb{json.parse,Custom-Data}); $var(Custom-Data) = $(rb{json.parse,Custom-Data});
  
 +</code>
 +
 +===== URI Alias Transformations =====
 +
 +Transformations related to URI alias values (**addr~port~protoid**).
 +
 +==== {urialias.encode} ====
 +
 +Encode SIP URI to alias value.
 +
 +<code c>
 +"sip:127.0.0.1:5060;transport=udp"{urialias.encode} => "127.0.0.1~5060~1"
 +</code>
 +
 +==== {urialias.decode} ====
 +
 +Decode from alias value to SIP URI.
 +
 +<code c>
 +"127.0.0.1~5060~1"{urialias.decode} => "sip:127.0.0.1:5060;transport=udp"
 </code> </code>
  
cookbooks/devel/transformations.1598728861.txt.gz ยท Last modified: 2020/08/29 21:21 by miconda