This patch gives the optional ability to keep queue rules in RealTime. It is important to note that with this patch: (a) Queue rules in RealTime are only examined on module load/reload (b) Queue rules are loaded both from the queuerules.conf file as well as the RealTime backend To inform app_queue to examine RealTime for queue rules, a new setting has been added to queuerules.conf's general section "realtime_rules". RealTime queue rules will only be used when this setting is set to "yes". The schema for the database table supports a rule_name, time, min_penalty, and max_penalty columns. min_penalty and max_penalty can be relative, if a '-' or '+' literal is provided. Otherwise, the penalties are treated as constants. For example: rule_name, time, min_penalty, max_penalty 'default', '10', '20', '30' 'test2', '20', '30', '55' 'test2', '25', '-11', '+1111' 'test2', '400', '112', '333' 'test3', '0', '4564', '46546' 'test_rule', '40', '15', '50' which would result in : Rule: default - After 10 seconds, adjust QUEUE_MAX_PENALTY to 30 and adjust QUEUE_MIN_PENALTY to 20 Rule: test2 - After 20 seconds, adjust QUEUE_MAX_PENALTY to 55 and adjust QUEUE_MIN_PENALTY to 30 - After 25 seconds, adjust QUEUE_MAX_PENALTY by 1111 and adjust QUEUE_MIN_PENALTY by -11 - After 400 seconds, adjust QUEUE_MAX_PENALTY to 333 and adjust QUEUE_MIN_PENALTY to 112 Rule: test3 - After 0 seconds, adjust QUEUE_MAX_PENALTY to 46546 and adjust QUEUE_MIN_PENALTY to 4564 Rule: test_rule - After 40 seconds, adjust QUEUE_MAX_PENALTY to 50 and adjust QUEUE_MIN_PENALTY to 15 If you use RealTime, the queue rules will be always reloaded on a module reload, even if the underlying file did not change. With the option disabled, the rules will only be reloaded if the file was modified. Review: https://reviewboard.asterisk.org/r/3607/ ASTERISK-23823 #close Reported by: Michael K patches: app_queue.c_realtime_trunk.patch uploaded by Michael K (License 6621) ........ Merged revisions 420624 from http://svn.asterisk.org/svn/asterisk/branches/13 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@420625 65c4cc65-6c06-0410-ace0-fbb531ad65f3
391 lines
18 KiB
Text
391 lines
18 KiB
Text
===========================================================
|
|
===
|
|
=== Information for upgrading between Asterisk versions
|
|
===
|
|
=== These files document all the changes that MUST be taken
|
|
=== into account when upgrading between the Asterisk
|
|
=== versions listed below. These changes may require that
|
|
=== you modify your configuration files, dialplan or (in
|
|
=== some cases) source code if you have your own Asterisk
|
|
=== modules or patches. These files also include advance
|
|
=== notice of any functionality that has been marked as
|
|
=== 'deprecated' and may be removed in a future release,
|
|
=== along with the suggested replacement functionality.
|
|
===
|
|
=== UPGRADE-1.2.txt -- Upgrade info for 1.0 to 1.2
|
|
=== UPGRADE-1.4.txt -- Upgrade info for 1.2 to 1.4
|
|
=== UPGRADE-1.6.txt -- Upgrade info for 1.4 to 1.6
|
|
=== UPGRADE-1.8.txt -- Upgrade info for 1.6 to 1.8
|
|
=== UPGRADE-10.txt -- Upgrade info for 1.8 to 10
|
|
=== UPGRADE-11.txt -- Upgrade info for 10 to 11
|
|
=== UPGRADE-12.txt -- Upgrade info for 11 to 12
|
|
===========================================================
|
|
|
|
General Asterisk Changes:
|
|
- The asterisk command line -I option and the asterisk.conf internal_timing
|
|
option are removed and always enabled if any timing module is loaded.
|
|
|
|
- The per console verbose level feature as previously implemented caused a
|
|
large performance penalty. The fix required some minor incompatibilities
|
|
if the new rasterisk is used to connect to an earlier version. If the new
|
|
rasterisk connects to an older Asterisk version then the root console verbose
|
|
level is always affected by the "core set verbose" command of the remote
|
|
console even though it may appear to only affect the current console. If
|
|
an older version of rasterisk connects to the new version then the
|
|
"core set verbose" command will have no effect.
|
|
|
|
- The asterisk compatibility options in asterisk.conf have been removed.
|
|
These options enabled certain backwards compatibility features for
|
|
pbx_realtime, res_agi, and app_set that made their behaviour similar to
|
|
Asterisk 1.4. Users who used these backwards compatibility settings should
|
|
update their dialplans to use ',' instead of '|' as a delimiter, and should
|
|
use the Set dialplan application instead of the MSet dialplan application.
|
|
|
|
Build System:
|
|
- Sample config files have been moved from configs/ to a subfolder of that
|
|
directory, 'samples'.
|
|
|
|
- The menuselect utility has been pulled into the Asterisk repository. As a
|
|
result, the libxml2 development library is now a required dependency for
|
|
Asterisk.
|
|
|
|
- Added a new Compiler Flag, REF_DEBUG. When enabled, reference counted
|
|
objects will emit additional debug information to the refs log file located
|
|
in the standard Asterisk log file directory. This log file is useful in
|
|
tracking down object leaks and other reference counting issues. Prior to
|
|
this version, this option was only available by modifying the source code
|
|
directly. This change also includes a new script, refcounter.py, in the
|
|
contrib folder that will process the refs log file.
|
|
|
|
Applications:
|
|
|
|
ConfBridge:
|
|
- The sound_place_into_conference sound used in Confbridge is now deprecated
|
|
and is no longer functional since it has been broken since its inception
|
|
and the fix involved using a different method to achieve the same goal. The
|
|
new method to achieve this functionality is by using sound_begin to play
|
|
a sound to the conference when waitmarked users are moved into the conference.
|
|
|
|
Queue:
|
|
- Queue rules provided in queuerules.conf can no longer be named "general".
|
|
|
|
SetMusicOnHold:
|
|
- The SetMusicOnHold dialplan application was deprecated and has been removed.
|
|
Users of the application should use the CHANNEL function's musicclass
|
|
setting instead.
|
|
|
|
WaitMusicOnHold:
|
|
- The WaitMusicOnHold dialplan application was deprecated and has been
|
|
removed. Users of the application should use MusicOnHold with a duration
|
|
parameter instead.
|
|
|
|
CDR Backends:
|
|
- The cdr_sqlite module was deprecated and has been removed. Users of this
|
|
module should use the cdr_sqlite3_custom module instead.
|
|
|
|
Channel Drivers:
|
|
|
|
chan_dahdi:
|
|
- SS7 support now requires libss7 v2.0 or later.
|
|
|
|
- Added the inband_on_setup_ack compatibility option to chan_dahdi.conf to
|
|
deal with switches that don't send an inband progress indication in the
|
|
SETUP ACKNOWLEDGE message.
|
|
Default is now no.
|
|
|
|
chan_gtalk
|
|
- This module was deprecated and has been removed. Users of chan_gtalk
|
|
should use chan_motif.
|
|
|
|
chan_h323
|
|
- This module was deprecated and has been removed. Users of chan_h323
|
|
should use chan_ooh323.
|
|
|
|
chan_jingle
|
|
- This module was deprecated and has been removed. Users of chan_jingle
|
|
should use chan_motif.
|
|
|
|
chan_pjsip:
|
|
- Added a 'force_avp' option to chan_pjsip which will force the usage of
|
|
'RTP/AVP', 'RTP/AVPF', 'RTP/SAVP', or 'RTP/SAVPF' as the media transport type
|
|
in SDP offers depending on settings, even when DTLS is used for media
|
|
encryption.
|
|
|
|
- Added a 'media_use_received_transport' option to chan_pjsip which will
|
|
cause the SDP answer to use the media transport as received in the SDP
|
|
offer.
|
|
|
|
chan_sip:
|
|
- Made set SIPREFERREDBYHDR as inheritable for better chan_pjsip
|
|
interoperability.
|
|
|
|
- The SIPPEER dialplan function no longer supports using a colon as a
|
|
delimiter for parameters. The parameters for the function should be
|
|
delimited using a comma.
|
|
|
|
- The SIPCHANINFO dialplan function was deprecated and has been removed. Users
|
|
of the function should use the CHANNEL function instead.
|
|
|
|
- Added a 'force_avp' option for chan_sip. When enabled this option will
|
|
cause the media transport in the offer or answer SDP to be 'RTP/AVP',
|
|
'RTP/AVPF', 'RTP/SAVP', or 'RTP/SAVPF' even if a DTLS stream has been
|
|
configured. This option can be set to improve interoperability with WebRTC
|
|
clients that don't use the RFC defined transport for DTLS.
|
|
|
|
- The 'dtlsverify' option in chan_sip now has additional values besides
|
|
'yes' and 'no'. If 'yes' is specified both the certificate and fingerprint
|
|
will be verified. If 'no' is specified then neither the certificate or
|
|
fingerprint is verified. If 'certificate' is specified then only the
|
|
certificate is verified. If 'fingerprint' is specified then only the
|
|
fingerprint is verified.
|
|
|
|
- A 'dtlsfingerprint' option has been added to chan_sip which allows the
|
|
hash to be specified for the DTLS fingerprint placed in SDP. Supported
|
|
values are 'sha-1' and 'sha-256' with 'sha-256' being the default.
|
|
|
|
- The 'progressinband=never' option is now more zealous in the persecution of
|
|
progress messages coming from Asterisk. Channels bridged with a SIP channel
|
|
that has 'progressinband=never' set will not be able to forward their
|
|
progress indications through to the SIP device. chan_sip will now turn such
|
|
progress indications into a 180 Ringing (if a 180 has not yet been
|
|
transmitted) if 'progressinband=never'.
|
|
|
|
- The codec preference order in an SDP during an offer is slightly different
|
|
than previous releases. Prior to Asterisk 13, the preference order of
|
|
codecs used to be:
|
|
(1) Our preferred codec
|
|
(2) Our configured codecs
|
|
(3) Any non-audio joint codecs
|
|
|
|
One of the ways the new media format architecture in Asterisk 13 improves
|
|
performance is by reference counting formats, such that they can be reused
|
|
in many places without additional allocation. To not require a large
|
|
amount of locking, an instance of a format is immutable by convention.
|
|
This works well except for formats with attributes. Since a media format
|
|
with an attribute is a different object than the same format without an
|
|
attribute, we have to carry over the formats with attributes from an
|
|
inbound offer so that the correct attributes are offered in an outgoing
|
|
INVITE request. This requires some subtle tweaks to the preference order
|
|
to ensure that the media format with attributes is offered to a remote
|
|
peer, as opposed to the same media format (but without attributes) that
|
|
may be stored in the peer object.
|
|
|
|
All of this means that our offer offer list will now be:
|
|
(1) Our preferred codec
|
|
(2) Any joint codecs offered by the inbound offer
|
|
(3) All other codecs that are not the preferred codec and not a joint
|
|
codec offered by the inbound offer
|
|
|
|
chan_unistim:
|
|
- The unistim.conf 'dateformat' has changed meaning of options values to conform
|
|
values used inside Unistim protocol
|
|
|
|
- Added 'dtmf_duration' option with changing default operation to disable
|
|
receivied dtmf playback on unistim phone
|
|
|
|
Core:
|
|
|
|
Account Codes:
|
|
- accountcode behavior changed somewhat to add functional peeraccount
|
|
support. The main change is that local channels now cross accountcode
|
|
and peeraccount across the special bridge between the ;1 and ;2 channels
|
|
just like channels between normal bridges. See the CHANGES file for
|
|
more information.
|
|
|
|
ARI:
|
|
- The ARI version has been changed to 1.5.0. This is to reflect backwards
|
|
compatible changes made since 12.0.0 was released.
|
|
|
|
- Added a new ARI resource 'mailboxes' which allows the creation and
|
|
modification of mailboxes managed by external MWI. Modules res_mwi_external
|
|
and res_stasis_mailbox must be enabled to use this resource.
|
|
|
|
- Added new events for externally initiated transfers. The event
|
|
BridgeBlindTransfer is now raised when a channel initiates a blind transfer
|
|
of a bridge in the ARI controlled application to the dialplan; the
|
|
BridgeAttendedTransfer event is raised when a channel initiates an
|
|
attended transfer of a bridge in the ARI controlled application to the
|
|
dialplan.
|
|
|
|
- Channel variables may now be specified as a body parameter to the
|
|
POST /channels operation. The 'variables' key in the JSON is interpreted
|
|
as a sequence of key/value pairs that will be added to the created channel
|
|
as channel variables. Other parameters in the JSON body are treated as
|
|
query parameters of the same name.
|
|
|
|
- A bug fix in bridge creation has caused a behavioural change in how
|
|
subscriptions are created for bridges. A bridge created through ARI, does
|
|
not, by itself, have a subscription created for any particular Stasis
|
|
application. When a channel in a Stasis application joins a bridge, an
|
|
implicit event subscription is created for that bridge as well. Previously,
|
|
when a channel left such a bridge, the subscription was leaked; this allowed
|
|
for later bridge events to continue to be pushed to the subscribed
|
|
applications. That leak has been fixed; as a result, bridge events that were
|
|
delivered after a channel left the bridge are no longer delivered. An
|
|
application must subscribe to a bridge through the applications resource if
|
|
it wishes to receive all events related to a bridge.
|
|
|
|
AMI:
|
|
- The AMI version has been changed to 2.5.0. This is to reflect backwards
|
|
compatible changes made since 12.0.0 was released.
|
|
|
|
- The DialStatus field in the DialEnd event can now have additional values.
|
|
This includes ABORT, CONTINUE, and GOTO.
|
|
|
|
- The res_mwi_external_ami module can, if loaded, provide additional AMI
|
|
actions and events that convey MWI state within Asterisk. This includes
|
|
the MWIGet, MWIUpdate, and MWIDelete actions, as well as the MWIGet and
|
|
MWIGetComplete events that occur in response to an MWIGet action.
|
|
|
|
- AMI now contains a new class authorization, 'security'. This is used with
|
|
the following new events: FailedACL, InvalidAccountID, SessionLimit,
|
|
MemoryLimit, LoadAverageLimit, RequestNotAllowed, AuthMethodNotAllowed,
|
|
RequestBadFormat, SuccessfulAuth, UnexpectedAddress, ChallengeResponseFailed,
|
|
InvalidPassword, ChallengeSent, and InvalidTransport.
|
|
|
|
- Bridge related events now have two additional fields: BridgeName and
|
|
BridgeCreator. BridgeName is a descriptive name for the bridge;
|
|
BridgeCreator is the name of the entity that created the bridge. This
|
|
affects the following events: ConfbridgeStart, ConfbridgeEnd,
|
|
ConfbridgeJoin, ConfbridgeLeave, ConfbridgeRecord, ConfbridgeStopRecord,
|
|
ConfbridgeMute, ConfbridgeUnmute, ConfbridgeTalking, BlindTransfer,
|
|
AttendedTransfer, BridgeCreate, BridgeDestroy, BridgeEnter, BridgeLeave
|
|
|
|
- MixMonitor AMI actions now require users to have authorization classes.
|
|
* MixMonitor - system
|
|
* MixMonitorMute - call or system
|
|
* StopMixMonitor - call or system
|
|
|
|
- Removed the undocumented manager.conf block-sockets option. It interferes with
|
|
TCP/TLS inactivity timeouts.
|
|
|
|
- The response to the PresenceState AMI action has historically contained two
|
|
Message keys. The first of these is used as an informative message regarding
|
|
the success/failure of the action; the second contains a Presence state
|
|
specific message. Having two keys with the same unique name in an AMI
|
|
message is cumbersome for some client; hence, the Presence specific Message
|
|
has been deprecated. The message will now contain a PresenceMessage key
|
|
for the presence specific information; the Message key containing presence
|
|
information will be removed in the next major version of AMI.
|
|
|
|
- The manager.conf 'eventfilter' now takes an "extended" regular expression
|
|
instead of a "basic" one.
|
|
|
|
CDRs:
|
|
- The "endbeforehexten" setting now defaults to "yes", instead of "no".
|
|
When set to "no", yhis setting will cause a new CDR to be generated when a
|
|
channel enters into hangup logic (either the 'h' extension or a hangup
|
|
handler subroutine). In general, this is not the preferred default: this
|
|
causes extra CDRs to be generated for a channel in many common dialplans.
|
|
|
|
CLI commands:
|
|
- "core show settings" now lists the current console verbosity in addition
|
|
to the root console verbosity.
|
|
|
|
- "core set verbose" has not been able to support the by module verbose
|
|
logging levels since verbose logging levels were made per console. That
|
|
syntax is now removed and a silence option added in its place.
|
|
|
|
Logging:
|
|
- The 'verbose' setting in logger.conf still takes an optional argument,
|
|
specifying the verbosity level for each logging destination. However,
|
|
the default is now to once again follow the current root console level.
|
|
As a result, using the AMI Command action with "core set verbose" could
|
|
again set the root console verbose level and affect the verbose level
|
|
logged.
|
|
|
|
HTTP:
|
|
- Added http.conf session_inactivity timer option to close HTTP connections
|
|
that aren't doing anything.
|
|
|
|
- Added support for persistent HTTP connections. To enable persistent
|
|
HTTP connections configure the keep alive time between HTTP requests. The
|
|
keep alive time between HTTP requests is configured in http.conf with the
|
|
session_keep_alive parameter.
|
|
|
|
Realtime Configuration:
|
|
- WARNING: The database migration script that adds the 'extensions' table for
|
|
realtime had to be modified due to an error when installing for MySQL. The
|
|
'extensions' table's 'id' column was changed to be a primary key. This could
|
|
potentially cause a migration problem. If so, it may be necessary to
|
|
manually alter the affected table/column to bring it back in line with the
|
|
migration scripts.
|
|
|
|
- New columns have been added to realtime tables for 'support_path' on
|
|
ps_registrations and ps_aors and for 'path' on ps_contacts for the new
|
|
SIP Path support in chan_pjsip.
|
|
|
|
- The following new tables have been added for pjsip realtime: 'ps_systems',
|
|
'ps_globals', 'ps_tranports', 'ps_registrations'.
|
|
|
|
- The following columns were added to the 'ps_aors' realtime table:
|
|
'maximum_expiration', 'outbound_proxy', and 'support_path'.
|
|
|
|
- The following columns were added to the 'ps_contacts' realtime table:
|
|
'outbound_proxy', 'user_agent', and 'path'.
|
|
|
|
- New columns have been added to the ps_endpoints realtime table for the
|
|
'media_address', 'redirect_method' and 'set_var' options. Also the
|
|
'mwi_fromuser' column was renamed to 'mwi_from_user'. A new column
|
|
'message_context' was added to let users configure how MESSAGE requests are
|
|
routed to the dialplan.
|
|
|
|
- A new column was added to the 'ps_globals' realtime table for the 'debug'
|
|
option.
|
|
|
|
- PJSIP endpoint columns 'tos_audio' and 'tos_video' have been changed from
|
|
yes/no enumerators to string values. 'cos_audio' and 'cos_video' have been
|
|
changed from yes/no enumerators to integer values. PJSIP transport column
|
|
'tos' has been changed from a yes/no enumerator to a string value. 'cos' has
|
|
been changed from a yes/no enumerator to an integer value.
|
|
|
|
- The 'queues' and 'queue_members' realtime tables have been added to the
|
|
config Alembic scripts.
|
|
|
|
- A new set of Alembic scripts has been added for CDR tables. This will create
|
|
a 'cdr' table with the default schema that Asterisk expects.
|
|
|
|
- A new upgrade script has been added that adds a 'queue_rules' table for
|
|
app_queue. Users of app_queue can store queue rules in a database. It is
|
|
important to note that app_queue only looks for this table on module load or
|
|
module reload; for more information, see the CHANGES file.
|
|
|
|
Resources:
|
|
|
|
res_odbc:
|
|
- The compatibility setting, allow_empty_string_in_nontext, has been removed.
|
|
Empty column values will be stored as empty strings during realtime updates.
|
|
|
|
res_jabber:
|
|
- This module was deprecated and has been removed. Users of this module should
|
|
use res_xmpp instead.
|
|
|
|
res_http_websocket:
|
|
- Added a compatibility option to ari.conf, sip.conf, and pjsip.conf
|
|
'websocket_write_timeout'. When a websocket connection exists where Asterisk
|
|
writes a substantial amount of data to the connected client, and the connected
|
|
client is slow to process the received data, the socket may be disconnected.
|
|
In such cases, it may be necessary to adjust this value.
|
|
Default is 100 ms.
|
|
Scripts:
|
|
|
|
safe_asterisk:
|
|
- The safe_asterisk script was previously not installed on top of an existing
|
|
version. This caused bug-fixes in that script not to be deployed. If your
|
|
safe_asterisk script is customized, be sure to keep your changes. Custom
|
|
values for variables should be created in *.sh file(s) inside
|
|
ASTETCDIR/startup.d/. See ASTERISK-21965.
|
|
|
|
- Changed a log message in safe_asterisk and the $NOTIFY mail subject. If
|
|
you use tools to parse either of them, update your parse functions
|
|
accordingly. The changed strings are:
|
|
- "Exited on signal $EXITSIGNAL" => "Asterisk exited on signal $EXITSIGNAL."
|
|
- "Asterisk Died" => "Asterisk on $MACHINE died (sig $EXITSIGNAL)"
|
|
|
|
Utilities:
|
|
- The refcounter program has been removed in favor of the refcounter.py script
|
|
in contrib/scripts.
|
|
|
|
===========================================================
|
|
===========================================================
|