ESPA Monitor
The Document describes how to configure ESPA Monitor.
Created: March 2019
WMS version 4.x
Permalink: https://wildix.atlassian.net/wiki/x/VwjOAQ
Update to WMS version 4.x: in case you've set up the integration on WMS version 3.88, after the upgrade to WMS 4.x, update the configuration following this guide (otherwise the integration will stop working).
In case you are using WMS 3.88, follow the links below for documentation:
ESPA Monitor configuration
Common problem for healthcare/pager devices is that despite of using the protocol with strict specification (ESPA 4.4.4) there is a lot of possibilities in message formats which sent from the device and can be configured on the device to send any kind of information. This way even same models in different installations may send absolutely different messages and have different requirement for messages screening or transmitting into pager/phone devices. To add more flexibility and get rid of BASH programming when setting up the system this version uses set of rules built over POSIX extended regular expressions that can describe messages formats and transformations.
Configuration file is organized as ini-style key-value sets split into sections.
There are following special sections:
- [logger]: represents logger configuration
- [rule_*]: any section name starts with rule_ is message parse and action rule
- Pager configuration section may have any name which is not conflicting with special sections listed above.
Section [logger]
- log_level=<level> where level is a number between 1 and 5 describing verbosity of logs
- log_type = file | syslog
- log_file = <path to log file> must be set for log type ‘file’
Section [rule_*]
- Rule name must start from rule_ and have unique name
- Rules evaluated from top to bottom according to pattern best match
If some rule has most common pattern then it should be placed at the bottom of the configuration file.
- pattern = <regex> pattern for message to match. Pattern is POSIX extended regular expression
- action = call|callscript|skip call - place a call with set parameters into spool_dir configured in pager
- callscript - call the script with command line parameters
- skip - just skip the message
- callerid = line CallerID parameter to place into call. May contain variables
- context = line context to place the call into. Default is ‘alarm’
- extension = line extension. Default is ’s’. May contain variables
- channel = line Channel parameter for call file. May contain variables
- callscript = <comman> script to call for action script. May contain variables
- value[name]=<regex> set up values to use in parameters. Name is variable name that can be used as $name in configuration lines like callerid etc.
- regex is POSIX extended regular expression over incoming message
- Value built as a set of matches enclosed into () in the pattern
in example for message: AP CHAMBRE 11 we can set up value like value[number]=^AP CHAMBRE ([0-9]+)$. In this case resulting variable $number will have value ’11’/
There are special variables %alarm%, %message% and %number% that can be used in the configuration.
Pager configuration
Section name may be any but different from special names defined above.
- host=<hostname|ip> IP address or host name to connect
- port=<port> TCP port for connection
- protocol=espa|ascii define protocol to use. ESPA 4.4.4 or ASCII messages. Default is espa
- no_check_bcc=yes|no whether check or not checksums for ESPA messages. For most systems
set to ‘yes’ to skip BCC checking.
spool_dir=path spool directory for call weaver to place call files
default_rule=rule_name use this rule as default
rules=<comma separated> Comma separated list of rule names to use for this pager. Other
rules are not going to be validated.
Configuration example
Let’s review ESPA Televic system.
It may receive messages of following types:
- AP CHAMBRE 12
- AT CHAMBRE 14
- PT CHAMBRE 12
- T AP CHAMBRE 12
- R AP CHAMBRE 12
Messages may have leading or trailing whitespaces. Messages AT and PT should have no action.
The working configuration is as following:
[logger] log_level=3 log_type=file log_file=/var/log/espamonitor.log [paging_1] host=10.135.0.254 port=4001 protocol=espa no_check_bcc=yes spool_dir=/var/spool/callweaver/outgoing/ default_rule=rule_skip rules=rule_call_ap:rule_call_rt selection=bestmatch ;chain|firstmatch ; message processing rules ; patterns are POSIX extended RE ; action: call|none|path where path is command line with arguments for shell script ; for ESPA there is special variable %number% exists ; rules [rule_call_ap] pattern=^[ ]*AP[ ]+[^ ]+[ ]+[0-9]+[ ]*$ action=call value[room]=^[ ]*[^ ]+[ ]+CHAMBRE[ ]+([0-9]+)[ ]*$ value[addr]=^[ ]*[^ ]+[ ]+([^ ]{2})[^ ]*[ ]+[0-9]+[ ]* value[alarm]=^[ ]*([^ ]+)[ ]+.*$ callerid='"$alarm $addr" <$room>' extension=$alarm channel=Local/1234@users context=alarm [rule_call_rt] pattern=^[ ]*(R)|(T)[ ]+[^ ]+[ ]+[^ ]+[ ]+[0-9]+[ ]*$ action=call value[num]=^[ ]*[^ ]+[ ]+[^ ]+[ ]+[^ ]+[ ]+([0-9]+)[ ]*$ value[addr]=^[ ]*[^ ]+[ ]+[^ ]+[ ]+([^ ]{2})[^ ]*[ ]+[0-9]+[ ]* value[alarm]=^[ ]*([^ ]+[ ]+[^ ]+)[ ]+.*$ callerid='"$alarm $addr" <$room>' extension=$alarm channel=Local/1234@users context=alarm [rule_skip] action=none
Common configuration for ESPA Televic system:
[logger] log_level=3 log_type=file log_file=/var/log/espamonitor.log [paging_1] host=10.135.0.254 port=4001 protocol=espa no_check_bcc=yes spool_dir=/var/spool/callweaver/outgoing/ default_rule=rule_makecall ; message processing rules ; patterns are POSIX extended RE ; action: call|none|path where path is command line with arguments for shell script ; for ESPA there are special variables %number% and %message% ; ; rules [rule_makecall] action=call callerid=\"%message%\" <%number%> value[ext]="^([^ ]{3}).*$/\1 extension=$ext channel=Local/1000@users context=alarm