Commit Graph

112 Commits

Author SHA1 Message Date
Alexey Melnichuk
41083c7a8c Fix. crash when using EventCounsumer.ievents iterator. (#2865)
Problem code is
``` Lua
for event in ievents{'SHUTDOWN','CUSTOM::event'} do
end
```
2017-10-06 12:36:23 -06:00
Alexey Melnichuk
f308e2a30e Fix. Cache class. (#2755)
* 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.
2017-07-26 09:40:53 -06:00
FusionPBX
4cba425e11 Update cache.lua 2017-07-22 15:18:20 -06:00
FusionPBX
5ddedc8afa Update cache.lua 2017-07-22 15:17:11 -06:00
FusionPBX
1804dcc344 Update cache.lua 2017-07-22 12:38:45 -06:00
FusionPBX
cf0fbb0f93 Update cache.lua 2017-07-22 01:09:39 -06:00
FusionPBX
942293debe Update lazy_settings.lua 2017-07-22 00:38:25 -06:00
Alexey Melnichuk
c36be184b8 Fix. Stack overflow when calls base actor. (#2706) 2017-06-22 00:14:28 -06:00
Alexey Melnichuk
6fc6e231c8 Add. BLF indication for call forward. (#2664)
* Add. BLF indication for call forward.

To display general status of CallForward use blf like `forward+<extension>`
To display status for specific phone number use blf like `forward+<extension>/<number>`

* Fix. Escape variable in regex expression.

* Fix. Sync DND and CF blf.

* Add. `blf_subscribe` service which can handle all custom subscriptions.

To run for specific protocol it possible run as `luarun blf_subscribe.lua <PROTO>`
2017-06-20 09:23:23 -06:00
Alexey Melnichuk
a7d58e14c7 Add. Support DND feature via BLF key (#2606) 2017-05-29 09:50:20 -06:00
Alexey Melnichuk
d390270b2e Fix. Improve parameters patterns. (#2218)
E.g. now it handle queries like
```Lua
local sql = "select :J::text as value"
print(dbh:first_value(sql, {J='hello'}))
```
2017-04-22 10:18:10 -06:00
Alexey Melnichuk
debfcbbc5b Fix. Escape strings in regex api (#2523) 2017-04-20 07:48:49 -06:00
FusionPBX
02a505e4d2 Update route_to_bridge.lua 2016-12-23 02:16:22 -07:00
FusionPBX
b9b3fd6494 Update route_to_bridge.lua 2016-12-23 01:52:19 -07:00
Alexey Melnichuk
915c5dea48 Fix. Fetch correct arrays from settings. (#2162)
* Fix. Fetch correct arrays from settings.
Add. Use params in `settings.lua`

* Fix. array from domain settings overwrite entire array from default settings instead of appends it.
2016-11-23 03:50:00 -07:00
Alexey Melnichuk
085b6e9419 Fix. Use local err variable in apply_param (#2152) 2016-11-22 16:48:54 -07:00
Alexey Melnichuk
b347917700 Add. Use params in send_mail.lua (#2142) 2016-11-22 11:10:18 -07:00
Alexey Melnichuk
a6ac29bd49 Add. Use params in lazy_settings.lua (#2118) 2016-11-21 13:51:39 -07:00
Alexey Melnichuk
3baa517b1d Add. Use params in route_to_bridge.lua (#2119) 2016-11-21 13:51:21 -07:00
Alexey Melnichuk
e3e598ce82 Add. Extend database API to support parameters. (#2086) 2016-11-17 11:41:16 -07:00
Chris Black
e7fae7587e add built in ability for microsoft bing speech to text (#1960)
* add built in ability for microsoft bing speech to text

* move json.lua to lower case and more error checking in record_message

* Replaced Creative Commons json.lua with lunajson.lua which is MIT license

https://github.com/grafi-tt/lunajson/blob/master/LICENSE
2016-11-03 16:11:21 -06:00
Alexey Melnichuk
4176144da4 Add. attr_xfer analog based on conference. (#1629)
* Add. attr_xfer analog based on conference.

Control DTMF sequence
 `*0` transfer `self` to `enter number` state and `peer` leg to conference room
 `##` transfer `self` to `enter number` state and hangup `peer` leg
 `*#` transfer `self` to conference room and hangup `peer` leg

* Remove spaces.

* Add. Commented action to ring group.
2016-08-30 01:10:08 -06:00
DigiDaz
57d2d955f3 Fixed scripts to get multiserver memcache working (#1795) 2016-08-04 11:40:36 -06:00
Alexey Melnichuk
868c7dd153 Change. Use service::control event to control services (#1790)
* Change. Use `service::control` event to control services

This is more FS way. E.g. sofia sends `sofia::register` event
and add all information to headers. So now `service` script
emit `fusion::service::control` event and each service responsible
for test its own name. This also allows add in future evnets to
e.g. monitor service status like `fusion::service::satus` so it
will be possible write service which will be restart services.

* Change. rename service name from `flow` to `call_flow`
2016-08-02 14:00:49 -06:00
Alexey Melnichuk
91ce171472 Simplify is_uuid function. (#1781)
* Simplify `is_uuid` function.

Also because it returns now value itself it possible write
```Lua
my_uuid = is_uuid(value1) or is_uuid(value2)
```

* Change. Ensure `is_uuid` returns only boolean value
2016-07-28 16:49:36 -06:00
Alexey Melnichuk
daa3d72014 Add. Support service stop command for odbc_pool. (#1782) 2016-07-28 08:16:54 -06:00
Mafoo
e3a3bbcd9f BugFix-add missing default ringback to lua (#1682)
add processing of when ringback is set to default_ringback and correctly
set it to the current value of the globalvar for ringback
2016-07-27 20:06:41 -06:00
Alexey Melnichuk
d47151ba8d Add service script and make timout optional for EventConsumer ctor (#1775)
* Change. Pass pid file first. Because there really no need pass timeout.
Add. `fsc` script to be able shutdown MWI and Call Flow subscribe services.

* Change. rename `fsc` to `service`.

* Change. Use `stop` command instead of `shutdown`
2016-07-26 11:58:37 -06:00
FusionPBX
2c0452d591 Create is_uuid.lua
Add a new lua function to determine if a string is a uuid.
2016-07-23 13:40:57 -06:00
Alexey Melnichuk
149064f5e1 Fix. Properly stop (e.g. remove pid file) event consumer loop in case of error. (#1766) 2016-07-21 07:47:54 -06:00
Alexey Melnichuk
d2ce44736a Fix. Lua can not generate non CUSTOM event with subclass. (#1756)
There 2 way.
First one generate `MEMCACHE` event without subclass
Second generate `CUSTOM` event with subclass e.g. `fusion::memcache`
2016-07-14 11:33:54 -06:00
Alexey Melnichuk
9076df2302 Add. Support onInterval method to EventConsumer class (#1747)
* Add. Support `onInterval` method to EventConsumer class

Usage
```Lua
-- execute action each 30 sec
events:onInterval(30*1000, function() end)

-- execute action once after 5 min
events:onIntervalOnce(5*60*1000, function() end)
```

* Fix. Remove timers

* Fix. Reset timer before callback

It allows stop timer inside callback.
Also it produce more accurate interval invocation
if callback take quite a long time.
E.g. Interval = 10 sec and callback took 5 sec then
if we reset timer after this callback then gap between
invocation will be 15 sec.

* Add. Timers now have TimeEvent class type.

Add. `reset` method to IntervalTimer class.

```Lua
events:onIntervalOnce(1000, function(self, timer)
  -- timer has type TimeEvent

  -- restart timer so it will be invoke again
  timer:restart()

  -- or reset new interval
  -- timer:reset(5000)
end)
```

* Fix. Typo in variable name
2016-07-13 09:43:51 -06:00
Alexey Melnichuk
cae644c8a1 Add. EventConsumer class. (#1741)
Rewrite MWI and CallFlow subscribe handlers based on EventConsumer class.
Also on my test VirtualBox/Debian system Lua function `os.clock` produce
very strange result(delta ~0.015 for 1 second) so I switch to `os.time`.
Now to to stop this background Lua scripts it possible send CUSTOM event
with subclass `fusion::XXX::shutdown`. Where XXX is `mwi` or `flow`.

Usage of EventConsumer class
```Lua
-- create new object with timeout one minute
local events = EventConsumer.new(60000)

-- bind to some FS event
events:bind("SHUTDOW", function(self, name, event) ... end)

-- bind to another FS event with subclass
events:bind("CUSTOM::fusion::mwi::shutdown", function(self, name, event) ... end)

-- handle timeout event
events:on("TIMEOUT", function(self, name) ... end)

--run event loop
events:run()
```
2016-07-08 13:10:43 -06:00
Alexey Melnichuk
3d1f5b6866 Add. Support multiple events. (#1736)
Now subscriber stops and remove pid files when FS shutdown.
So if you use Status->Services you will see correct status.
2016-07-06 12:37:16 -06:00
Alexey Melnichuk
8a72e2afd8 Add. Event handler to support MWI. (#1720)
* Add. Event handler to support MWI.

* Fix. store cache only when get data from memcache

* Change. Use UUID as PID.
2016-06-30 09:55:37 -06:00
Alexey Melnichuk
f8c2904aaf Add. option to store setting in memcache. (#1707) 2016-06-26 11:43:32 -06:00
Alexey Melnichuk
61d6f0be6c Add. Handler for SUBSCRIBE method for call flow application. (#1701)
* Add. Handler for SUBSCRIBE method for call flow application.

Usage:
1. Run form fs_cli `luarun call_flow_subscribe`
2. Create new call flow extension and set feature code to `flow+<EXTENSION>`(e.g. `flow+401`).
3. Set on the phone BLF key to `flow+401`

This code based on `mod_valet_parking`.

* Add. prevent running 2 copy of script.

Remove some unused vars and simplify implementation.

* Fix. Use correct protocol for send event.

* Fix. Do escape SQL arguments

* Fix. escape `+` sign in call flow extension.
2016-06-24 10:32:19 -06:00
Alexey Melnichuk
03e62d9e91 Add. Support sound prompts on call flow. (#1645)
This file uses new way to load recordings from DB.
2016-06-11 07:33:16 -06:00
Alexey Melnichuk
add8222cff Add. Support bridge mode to call forward from Lua. (#1631) 2016-06-08 07:33:55 -06:00
Alexey Melnichuk
93e50ff1df Add. role to be able select database backend in constructor.
To configure use `database.backend` option
It can be a string value like `database.backend = 'native'`.
So it will always use same backend.
Or it can be a table value like
```Lua
database.backend = {
  main   = 'native';
  base64 = '';
}
```
Role `database.backend.main` is predefined and it equal to `native` if not set.
If there no role when Database class creates or role unknown role `main` is used
```Lua
dbh = Database.new('system') -- uses role `main`
dbh = Database.new('system', 'main') -- same as previews
dbh = Database.new('system', 'base64') -- uses role `base64`
dbh = Database.new('system', 'test')   -- uses role `main`
```
2016-03-25 10:04:48 +03:00
mafoo
0eb7d5ddac WhitespaceClean-resources/install/scripts
whitespace pass over files
for reference regex that was used s/[ \t]+(\r?\n)/\1/
2016-03-11 13:21:52 +00:00
Alexey Melnichuk
f2c43cb441 Fix. FreeSWITCH also breaks loop if return string value which contain number.
```Lua
dbh:query(sql, function()
  return "1" -- breaks loop
end)
2016-02-26 14:17:28 +03:00
Alexey Melnichuk
bd4fa2a537 Fix. LuaSQL db backend breaks loop only on positive numbers. 2016-02-26 13:57:32 +03:00
Alexey Melnichuk
b797775720 Fix. ODBC db backend should breaks loop only when callback returns number ~= 0
```Lua
dbh:query(sql, function(row)
  -- return 0     -- should not break loop
  -- return true  -- should not break loop
  return 1 -- should break loop
end)
```
2016-02-26 13:52:27 +03:00
Alexey Melnichuk
466f85a0be Move scripts to separate dirs. 2016-02-24 14:44:50 +03:00
Alexey Melnichuk
4735d9f41c Fix. unpack moved to table in Lua 5.2 2016-02-20 15:22:28 +03:00
Alexey Melnichuk
6035d4033c Fix. connected method on LuaSQL backend. 2016-02-20 15:20:38 +03:00
Alexey Melnichuk
80746dbe3b Add. Support multiple database backends.
```Lua
local Database = require 'resources.functions.database'

-- Default backend configured via xml_handler.db_backend = 'native'
dbh = Database.new("system")

-- To use other backends you can use
dbh = Database.backend.luasql("system")
```
2016-02-19 17:03:45 +03:00
markjcrane
e18a556643 Prevent nil from crashing the lua script. 2016-02-10 13:49:31 -07:00
FusionPBX
254ecafad3 Merge pull request #1420 from moteus/fix_partial_dialplan
Fix. Do not build context if there error.
2016-02-03 21:32:15 -07:00