I have an old PBX VM system that allowed me to wrap around during voicemail message selection. At the first message I am able to select "previous" and have it jump back to the last message (so I could keep playing them in reverse order). Similar for the last message, it allows me to select "next" and it will jump to the first message. This does not force a change to the order of playback it just allows you to go in a circle to get the message you want quickly.
This new feature is enabled by default but can be disabled in the voicemail.conf file. The system knows if there are no messages, or just one, and does not play the prompts for prev/next since it's pointless.
This patch is for Branch 1.4 (about the same version as 1.4.23).
Included english audio files are not correctly licensed for distribution with asterisk and should be re-recorded to match the other asterisk prompts anyway.
vm-goingtofirst.wav "Going to the first message."
vm-goingtolast.wav "Going to the last message."
Copy WAV files to /var/lib/asterisk/sounds (and transcode as needed).
Copy patch to main asterisk source directory and run patch -p0 <vm.patch and rebuild.
I now use Cepstral as a cost effective (but not free) solution.
Cepstral is easy to install, supports Linux and Solairs, works well, sounds good most of the time, and has a choice of voices including Allison (who records the packaged prompts for Asterisk). They offer full demo downloads so you can test a working setup before you pay for it. The current tested version is 5.1 (there are bugs, but I have worked aound many of them).
At their current prices, it's $30 for the each voice and a single queued FIFO license (no matter how may voices you have paid for). For additional "ports" (concurrent use) it's $50/each in addition to the voices. You have to pay for at least 2 total concurrent uses ($100) to get beyond the single port FIFO setup.
There are at least three ways to use Cepstral with Asterisk:
There are a few other applications for Cepstral/Swift including app_swift by Will Orton and app_swift by Darren Sessions
[general] ; voice ; default: Allison-8kHz ; ; Set the voice you want swift to use; If the voice you specify is not found, ; swift should automatically use the default voice it is configured with. ; Selecting an 8kHz voice should mean less transcoding/CPU usage. ; voice=Allison-8kHz ;voice=Allison ; use_16khz ; default: no ; ; 16khz support is only for Asterisk 1.6 and only helps wideband codecs. ; Only 16kHz/22kHz voices will sound better (8kHz voices still work). ; use_16khz=no ; buffer_size ; default: 64000 ; range: 16000-1024000 (8kHz) ; range: 32000-1024000 (16kHz) ; ; Number of bytes of audio data to buffer from the Swift libraries. ; app_swift will allocate this much buffer space for each concurrent running ; swift app call. ; ; A larger buffer allows the swift lib to generate audio and complete sonner, ; reducing the amount of time we keep the swift port open (consuming a swift ; concurrency license). ; You should tune this based on the lenth of things you're having swift speak, ; how much memory you can afford to burn (more is better). ; buffer_size=64000 [cache] ; directory ; default: /tmp ; ; Directory where cached audio files should be stored. ; If directory does not exist then /tmp is used ; directory=/var/spool/asterisk/swiftcache ; general_infofile ; default: speech.txt ; ; This file in the cache directory will be appended with the text of ; the spoken phrase when recorded. This file will keep growing. ; Can be set to empty (NULL) to disable writing. ; general_infofile=speech.txt ; individual_infofile ; default: yes ; ; If set a text file (with the same MD5 hash) will be written to the ; cache directory with the phrase recorded in the audio file. ; individual_infofile=yes ; force_rebuild ; default: no ; ; If set this will always write a new audio file to the cache directory. ; force_rebuild=no ; rebuild_age ; default: 0 (none) ; ; If set to more than zero (0), the file will be rewritten if it is ; more than AGE hours old. ; rebuild_age=0 ; cleanup_files ; default: yes ; ; If set this will remove other audio files of different formats ; for the same speech text hash. This prevents old files from being used. ; Cleanup is only done when a new file is written. ; cleanup_files=yes ; output_format ; default: wav ; ; wav (default), ulaw, alaw, sln, sln16, wav16 ; 16khz support is only for Asterisk 1.6 (16khz WAV support only with patch) ; audio_format=wav
In 440 speech audio is sent directly to the channel (does not stop for DTMF).exten => 440,n,Swift(Allison likes bigfoot.) exten => 441,n,SwiftBackground(Allison likes bigfoot.) exten => 442,n,SwiftCache(Allison likes bigfoot.) exten => 442,n,Playback(${SWIFTCACHE_FILE})
New stuff to be added: Dialplan variables to control the voice options.
Allows custom pager date format in voicemail.
This is a standard feature of 1.6 Trunk.
Patch file for 1.4 (branch): pagerdate14.patch.gz
Example in voicemail.conf just after emaildateformat:
pagerdateformat=%T %D
After an attended SIP transfer is completed play a beep.
This is a standard feature of 1.6 Trunk.
Patch file for 1.4 (branch): transfer_beep_14.patch.gz
Copy patch file to your main asterisk source directory
run patch in Asterisk directory: patch -p0 <transfer_beep_14.patch
rebuild and install
I just add this to the [global] section of the extensions config file:
ATTENDED_TRANSFER_COMPLETE_SOUND=beep
Here is my current (6-Apr-2009) app_fax.c (just copy it to the apps directory)
Install the new version of SPANDSP 0.0.6pre10 and apply the fax.patch
and rebuild the system as below.
You can't use the old app_rxfax/app_txfax code with the new SPANDSP.
If you are upgrading/replacing the older app_rxfax/app_txfax just remove them from your app directory and add app_fax in their place, then rebuild. You do not have to re-run the fax.patch.
Also See: Digium bug ID #10815
Also See: Digium bug ID #11614
Also See: Digium bug ID #11796
Install additional packages needed (debian examples: apt-get install autoconf)
Download
SPANDSP 0.0.4pre18
Configure SPANDSP: ./configure
Install SPANDSP: make install
Copy app_rxfax.c and app_txfax.c to the asterisk apps directory.
modified: apps/app_rxfax.c
modified: apps/app_txfax.c (never worked correctly for me)
updated patch: fax.patch (for branch 1.4, about the same as 1.4.23)
Copy patch file to your main asterisk source directory
run patch in Asterisk directory: patch -p0 <fax.patch
remake the asterisk configure files: bootstrap.sh
run ./configure for asterisk
enable the applications from menuselect: make menuselect
Build Asterisk: make
Note there is a problem with hangups in macros with some Asterisk 1.4 versions. Please make sure you are NOT running 1.4.23. See Digium bug ID #14122[default] exten => 8605551212,1,Macro(rxfax-email,someone@somewhere.com) [macro-rxfax-email] exten => s,1,Answer() exten => s,n,Set(TIMESTAMP=${STRFTIME(,EST5EDT,%Y%m%d-%H%M%S)}) exten => s,n,Set(FILEID=${TIMESTAMP}_${UNIQUEID}) exten => s,n,Set(FAXPAGES=0) exten => s,n,Set(EMAILTO=${ARG1}) exten => s,n,RxFAX(/tmp/fax-${FILEID}.tif) exten => s,n,Hangup() exten => h,1,NoOp("Finish with RxFax") exten => h,n,GotoIf(${FAXPAGES}>0?process:done) exten => h,n(process),system(/usr/bin/tiff2pdf -z -n -f /tmp/fax-${FILEID}.tif | /usr/bin/mime-construct --header "From: FAX" --to "${EMAILTO}" --subject "FAX from ${REMOTESTATIONID} - ${FAXPAGES} Pages" --string "FAX PDF Attached" --type application/pdf --attachment "fax.pdf" --file - --output | /usr/lib/sendmail -F"FAX" -f"fax@somwhere.nett" "${EMAILTO}") exten => h,n(done),system(/bin/rm -f /tmp/fax-${FILEID}.tif) exten => h,n,Hangup()
The patch has been updated for 1.4.29, download the patch from the bug report. My older patch I use for 1.4.23 remote_id_branch.patch.gz (updated Jan 2009)
Copy patch file to your main asterisk source directory
run patch in Asterisk directory: patch -p0 <remote_id_branch.patch
enable the dialplan function from menuselect: make menuselect
Build Asterisk: make
Notes:
Old Notes (no longer apply):