<p>A template file is a set of instructions telling the system how to
extract the necessary information from the data that is sent from
your PABX (or PABXs).</p>

<p>A sample template is shown here to demonstrate its use.  This example
is not a complete template and should not be used:</p>
'IPBX Demo Template
'Created 13 May 2001
'at 20:14 by JOHNSMITH

Type = TEXT

[Options]

HeaderLike = " DATE ##-???-##*"
HeaderTake = "      xxxxxxxxx"

[CallTypes]

'Outgoing Direct
##-???-## ##:##:## 		???#:##   ###  
aa bbb cc  dd ee ff 	hhhh ii   jjj  
1
<p>The file consists of a <span class="keyword">Type</span>, any <span class="keyword">Options</span> required to pre-process the data before it is useable, and a <span class="keyword">CallTypes</span> section which holds the information necessary to extract the various call record components from the raw data.</p>

<h2>[Type] Section</h2>

<p>This describes how the information is presented to the software.  This can be one of the following:</p>

<table class="confluenceTable">
	<tbody>
		<tr>
			<th class="confluenceTh" width=120>Type</th>
			<th class="confluenceTh" width=480>Description</th>
		</tr>
		<tr>
			<td class="confluenceTd"><b>TEXT</b></td>
			<td class="confluenceTd">Denotes that the data consists of plain text subscribing to the ASCII standard.</td>
		</tr>
		<tr>
			<td class="confluenceTd"><b>BCD2.4</b></td>
			<td class="confluenceTd">Binary-coded Decimal values, such as the proprietary format used in the Siemens Realitis PBX.</td>
		</tr>
		<tr>
			<td class="confluenceTd"><b>EXTERNAL</b></td>
			<td class="confluenceTd">Informs the system that the data needs to be passed to another separate application before processing is possible.

<p>This setting also requires the path to the external application to be supplied in the [Options] section under the key name ExtPPFilename.</p></td>
		</tr>
	</tbody>
</table>


<h2>[Options] Section</h2>

<p>This section contains the various settings to determine what (if any) pre-processing of the raw data is necessary before the individual call record elements can be extracted. Possible options are as follows:</p>

<table class="confluenceTable">
	<tbody>
		<tr>
			<th class="confluenceTh" width=120>Option</th>
			<th class="confluenceTh" width=480>Description</th>
			<th class="confluenceTh">Default value</th>
		</tr>
		<tr>
			<td class="confluenceTd"><b>EndTime</b></td>
			<td class="confluenceTd">Informs the call processor that the call time specified is actually the time that the call ended.  This ensures that the duration of the call is subtracted from the given call time to achieve the effect of start time.  All call data stored in the call database assumes that the call time is the time that the call started, not ended.</td>
			<td class="confluenceTd"><span class="keyword">true</span> or <span class="keyword">false</span></td>
		</tr>
		<tr>
			<td class="confluenceTd"><b>SubtractAnswerTime</b></td>
			<td class="confluenceTd">Tells the call processor to subtract the answer time from the call's duration.  Use this if the duration of a call includes the answer (or response) time, and you don't want it to.</td>
			<td class="confluenceTd"><span class="keyword">true</span> or <span class="keyword">false</span></td>
		</tr>
		<tr>
			<td class="confluenceTd"><b>AddAnswerTime</b></td>
			<td class="confluenceTd">Similar to above, but tells the call processor to add the answer (or response) time to the call duration, if the PBX doesn't include it already.</td>
			<td class="confluenceTd"><span class="keyword">true</span> or <span class="keyword">false</span></td>
		</tr>
		<tr>
			<td class="confluenceTd"><b>StartEndDuration</b></td>
			<td class="confluenceTd">This is used when a PBX outputs the call start time and the call end time separately, but issues no duration time.  Because the system requires a call duration, you quote the end time as though it were the duration.  This option then instructs the system to subtract the value specified for call time (elements d, e and f) from the value specified for duration (elements g, h and i) to achieve the correct duration.</td>
			<td class="confluenceTd"><span class="keyword">true</span> or <span class="keyword">false</span></td>
		</tr>
		<tr>
			<td class="confluenceTd"><b>Lines</b></td>
			<td class="confluenceTd">Informs the system how many lines make up a call record.  Requires the Line1 option in order to know how to recognise the first line of a call record.  The pre-processor will then amalgamate all lines of a call record into a single line.</td>
			<td class="confluenceTd"></td>
		</tr>
		<tr>
			<td class="confluenceTd"><b>Line1</b></td>
			<td class="confluenceTd">Shows the system how to identify the first line of a call record.  The system then knows how many further lines are necessary before the amalgamation occurs (see Lines option, above).</td>
			<td class="confluenceTd"></td>
		</tr>
	</tbody>
</table>


<h2>[CallTypes] Section</h2>

<p>This section contains descriptions for each type
of call - eg. outgoing, incoming answered, incoming abandoned, etc.
- including what that type of call 'looks' like (how the system
identifies a line of PBX data as such), how to extract the call
record elements from the line, and finally a code that pertains to
the particular type of call.</p>

<p>Each type of call consists of three lines (excluding comments), for example:</p>
'Outgoing Direct Dial
##-???-##  ##:##:##             ???#:##   ###   ###   ####?????????????????????????????????##*
aa bbb cc  dd ee ff             hhhh ii   jjj   mmm   kllllllllllllllll
1
<p>The first line (<span class="keyword">##-???-##  ##:##:##</span>) is the match line, which tells the system how to match this particular call type.  The <span class="keyword">#</span> symbol indicates any digit between 0 and 9, and a <span class="keyword">?</span> symbol indicates any character including letters and numbers.  The <span class="keyword">*</span> symbol at the end of the line is important if there may be other data attached to the line that you're not interested in.  The <span class="keyword">*</span> indicates that anything else on the line does not matter.</p>

<p>The second line (<span class="keyword">aa bbb cc  dd ee ff</span>) tells the system how to extract each call record element from the line of data.  In this example, the <span class="keyword">aa</span> spans the first two characters of the data line meaning that the call date's day should be taken from here; <span class="keyword">bbb</span> spans three characters starting at column 4 showing where the month is taken from, and so on.</p>

<p>The third line represents the number associated with the type of call.  These call type numbers are internally used to identify types of calls and are summarised as follows:</p>

<table class="confluenceTable">
	<tbody>
		<tr>
			<th class="confluenceTh" width=120>Call Type #</th>
			<th class="confluenceTh" width=480>Type of Call</th>
		</tr>
		<tr>
			<td class="confluenceTd"><b>1</b></td>
			<td class="confluenceTd">Outgoing direct dialled</td>
		</tr>
		<tr>
			<td class="confluenceTd"><b>2</b></td>
			<td class="confluenceTd">Outgoing transferred (or operator-assisted)</td>
		</tr>
		<tr>
			<td class="confluenceTd"><b>100</b></td>
			<td class="confluenceTd">Incoming, Answered, direct dialled (DDI)</td>
		</tr>
		<tr>
			<td class="confluenceTd"><b>101</b></td>
			<td class="confluenceTd">Incoming, Answered, transferred, or as a result of a transfer</td>
		</tr>
		<tr>
			<td class="confluenceTd"><b>150</b></td>
			<td class="confluenceTd">Incoming, Abandoned, direct dialled (DDI)</td>
		</tr>
		<tr>
			<td class="confluenceTd"><b>151</b></td>
			<td class="confluenceTd">Incoming, Abandoned, transferred on, or by transfer from another extn</td>
		</tr>
		<tr>
			<td class="confluenceTd"><b>200</b></td>
			<td class="confluenceTd">Internal call (extension to extension)</td>
		</tr>
		<tr>
			<td class="confluenceTd"><b>300</b></td>
			<td class="confluenceTd">PBX Feature (dialled number should contain the feature number)</td>
		</tr>
	</tbody>
</table>