Tools and Tricks #
Here we list some useful tools to streamline your development process with Genesis.
filtrate
#
The filtrate decorator allows you to filter FreeSWITCH events based on a key-value pair. A handler decorated with filtrate will only execute if the specified key exists in the event and, optionally, if its value matches.
| Argument | Type | Required | Default |
|---|---|---|---|
key | str | Yes | N/A |
value | str | No | N/A |
regex | bool | No | False |
Filter by Key #
This example processes any sofia::register event that contains the from-user key.
@app.handle('sofia::register')
@filtrate('from-user')
def register(event):
domain = event['from-host']
username = event['from-user']
date = event['Event-Date-Local']
print(f'[{date}] {username}@{domain} - Registered.')
Filter by Key and Value #
This example processes sofia::register events only if the from-user key has a value of 1000.
@app.handle('sofia::register')
@filtrate('from-user', '1000')
def register(event):
domain = event['from-host']
username = event['from-user']
date = event['Event-Date-Local']
print(f'[{date}] {username}@{domain} - Registered.')
Filter by Key and Regex Value #
This example uses a regular expression to process sofia::register events where the from-user value is a 4-digit number starting with 1.
@app.handle('sofia::register')
@filtrate('from-user', '^1[0-9]{3}$', regex=True)
def register(event):
domain = event['from-host']
username = event['from-user']
date = event['Event-Date-Local']
print(f'[{date}] {username}@{domain} - Registered.')