I have been assigning a button on the Polycom VVX phones to allow users to access their voice mail from the phone easier that simply is a speed dial to *97 with a button label "My VoiceMail". Why? Because by default when a user presses the dedicated messages key (that has the picture of an envelope) the user is shown a screen titled "Messages". There they press 1 or Select soft key to choose "Message Center". Then a screen shows a summary count urgent, new and saved messages totals and the user can then press the Connect soft key to connect them to *97 to be prompted for their password. This shortens up the process by 2 key presses and is more simple for the user.
I found an option to change the messages key so it does not display the summary and just dials the voice mail server access number.
This is from the admin guide for 5.3.0 software:
up.oneTouchVoiceMail
default is 0
If 1, the phone dials voicemail services directly (if available on the call server) without displaying the voicemail summary. If 0, the phone displays a summary page with message counts. The user must press the Connect soft key to dial the voicemail server
To change the messages key to have one touch access to voice mail do this:
In FusionPBX web GUI, click Advanced, Default Settings add a new entry:
Category=provision
Subcategory=polycom_onetouchvoicemail
Type=text
Value=1
Enabled=True
Description=If 1, the phone dials voicemail services directly (if available on the call server) without displaying the voicemail summary. If 0, the phone displays a summary page with message counts. The user must press the Connect soft key to dial the voicemail
Then go to Status, Registrations and find the phone(s) you want to update and click "Provision"
Check to see if the number dialed matches an extension if it does then transfer to the extension if it doesn't then transfer the call back to the IVR Menu.
use table.concat as a workaround to spaces in filesames
alternative is adjust all destiantions to quote filenames, but would
require app_defaults catch to fix all exisiting written destinations.
* Update device_profile_edit.php
Changed maximum key number to be able to program phones with multiple expansion boards
* Raised Device Key Maximum Number
Changed maximum key number to be able to program phones with multiple expansion boards
Also replaced while loop with for loop to match device_profile_edit.php
* Added code for all key types
Added code for all programmable key types, Hard Keys, Soft Keys, Top Keys and Expansion keys.
Also added logic to handle key assigrnment for multiple expansion boards
* Enabled time server and disabled auto discovery settings
Enabled time servers and used system variable from default settings to set time server
Disabled Link-Layer Discovery and Universal Plug and Play because why do you need to re-discover the server after the phone is provisioned
* Updated the key number option generation line
* Updated the key number option generation line
* Add. `force_ping` option for extension
This option force FS send SIP OPTIONS message to
detect if this reged device still available.
* Update language file.
* 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`
* 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
* 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`
Change provision variables so it will show up in a more logical order.
yealink_remote_phone_book_1_name to yealink_remote_phonebook_1_name
yealink_remote_phone_book_1_url to yealink_remote_phonebook_1_url
When handling phrases get the specific phrase instead of all of them. Remove the code that tried to build the XML from the file system. Replace it with a 'not found' response so that FreeSWITCH will check the filesystem for the XML of the phrase that was not found.
* Renamed template variable account to voicemail_id and adjusted all
templates
* Added ${voicemail_description}
* Added ${voicemail_name_formatted} (will render the voicemail identifier in accordance with Default/Domain Settings > Voicemail > display_domain_name)
* Updated templates to be consistent spacing
* Updated templates to include use of ${voicemail_name_formatted}
* Changed ${account} to be voicemail_name_formatted instead of id
This corrects the issue in #1760, where the default voicemail message was not being played and instead skipped directly to recording (start recording tone).
Voicemail greeting will not play after being transferred from IVR #1749. Replace session:streamFile( with session:execute("playback", fixes this problem.
* 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
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()
```