When bridge application ends with "originate_disposition: ALLOTTED_TIMEOUT" for example, the "missed call" feature doesn't work for ring group because of hangup hook isn't called. Should we just avoid using this channel variable or add additional processing at the end? Like for timeout action? I choose to call "missed" at the end of script. But may be we should add it to other places too?
* Make storage_path work
if storage_path was set, the script would fail. I have fixed it by removing the references to unset variables. I also made the recordings use the path.
* Update ivr.conf.lua
Add storage_path definition so storage_type of http_cache works correctly
* BLF of agent status "agent+username@domain.com
Add the ability to monitor the availability status of a call center agent with "agent+agentname@domain.com".
* Update index.lua
Send notify to blf with "agent+agentname@domain.com"
* Added a simple selfhosted voicemail transcription API client
* Minor logging cleanup
* Add some string escaping to handle transcription providers
* Add JSON handling (optional) to selfhosted API
If the message is too short then the result is nil.
Error occurs in this case: record_message.lua:97: attempt to index field 'results' (a nil value)
Added check if transcribe_json["results"] is nil.
* Added support for regular expressions in the numbers to be blocked.
Reduced the caching timeout, as the counter is only incremented when a call is blocked and the number is not cached.
* Added default sort order.
* Added option to switch on/off use of regular expression matching for pgsql and mysql.
* Added support for sqlite and updated default number match to "LIKE" as suggested by MafooUK on IRC.
* Selection of behavior (default [=], regex or like matching) is now done via the variable call_block_matching = regex|like|EMPTY - type text - in the Call Block section of Default Settings.
* Updated comment to match new matching.
This change reduces the strain on the system by running the OS command through Freeswitch rather than directly from Lua. When running directly from Lua it causes RTP jitter in a high capacity system.
Changed SIP NOTIFY Event header for Grandstream phones to allow provisioning with out requiring a reboot of the device. Based on communication with a Grandstream support rep. Tested on Grandstream GXP2130 and GXP2160 models.
* Fixed formatting.
* Sendmail to use smtp_from variable
Changed sendmail to use smtp_from as the from address to keep from being blocked by spf check during spam filtering on recieving end.
1. Allow custom sound_pin & sound_extension
2. Allow customization of max_tries, pin_tries & extension_tries
3. Add fallback_destination - fall to it if caller did not entered extension number
4. Allow custom digit_timeout
This scenario was broken:
A ring group member forwards their phone to a destination. The destination is an external number and the outbound route had a toll_allow condition.
This error would be generated: [ERR] switch_cpp.cpp:1376 [route_to_bridge] Unsupportded condition: ${toll_allow}
This PR will get the toll_allow values from the RG member that is forwarding their phone. Then it will pass it to 'route_to_bridge.lua'.
* Add. Use `route_to_bridge` module to build routes fro ring groups.
This commit has several improvements
1. Select only needed fields. (do not select quite big XML text strings)
2. Filter routes also by context name
3. Filter dialplans also by hostname
4. Handle conditions based not only `destination_number`
5. Handle `break` and `continue` attributes for extensions
6. Escape vars inside dial-string
7. Add log messages similar as FS dialplan do
* Add. `route_to_bridge` set inline vars so it possible use then in next conditions.
Add. `route_to_bridge` can execute basic api commands from allowed lists.
`route_to_bridge` expand all known vars. If var is unknown then it pass as is.
Fix. `export nolocal:` action.
* Fix. Short variable names
* Add. some comments
* Fix. Do not try execute empty string
This produce error messages `[ERR] switch_cpp.cpp:759 No application specified`
* Fix. Export nolocal values.
* Fix MWI for Extensions that with 0
MWI was not turning off after messages were deleted for extensions that start with 0. This requires that real voicemail_id to be pulled from the database and not just taken from the destination number. To get around this we try to send mwi to the original vociemail_id (destination number) and voicemail_id_copy (from database). Index.lua is already doing something similar.
* Update listen_to_recording.lua
* Update menu_messages.lua
when debug["xml_string"] is on, it will overwrite /tmp/ivr.conf.xml file each hit an ivr goes. this makes very hard to trouble shoot in a living system. this patch allows to put one ivr menu per file.
* Add sendevent when using file caching
* Create clear_cache.lua
FS receives a command via curl to call this script which deletes the single cache entry or flushes the entire cache.
* Create file_cache.lua
This scripts monitors for custom events. When an event is processed it will send out a command via curl to other FS servers telling them to clear their cache.
This must be called from conf/autoload_configs/lua.conf.xml
<param name="startup-script" value="app/server/resources/memcache.lua"/>
Search all profiles for the sofia_contact. For some reason on server it would automatically search all profiles, but on the other servers I had to add "*/".
Break the ring group query into two parts. One for getting the ring group info. Another for getting the ring group user.
If a user was not assigned to a ring group, then the query will fail to return a result. This will cause forward, prefix, distinctive ring, etc to not work properly.
* Update index.lua
Store password complexity settings as variables.
* Update macro.lua
Add macros for "password is below minimum length" and "password is not secure"
* Update change_password.lua
Adds the ability to check for password complexity and minimum length.
Also, fixes a bug where the password was changed if the caller hung up in the middle of changing their password.
* Fix. Cache class.
* `send_event` raise error so `Cache.del` did not remove key or send any event
* use `memcache` method by default even if `cache` table does not defined in config
* `Cache.get` did not return any data when use `memcache` method
* `Cache.get` did not close file. (Its should not be a big problem because GC should do it by self).
* `Cache.get` can returns some undefined global value. (if method is `file` and file not exists then method returns global `result` value)
* `Cache.get` does not need check for file existence
* Value escaping does not needed for `file` method
* Needed different key escaping for `memcache` and `file` methods
* Update self test
* Change. Use random names for temp files.