Skip to content
Snippets Groups Projects
CHANGES 298 KiB
Newer Older
  • Learn to ignore specific revisions
  •      Wait() app now really does 0.3 seconds- was truncating arg to an int.
         WaitExten() same as Wait().
         Congestion() - Now takes floating pt. argument.
         Busy() - now takes floating pt. argument.
         Read() - timeout now can be floating pt.
         WaitForRing() now takes floating pt timeout arg.
         SpeechBackground() -- clarified in the docstrings that the timeout is an integer seconds.
      * Added 's' option to Page application.
    
      * Added an optional timeout argument to the Page application.
    
      * Added 'E', 'V', and 'P' commands to ExternalIVR.
    
      * Added 'o' and 'X' options to Chanspy.
      * Added a new dialplan application, Bridge, which allows you to bridge the
         calling channel to any other active channel on the system.
      * Added the ability to specify a music on hold class to play instead of ringing
         for the SLATrunk application.
      * The Read application no longer exits the dialplan on error.  Instead, it sets
         READSTATUS to ERROR, which you can catch and handle separately.
    
      * Added 'm' option to Directory, which lists out names, 8 at a time, instead
         of asking for verification of each name, one at a time.
    
      * Privacy() no longer uses privacy.conf, as all options are specifyable as
         direct options to the app.
    
      * AMD() has a new "maximum word length" option. "show application AMD" from the CLI
         for more details
    
      * GotoIfTime() now may branch based on a "false" condition, like other Goto-related applications
    
      * The ChannelRedirect application no longer exits the dialplan if the given channel
         does not exist. It will now set the CHANNELREDIRECT_STATUS variable to SUCCESS upon success
         or NOCHANNEL if the given channel was not found.
    
      * The silencethreshold setting that was previously configurable in multiple
         applications is now settable globally via dsp.conf.
    
    Music On Hold Changes
    ---------------------
    
      * A new option, "digit", has been added for music on hold classes in
    
         musiconhold.conf.  If this is set for a music on hold class, a caller
         listening to music on hold can press this digit to switch to listening
         to this music on hold class.
    
      * Support for realtime music on hold has been added.
      * In conjunction with the realtime music on hold, a general section has
    
         been added to musiconhold.conf, its sole variable is cachertclasses. If this
         is set, then music on hold classes found in realtime will be cached in memory.
    
      * AEL upgraded to use the Gosub with Arguments instead
         of Macro application, to hopefully reduce the problems
    
         seen with the artificially low stack ceiling that
    
         Macro bumps into. Macros can only call other Macros
         to a depth of 7. Tests run using gosub, show depths
         limited only by virtual memory. A small test demonstrated
         recursive call depths of 100,000 without problems.
    
         -- in addition to this, all apps that allowed a macro
         to be called, as in Dial, queues, etc, are now allowing
    
         a gosub call in similar fashion.
      * AEL now generates LOCAL(argname) declarations when it
    
         Set()'s the each arg name to the value of ${ARG1}, ${ARG2),
         etc. That makes the arguments local in scope. The user
         can define their own local variables in macros, now,
         by saying "local myvar=someval;"  or using Set() in this
         fashion:  Set(LOCAL(myvar)=someval);  ("local" is now
         an AEL keyword).
    
      * utils/conf2ael introduced. Will convert an extensions.conf
    
         file into extensions.ael. Very crude and unfinished, but
    
         will be improved as time goes by. Should be useful for a
         first pass at conversion.
    
      * aelparse will now read extensions.conf to see if a referenced
    
         macro or context is there before issueing a warning.
    
      * AEL parser sets a local channel variable ~~EXTEN~~, to
    
    Steve Murphy's avatar
    Steve Murphy committed
        preserve the value of ${EXTEN} thru switch statements.
      * New operator in $[...] expressions: the ~~ operator serves
        as a concatenation operator. AT THE MOMENT, it is really only
        necessary and useful in AEL, especially in if() expressions.
    
        Operation: ${a} ~~ ${b|  with force both a and b to strings, strip
    
    Steve Murphy's avatar
    Steve Murphy committed
        any enclosing double-quotes, and evaluate to the value of a
        concatenated with the value of b.  For example if a is set to
        "xyz"  and b has the value "abc", then ${a} ~~ ${b| would
        evaluate to xyzabc .
    
    
    
    Call Features (res_features) Changes
    ------------------------------------
      * Added the parkedcalltransfers option to features.conf
    
      * Added parkedcallparking option to control one touch parking w/ parking
        pickup
      * Added parkedcallhangup option to control disconnect feature w/ parking
        pickup
      * Added parkedcallrecording option to control one-touch record w/ parking
        pickup
    
      * Added parkedcallparking, parkedcallhangup, parkedcallrecording, and
        parkedcalltransfers option support for multiple parking lots.
    
      * Added BRIDGE_FEATURES variable to set available features for a channel
    
      * The built-in method for doing attended transfers has been updated to
         include some new options that allow you to have the transferee sent
         back to the person that did the transfer if the transfer is not successful.
         See the options "atxferdropcall", "atxferloopdelay", and "atxfercallbackretries"
         in features.conf.sample.
      * Added support for configuring named groups of custom call features in
         features.conf.  This means that features can be written a single time, and
         then mapped into groups of features for different key mappings or easier
         access control.
    
      * Updated the ParkedCall application to allow you to not specify a parking
         extension.  If you don't specify a parking space to pick up, it will grab
         the first one available.
    
      * Added cli command 'features reload' to reload call features from features.conf
      * Moved into core asterisk binary.
    
      * Changed the default setting for featuredigittimeout to 2000 ms from 500 ms.
    
      * Added the ability for custom parking lots to be configured with their own
        parking extension with the parkext option.
    
    
    Language Support Changes
    ------------------------
      * Brazilian Portuguese (pt-BR) in VM, and say.c was added
      * Added support for the Hungarian language for saying numbers, dates, and times.
    
    
    AGI Changes
    -----------
      * Added SPEECH commands for speech recognition. A complete listing can be found
    
        using agi show.
    
      * If app_stack is loaded, GOSUB is a native AGI command that may be used to
        invoke subroutines in the dialplan.  Note that calling EXEC with Gosub
        does not behave as expected; the native command needs to be used, instead.
    
      * Added the ability to perform SRV lookups on fast AGI calls. To use this
        feature, simply use hagi: instead of agi: as the protocol portion
        of the URI parameter to the AGI function call in your dial plan. Also note
        that specifying a port number in the AGI URI will disable SRV lookups,
        even if you use the hagi: protocol.
    
      * No longer support MSG_OOB flag on HANGUP.
    
      * Added rotatestrategy option to logger.conf, along with two new options:
         "timestamp" which will use the time to name the logger files instead of
    
         sequence number; and "rotate", which rotates the names of the log files,
    
         similar to the way syslog rotates files.
      * Added exec_after_rotate option to logger.conf, which allows a system
         command to be run after rotation.  This is primarily useful with
    
         rotatestrategy=rotate, to allow a limit on the number of log files kept
    
         and to ensure that the oldest log file gets deleted.
    
      * Added realtime support for the queue log
    
    Call Detail Records
    
    -------------------
      * The cdr_manager module has a [mappings] feature, like cdr_custom,
        to add fields to the manager event from the CDR variables.
      * Added cdr_adaptive_odbc, a new module that adapts to the structure of your
         backend database CDR table.  Specifically, additional, non-standard
         columns are supported, merely by setting the corresponding CDR variable in
         your dialplan.  In addition, you may alias any column to another name (for
         example, if you want the 'src' CDR variable to be column 'ANI' in the DB,
         simply "alias src => ANI" in the configuration file).  Records may be
         posted to more than one backend, simply by specifying multiple categories
         in the configuration file.  And finally, you may filter which CDRs get
         posted to each backend, by specifying a filter (which the record must
         match) for the particular category.  Filters are additive (meaning all
         rules must match to post that CDR).
      * The Postgres CDR module now supports some features of the cdr_adaptive_odbc
         module.  Specifically, you may add additional columns into the table and
         they will be set, if you set the corresponding CDR variable name.  Also,
         if you omit columns in your database table, they will be silently skipped
         (but a record will still be inserted, based on what columns remain).  Note
         that the other two features from cdr_adaptive_odbc (alias and filter) are
         not currently supported.
    
      * The ResetCDR application now has an 'e' option that re-enables a CDR if it
         has been disabled using the NoCDR application.
    
    Miscellaneous New Modules
    -------------------------
    
      * Added a new CDR module, cdr_sqlite3_custom.
      * Added a new realtime configuration module, res_config_sqlite
    
      * Added a new codec translation module, codec_resample, which re-samples
         signed linear audio between 8 kHz and 16 kHz to help support wideband
         codecs.
    
      * Added a new module, res_phoneprov, which allows auto-provisioning of phones
         based on configuration templates that use Asterisk dialplan function and
         variable substitution.  It should be possible to create phone profiles and
         templates that work for the majority of phones provisioned over http. It
         is currently only intended to provision a single user account per phone.
         An example profile and set of templates for Polycom phones is provided.
         NOTE: Polycom firmware is not included, but should be placed in
    
         AST_DATA_DIR/phoneprov/configs to match up with the included templates.
      * Added a new module, app_jack, which provides interfaces to JACK, the Jack
         Audio Connection Kit (http://www.jackaudio.org/).  Two interfaces are
         provided; there is a JACK() application, and a JACK_HOOK() function.  Both
         interfaces create an input and output JACK port.  The application makes
         these ports the endpoint of the call.  The audio coming from the channel
         goes out the output port and whatever comes back in on the input port is
         what gets sent to the channel.  The JACK_HOOK() function turns on a JACK
         audiohook on the channel.  This lets you run the audio coming from a
         channel through JACK, and whatever comes back in is what gets forwarded
         on as the channel's audio.  This is very useful for building custom
         vocoders or doing recording or analysis of the channel's audio in another
         application.
    
      * Added a new module, res_config_curl, which permits using a HTTP POST url
         to retrieve, create, update, and delete realtime information from a remote
         web server.  Note that this module requires func_curl.so to be loaded for
         backend functionality.
    
      * Added a new module, res_config_ldap, which permits the use of an LDAP
         server for realtime data access.
    
    Jason Parker's avatar
    Jason Parker committed
      * Added support for writing and running your dialplan in lua using the pbx_lua
    
         module.  See configs/extensions.lua.sample for examples of how to do this.
    
    -------------
      * Ability to use libcap to set high ToS bits when non-root
         on Linux. If configure is unable to find libcap then you
         can use --with-cap to specify the path.
      * Added maxfiles option to options section of asterisk.conf which allows you to specify
         what Asterisk should set as the maximum number of open files when it loads.
      * Added the jittertargetextra configuration option.
      * Added support for setting the CoS for VLAN traffic (802.1p).  See the sample
         configuration files for the IP channel drivers.  The new option is "cos".
    
         This information is also documented on the Asterisk wiki at
         https://wiki.asterisk.org/wiki/x/EYBG
    
      * When originating a call using AMI or pbx_spool that fails the reason for failure
         will now be available in the failed extension using the REASON dialplan variable.
      * Added support for reading the TOUCH_MONITOR_PREFIX channel variable.
         It allows you to configure a prefix for auto-monitor recordings.
      * A new extension pattern matching algorithm, based on a trie, is introduced
         here, that could noticeably speed up mid-sized to large dialplans.
         It is NOT used by default, as duplicating the behaviour of the old pattern
         matcher is still under development. A config file option, in extensions.conf,
         in the [general] section, called "extenpatternmatchingnew", is by default
         set to false; setting that to true will force the use of the new algorithm.
         Also, the cli commands "dialplan set extenpatternmatchingnew true/false" can
         be used to switch the algorithms at run time.
      * A new option when starting a remote asterisk (rasterisk, asterisk -r) for
         specifying which socket to use to connect to the running Asterisk daemon
         (-s)
    
      * Performance enhancements to the sched facility, which is used in
        the channel drivers, etc. Added hashtabs and doubly-linked lists
        to speed up deletion; start at the beginning or end of list to
        speed up insertion.
    
      * Added Doubly-linked lists after the fashion of linkedlists.h. They are in
        dlinkedlists.h. Doubly-linked lists feature fast deletion times.
        Added regression tests to the tests/ dir, also.
    
      * Added a refcount trace feature to astobj2 for those trying to balance
        object creation, deletion; work, play; space and time. See the
        notes in astobj2.h. Also, see utils/refcounter as well, as a
        quick way to find unbalanced refcounts in what could be a sea
        of objects that were balanced.
    
      * Added logging to 'make update' command.  See update.log
    
      * Added strictrtp option to rtp.conf. If enabled this will drop RTP packets that
         do not come from the remote party.
    
      * Added the 'n' option to the SpeechBackground application to tell it to not
         answer the channel if it has not already been answered.
    
      * Added a compiler flag, CHANNEL_TRACE, which permits channel tracing to be
         turned on, via the CHANNEL(trace) dialplan function.  Could be useful for
         dialplan debugging.
    
      * iLBC source code no longer included (see UPGRADE.txt for details)
    
      * If compiled with DETECT_DEADLOCKS enabled and if you have glibc, then if
    
         deadlock is detected, a backtrace of the stack which led to the lock calls
    
         will be output to the CLI.
    
      * If compiled with DEBUG_THREADS enabled and if you have glibc, then issuing
         the "core show locks" CLI command will give lock information output as well
    
         as a backtrace of the stack which led to the lock calls.
    
    Tilghman Lesher's avatar
    Tilghman Lesher committed
      * users.conf now sports an optional alternateexts property, which permits
    
        allocation of additional extensions which will reach the specified user.
    
      * A new option for the configure script, --enable-internal-poll, has been added
        for use with systems which may have a buggy implementation of the poll system
    
    Russell Bryant's avatar
    Russell Bryant committed
        call. If you notice odd behavior such as the CLI being unresponsive on remote
        consoles, you may want to try using this option. This option is enabled by default
        on Darwin systems since it is known that the Darwin poll() implementation has
        odd issues.
    
    
    Timer Changes
    --------------------
    * In addition to timing from DAHDI, there is a new timing module called
      res_timing_timerfd. In order to use this, you must be running Linux with
      a kernel version 2.6.25 or newer as well as glibc 2.8 or newer. The configure
      script will be able to tell if you have the requirements. From menuselect, select
      res_timing_timerfd from the Resource Modules menu.