Brekeke PBX Wiki

Sample ARS Plug-in

1. Code Sample – ARSMatchingSample.java

 

package yourpackage;

import java.util.*;
import java.util.regex.*;
import com.brekeke.pbx.common.*;

public class ARSMatchingSample {
	
private static long lastmodified = 0;
	private static ArrayList patternlist = null;
	
	public static synchronized String regex( String param ) throws Exception {
		long l = NoteUtils.lastModified( "Regex" );
		if( l == 0 ){
			return null; 
		}
		if( lastmodified != l ){
			lastmodified = l;
			String s = NoteUtils.read( "Regex" );
			if( s == null ){
				return null;
			}
			ArrayList al = new ArrayList();
			StringTokenizer st = new StringTokenizer( s );
			while( st.hasMoreTokens() ){
				String token = st.nextToken();
				Pattern pt = Pattern.compile( token );
				al.add( pt );
			}
			patternlist = al;
		}
		for( int i = 0; i < patternlist.size(); i++ ){
			Pattern pt = (Pattern) patternlist.get(i);
			Matcher mt = pt.matcher( param );
			if( mt.matches() ){
				return mt.group(1);
			}
		}
		return null;
	}	
}

 

This sample program refers to a note called “Regex” and matches using regular expressions. The program processes matching data strings in all rows in order starting from the top row. When the program finds a matched row, it returns the matched character strings inside parenthesis ( ). When the program can not locate a matched row, it returns null. (When null is returned, the patterns are considered mismatched.) The content of the note is cached in the variables. When a note is renewed, the program will re-read the content.

 

 

2. Example of ARS Setup

Set the following fields in ARS route’s Patterns > [Matching patterns]. Choose appropriate patterns (IN or OUT) depending on the environment.

[Matching Patterns]

From
To sip:(.+)@
User
Plugin yourpackage.ARSMatchingSample regex
Param &t1
Return (.+)

[Deploy Patterns]

From
To sip:&p1@domain.com
DTMF
Target

In the above example, user SIP ID in To header is set as a parameter “&t1“. The return value “&p1” is drawn out and set in [Deploy Patterns] To header.

 

 

3. Example of Notes Setup

Select the menu [Notes]. Brekeke PBX plug-ins can use the text in the notes.

Name Description
Name Name of the note.
Description A brief description of the note
User access level Access level
Select from “No Access”, “Read only”, “Read/Write”
Note Text field where you can write your own notes.

 

Contents of the note “Regex“:

^1650(.+)$
^1888(.+)$
^1800(.+)$

When the number is starting with “1650”, “1888”, or “1800”, the rest of the number in the parentheses will be drawn out as return value.

 

 

Related Links:

 

Yes No
Suggest Edit