This repository has been archived by the owner on Jan 14, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathCHANGES
4185 lines (3574 loc) · 208 KB
/
CHANGES
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
==============================================================================
===
=== This file documents the new and/or enhanced functionality added in
=== the Asterisk versions listed below. This file does NOT include
=== changes in behavior that would not be backwards compatible with
=== previous versions; for that information see the UPGRADE.txt file
=== and the other UPGRADE files for older releases.
===
==============================================================================
------------------------------------------------------------------------------
--- Functionality changes from Asterisk 12 to Asterisk 13 --------------------
------------------------------------------------------------------------------
AMI
------------------
* New DeviceStateChanged and PresenceStateChanged AMI events have been added.
These events are emitted whenever a device state or presence state change
occurs. The events are controlled by res_manager_device_state.so and
res_manager_presence_state.so. If the high frequency of these events is
problematic for you, do not load these modules.
------------------------------------------------------------------------------
--- Functionality changes from Asterisk 12.2.0 to Asterisk 12.3.0 ------------
------------------------------------------------------------------------------
ARI
------------------
* A new Playback URI 'tone' has been added. Tones are specified either as
an indication name (e.g. 'tone:busy') from indications.conf or as a tone
pattern (e.g. 'tone:240/250,0/250'). Tones differ from normal playback
URIs in that they must be stopped manually and will continue to occupy
a channel's ARI control queue until they are stopped. They also can not
be rewound or fastforwarded.
chan_sip
-----------
* SIP peers can now specify 'trust_id_outbound' which affects RPID/PAI
fields for prohibited callingpres information. Values are legacy, no, and
yes. By default, legacy is used.
trust_id_outbound=legacy - behavior remains the same as 1.8.26.1. When
dealing with prohibited callingpres and sendrpid=pai/rpid, RPID/PAI
headers are appended to outbound SIP messages just as they are with
allowed callingpres values, but data about the remote party's identity is
anonymized.
When sendrpid=rpid, only the remote party's domain is anonymized.
trust_id_outbound=no - when dealing with prohibited callingpres, RPID/PAI
headers are not sent.
trust_id_outbound=yes - RPID/PAI headers are applied with the full remote
party information in tact even for prohibited callingpres information.
In the case of PAI, a Privacy: id header will be appended for prohibited
calling information to communicate that the private information should
not be relayed to untrusted parties.
------------------------------------------------------------------------------
--- Functionality changes from Asterisk 12.1.0 to Asterisk 12.2.0 ------------
------------------------------------------------------------------------------
Applications
--------------------------
* Record application now has an option 'o' which allows 0 to act as an exit
key setting the RECORD_STATUS variable to 'OPERATOR' instead of 'DTMF'
* Monitor() - A new option, B(), has been added that will turn on a periodic
beep while the call is being recorded.
Functions
--------------------------
* A new function was added: PERIODIC_HOOK. This allows running a periodic
dialplan hook on a channel. Any audio generated by this hook will be
injected into the call.
ChanSpy
--------------------------
* ChanSpy now accepts a channel uniqueid or a fully specified channel name
as the chanprefix parameter if the 'u' option is specified.
ConfBridge
--------------------------
* CONFBRIDGE dialplan function is now capable of creating/modifying dynamic
conference user menus.
* CONFBRIDGE dialplan function is now capable of removing dynamic conference
menus, bridge settings, and user settings that have been applied by the
CONFBRIDGE dialplan function.
* The ConfBridge dialplan application now sets a channel variable,
CONFBRIGE_RESULT, upon exiting. This variable can be used to determine
how a channel exited the conference.
* Added conference user option 'announce_join_leave_review'. This option
implies 'announce_join_leave' with the added effect that the user will
be asked if they want to confirm or re-record the recording of their
name when entering the conference
Directory
--------------------------
* At exit, the Directory application now sets a channel variable
DIRECTORY_RESULT to one of the following based on the reason for exiting:
OPERATOR user requested operator by pressing '0' for operator
ASSISTANT user requested assistant by pressing '*' for assistant
TIMEOUT user pressed nothing and Directory stopped waiting
HANGUP user's channel hung up
SELECTED user selected a user from the directory and is routed
USEREXIT user pressed '#' from the selection prompt to exit
FAILED directory failed in a way that wasn't accounted for. Dang.
MusicOnHold
--------------------------
* MusicOnHold streams (all modes other than "files") now support wide band
audio too.
Page
--------------------------
* Added options 'b' and 'B' to apply predial handlers for outgoing calls
and for the channel executing Page respectively.
PickupChan
--------------------------
* PickupChan now accepts channel uniqueids of channels to pickup.
Say
--------------------------
* If a channel variable SAY_DTMF_INTERRUPT is present on a channel and set
to 'true' (case insensitive), then any Say application (SayNumber,
SayDigits, SayAlpha, SayAlphaCase, SayUnixTime, and SayCounted) will
anticipate DTMF. If DTMF is received, these applications will behave like
the background application and jump to the received extension once a match
is established or after a short period of inactivity.
MixMonitor
-------------------------
* A new function, MIXMONITOR, has been added to allow access to individual
instances of MixMonitor on a channel.
* A new option, B(), has been added that will turn on a periodic beep while the
call is being recorded.
Channel Drivers
-------------------------
chan_sip
-------------------------
* TEL URI support for inbound INVITE requests has been added. chan_sip will
now handle TEL schemes in the Request and From URIs. The phone-context in
the Request URI will be stored in the SIPURIPHONECONTEXT channel variable on
the inbound channel.
Debugging
-------------------------
* Core Show Locks output now includes Thread/LWP ID if the platform
supports this feature.
* New "logger add channel" and "logger remove channel" CLI commands have
been added to allow creation and deletion of dynamic logger channels
without configuration changes. These dynamic logger channels will only
exist until the next restart of asterisk.
Core
------------------
* Exposed sorcery-based configuration files like pjsip.conf to dialplans via
the new AST_SORCERY diaplan function.
ARI
------------------
* The live recording object on recording events now contains a target_uri
field which contains the URI of what is being recorded.
* The bridge type used when creating a bridge is now a comma separated list of
bridge properties. Valid options are: mixing, holding, dtmf_events, and
proxy_media.
* A channelId can now be provided when creating a channel, either in the
uri (POST channels/my-channel-id) or as query parameter. A local channel
will suffix the second channel id with ';2' unless provided as query
parameter otherChannelId.
* A bridgeId can now be provided when creating a bridge, either in the uri
(POST bridges/my-bridge-id) or as a query parameter.
* A playbackId can be provided when starting a playback, either in the uri
(POST channels/my-channel-id/play/my-playback-id /
POST bridges/my-bridge-id/play/my-playback-id) or as a query parameter.
* A snoop channel can be started with a snoopId, in the uri or query.
AMI
------------------
* Originate now takes optional parameters ChannelId and OtherChannelId,
used to set the UniqueId on creation. The other id is assigned to the
second channel when dialing LOCAL, or defaults to appending ;2 if only
the single Id is given.
* The Mixmonitor action now has a "Command" header that can be used to
indicate a post-process command to run once recording finishes.
RealTime
------------------
* 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.
res_hep
------------------
* A new module, res_hep, has been added, that acts as a generic packet
capture agent for the Homer Encapsulation Protocol (HEP) version 3.
It can be configured via hep.conf. Other modules can use res_hep to send
message traffic to a HEP capture server.
res_hep_pjsip
------------------
* A new module, res_hep_pjsip, has been added that will forward PJSIP
message traffic to a HEP capture server. See res_hep for more
information.
res_pjsip
------------------
* transport and endpoint ToS options (tos, tos_audio, and tos_video) may now
be set as the named set of ToS values (cs0-cs7, af11-af43, ef).
* Added the following new CLI commands:
- "pjsip show contacts" - list all current PJSIP contacts.
- "pjsip show contact" - show specific information about a current PJSIP
contact.
- "pjsip show channel" - show detailed information about a PJSIP channel.
res_pjsip_multihomed
------------------
* A new module, res_pjsip_multihomed handles situations where the system
Asterisk is running out has multiple interfaces. res_pjsip_multihomed
determines which interface should be used during message sending.
res_pjsip_pidf_digium_body_supplement
------------------
* A new module, res_pjsip_pidf_digium_body_supplement provides NOTIFY
request body formatting for presence support in Digium phones.
res_pjsip_send_to_voicemail
------------------
* A new module, res_pjsip_send_to_voicemail allows for REFER requests with
particular headers to transfer a PJSIP channel directly to a particular
extension that has VoiceMail. This is intended to be used with Digium
phones that support this feature.
res_pjsip_outbound_registration
------------------
* A new CLI command has been added: "pjsip show registrations", which lists
all configured PJSIP registrations
------------------------------------------------------------------------------
--- Functionality changes from Asterisk 12.0.0 to Asterisk 12.1.0 ------------
------------------------------------------------------------------------------
AMI
------------------
* Added a new module that provides AMI control over MWI within Asterisk,
res_mwi_external_ami. Note that this module depends on res_mwi_external;
for more information on enabling this module, see res_mwi_external.
This module provides the MWIGet/MWIUpdate/MWIDelete actions, as well as
the MWIGet/MWIGetComplete events.
* The DialStatus field in the DialEnd event can now contain additional
statuses that convey how the dial operation terminated. This includes
ABORT, CONTINUE, and GOTO.
* AMI will now emit security events. A new class authorization has been
added in manager.conf for the security events, 'security'. The new events
are:
- FailedACL - raised when a request violates an ACL check
- InvalidAccountID - raised when a request fails an authentication
check due to an invalid account ID
- SessionLimit - raised when a request fails due to exceeding the
number of allowed concurrent sessions for a service
- MemoryLimit - raised when a request fails due to an internal memory
allocation failure
- LoadAverageLimit - raised when a request fails because a configured
load average limit has been reached
- RequestNotAllowed - raised when a request is not allowed by
the service
- AuthMethodNotAllowed - raised when a request used an authentication
method not allowed by the service
- RequestBadFormat - raised when a request is received with bad formatting
- SuccessfulAuth - raised when a request successfully authenticates
- UnexpectedAddress - raised when a request has a different source address
then what is expected for a session already in progress with a service
- ChallengeResponseFailed - raised when a request's attempt to authenticate
has been challenged, and the request failed the authentication challenge
- InvalidPassword - raised when a request provides an invalid password
during an authentication attempt
- ChallengeSent - raised when an Asterisk service send an authentication
challenge to a request
- InvalidTransport - raised when a request attempts to use a transport not
allowed by the Asterisk service
* 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
ARI
------------------
* The Bridge data model now contains the additional fields 'name' and
'creator'. The 'name' field conveys a descriptive name for the bridge;
the 'creator' field conveys the name of the entity that created the bridge.
This affects all responses to HTTP requests that return a Bridge data model
as well as all event derived data models that contain a Bridge data model.
The POST /bridges operation may now optionally specify a name to give to
the bridge being created.
* 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. For more
information on external MWI control, see res_mwi_external.
* 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.
HTTP
------------------
* Asterisk's HTTP server now supports chunked Transfer-Encoding. This will be
automatically handled by the HTTP server if a request is received with a
Transfer-Encoding type of "chunked".
res_pjsip
------------------
* Path support has been added with the 'support_path' option in registration
and aor sections.
* A 'debug' option has been added to the globals section that will allow
sip messages to be logged.
* A 'set_var' option has been added to endpoints that will automatically
set the desired variable(s) on a channel created for that endpoint.
* Several new tables and columns have been added to the realtime schema for
the res_pjsip related modules. See the UPGRADE.txt notes for updating
the database schema.
res_mwi_external
------------------
* A new module, res_mwi_external, has been added to Asterisk. This module
acts as a base framework that other modules can build on top of to allow
an external system to control MWI within Asterisk. For implementations
that make use of res_mwi_external, see res_mwi_external_ami and
res_ari_mailboxes. Note that res_mwi_external canflicts with other modules
that may produce MWI themselves, such as app_voicemail. res_mwi_external
and other modules that depend on it cannot be built or loaded with
app_voicemail present.
res_pjsip
------------------
* DNS functionality will now automatically be enabled if the system configured
nameservers can be retrieved. If the system configured nameservers can not be
retrieved the functionality will resort to using system resolution. Functionalty
such as SRV records and failover will not be available if system resolution
is in use.
------------------------------------------------------------------------------
--- Functionality changes from Asterisk 11 to Asterisk 12 --------------------
------------------------------------------------------------------------------
Overview
------------------
Asterisk 12 is a standard release of the Asterisk project. As such, the
focus of development for this release was on core architectural changes and
major new features. This includes:
* A more flexible bridging core based on the Bridging API
* A new internal message bus, Stasis
* Major standardization and consistency improvements to AMI
* Addition of the Asterisk RESTful Interface (ARI)
* A new SIP channel driver, chan_pjsip
In addition, as the vast majority of bridging in Asterisk was migrated to the
Bridging API used by ConfBridge, major changes were made to most of the
interfaces in Asterisk. This includes not only AMI, but also CDRs and CEL.
Specifications have been written for the affected interfaces. These
specifications are available on the Asterisk wiki:
* AMI - https://wiki.asterisk.org/wiki/x/dAFRAQ
* CEL - https://wiki.asterisk.org/wiki/x/4ICLAQ
* CDRs - https://wiki.asterisk.org/wiki/x/pwpRAQ
It is *highly* recommended that anyone migrating to Asterisk 12 read the
information regarding its release both in this file and in the accompanying
UPGRADE.txt file. More detailed information on the major changes can be found
on the Asterisk wiki at https://wiki.asterisk.org/wiki/x/0YCLAQ.
Build System
------------------
* Added build option DISABLE_INLINE. This option can be used to work around a
bug in gcc. For more information, see
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47816
* Removed the CHANNEL_TRACE development mode build option. Certain aspects of
the CHANNEL_TRACE build option were incompatible with the new bridging
architecture.
* Asterisk now optionally uses libxslt to improve XML documentation generation
and maintainability. If libxslt is not available on the system, some XML
documentation will be incomplete.
* Asterisk now depends on libjansson. If a package of libjansson is not
available on your distro, please see http://www.digip.org/jansson/.
* Asterisk now depends on libuuid and, optionally, uriparser. It is
recommended that you install uriparser, even if it is optional.
* The new SIP stack and channel driver uses a particular version of PJSIP.
Please see https://wiki.asterisk.org/wiki/x/J4GLAQ for more information on
configuring and installing PJSIP for usage with Asterisk.
* Optional API was re-implemented to be more portable, and no longer requires
weak reference support from the compiler. The build option OPTIONAL_API may
be disabled to disable Optional API support.
Applications
------------------
AgentLogin
------------------
* Along with AgentRequest, this application has been modified to be a
replacement for chan_agent. The act of a channel calling the AgentLogin
application places the channel into a pool of agents that can be
requested by the AgentRequest application. Note that this application, as
well as all other agent related functionality, is now provided by the
app_agent_pool module. See chan_agent and AgentRequest for more information.
* This application no longer performs agent authentication. If authentication
is desired, the dialplan needs to perform this function using the
Authenticate or VMAuthenticate application or through an AGI script before
running AgentLogin.
* If this application is called and the agent is already logged in, the
dialplan will continue exection with the AGENT_STATUS channel variable set
to ALREADY_LOGGED_IN.
* The agents.conf schema has changed. Rather than specifying agents on a
single line in comma delineated fashion, each agent is defined in a separate
context. This allows agents to use the power of context templates in their
definition.
* A number of parameters from agents.conf have been removed. This includes
maxloginretries, autologoffunavail, updatecdr, goodbye, group, recordformat,
urlprefix, and savecallsin. These options were obsoleted by the move from
a channel driver model to the bridging/application model provided by
app_agent_pool.
AgentRequest
------------------
* A new application, this will request a logged in agent from the pool and
bridge the requested channel with the channel calling this application.
Logged in agents are those channels that called the AgentLogin application.
If an agent cannot be requested from the pool, the AGENT_STATUS dialplan
application will be set with an appropriate error value.
AgentMonitorOutgoing
------------------
* This application has been removed. It was a holdover from when
AgentCallbackLogin was removed.
AlarmReceiver
------------------
* Added support for additional Ademco DTMF signalling formats, including
Express 4+1, Express 4+2, High Speed and Super Fast.
* Added channel variable ALARMRECEIVER_CALL_LIMIT. This sets the maximum
call time, in milliseconds, to run the application.
* Added channel variable ALARMRECEIVER_RETRIES_LIMIT. This sets the
maximum number of times to retry the call.
* Added a new configuration option answait. If set, the AlarmReceiver
application will wait the number of milliseconds specified by answait
after the channel has answered. Valid values range between 500
milliseconds and 10000 milliseconds.
* Added configuration option no_group_meta. If enabled, grouping of metadata
information in the AlarmReceiver log file will be skipped.
Answer
------------------
* It is now no longer possible to bypass updating the CDR on the channel
when answering. CDRs reflect the state of the channel and will always
reflect the time they were Answered.
BridgeWait
------------------
* A new application in Asterisk, this will place the calling channel
into a holding bridge, optionally entertaining them with some form of
media. Channels participating in a holding bridge do not interact with
other channels in the same holding bridge. Optionally, however, a channel
may join as an announcer. Any media passed from an announcer channel is
played to all channels in the holding bridge. Channels leave a holding
bridge either when an optional timer expires, or via the ChannelRedirect
application or AMI Redirect action.
ConfBridge
------------------
* All participants in a bridge can now be kicked out of a conference room
by specifying the channel parameter as 'all' in the ConfBridge kick CLI
command, i.e., 'confbridge kick <conference> all'
* CLI output for the 'confbridge list' command has been improved. When
displaying information about a particular bridge, flags will now be shown
for the participating users indicating properties of that user.
* The ConfbridgeList event now contains the following fields: WaitMarked,
EndMarked, and Waiting. This displays additional properties about the
user's profile, as well as whether or not the user is waiting for a
Marked user to enter the conference.
* Added a new option for conference recording, record_file_append. If enabled,
when the recording is stopped and then re-started, the existing recording
will be used and appended to.
* ConfBridge now has the ability to set the language of announcements to the
conference. The language can be set on a bridge profile in confbridge.conf
or by the dialplan function CONFBRIDGE(bridge,language)=en.
ControlPlayback
------------------
* The channel variable CPLAYBACKSTATUS may now return the value
'REMOTESTOPPED'. This occurs when playback is stopped by a remote interface,
such as AMI. See the AMI action ControlPlayback for more information.
Directory
------------------
* Added the 'a' option, which allows the caller to enter in an additional
alias for the user in the directory. This option must be used in conjunction
with the 'f', 'l', or 'b' options. Note that the alias for a user can be
specified in voicemail.conf.
DumpChan
------------------
* The output of DumpChan no longer includes the DirectBridge or IndirectBridge
fields. Instead, if a channel is in a bridge, it includes a BridgeID field
containing the unique ID of the bridge that the channel happens to be in.
ForkCDR
------------------
* ForkCDR no longer automatically resets the forked CDR. See the 'r' option
for more information.
* Variables are no longer purged from the original CDR. See the 'v' option for
more information.
* The 'A' option has been removed. The Answer time on a CDR is never updated
once set.
* The 'd' option has been removed. The disposition on a CDR is a function of
the state of the channel and cannot be altered.
* The 'D' option has been removed. Who the Party B is on a CDR is a function
of the state of the respective channels involved in the CDR and cannot be
altered.
* The 'r' option has been changed. Previously, ForkCDR always reset the CDR
such that the start time and, if applicable, the answer time was updated.
Now, by default, ForkCDR simply forks the CDR, maintaining any times. The
'r' option now triggers the Reset, setting the start time (and answer time
if applicable) to the current time. Note that the 'a' option still sets
the answer time to the current time if the channel was already answered.
* The 's' option has been removed. A variable can be set on the original CDR
if desired using the CDR function, and removed from a forked CDR using the
same function.
* The 'T' option has been removed. The concept of DONT_TOUCH and LOCKED no
longer applies in the CDR engine.
* The 'v' option now prevents the copy of the variables from the original CDR
to the forked CDR. Previously the variables were always copied but were
removed from the original. This was changed as removing variables from a CDR
can have unintended side effects - this option allows the user to prevent
propagation of variables from the original to the forked without modifying
the original.
MeetMe
-------------------
* Added the 'n' option to MeetMe to prevent application of the DENOISE
function to a channel joining a conference. Some channel drivers that vary
the number of audio samples in a voice frame will experience significant
quality problems if a denoiser is attached to the channel; this option gives
them the ability to remove the denoiser without having to unload func_speex.
MixMonitor
------------------
* The 'b' option now includes conferences as well as sounds played to the
participants.
* The AUDIOHOOK_INHERIT function is no longer needed to keep a MixMonitor
running during a transfer. If a MixMonitor is started on a channel,
the MixMonitor will continue to record the audio passing through the
channel even in the presence of transfers.
NoCDR
------------------
* The NoCDR application is deprecated. Please use the CDR_PROP function to
disable CDRs.
* While the NoCDR application will prevent CDRs for a channel from being
propagated to registered CDR backends, it will not prevent that data from
being collected. Hence, a subsequent call to ResetCDR or the CDR_PROP
function that enables CDRs on a channel will restore those records that have
not yet been finalized.
ParkAndAnnounce
-------------------
* The app_parkandannounce module has been removed. The application
ParkAndAnnounce is now provided by the res_parking module. See the
res_parking changes for more information.
Queue
-------------------
* Added queue available hint. The hint can be added to the dialplan using the
following syntax: exten,hint,Queue:{queue_name}_avail
For example, if the name of the queue is 'markq':
exten => 8501,hint,Queue:markq_avail
This will report 'InUse' if there are no logged in agents or no free agents.
It will report 'Idle' when an agent is free.
* Queues now support a hint for member paused state. The hint uses the form
'Queue:{queue_name}_pause_{member_name}', where {queue_name} and {member_name}
are the name of the queue and the name of the member to subscribe to,
respectively. For example: exten => 8501,hint,Queue:sales_pause_mark.
Members will show as In Use when paused.
* The configuration options eventwhencalled and eventmemberstatus have been
removed. As a result, the AMI events QueueMemberStatus, AgentCalled,
AgentConnect, AgentComplete, AgentDump, and AgentRingNoAnswer will always be
sent. The "Variable" fields will also no longer exist on the Agent* events.
These events can be filtered out from a connected AMI client using the
eventfilter setting in manager.conf.
* The queue log now differentiates between blind and attended transfers. A
blind transfer will result in a BLINDTRANSFER message with the destination
context and extension. An attended transfer will result in an
ATTENDEDTRANSFER message. This message will indicate the method by which
the attended transfer was completed: "BRIDGE" for a bridge merge, "APP"
for running an application on a bridge or channel, or "LINK" for linking
two bridges together with local channels. The queue log will also now detect
externally initiated blind and attended transfers and record the transfer
status accordingly.
* When performing queue pause/unpause on an interface without specifying an
individual queue, the PAUSEALL/UNPAUSEALL event will only be logged if at
least one member of any queue exists for that interface.
* Added the 'queue_log_realtime_use_gmt' option to have timestamps in GMT
for realtime queue log entries.
ResetCDR
------------------
* The 'e' option has been deprecated. Use the CDR_PROP function to re-enable
CDRs when they were previously disabled on a channel.
* The 'w' and 'a' options have been removed. Dispatching CDRs to registered
backends occurs on an as-needed basis in order to preserve linkedid
propagation and other needed behavior.
SayAlphaCase
------------------
* A new application, this is similar to SayAlpha except that it supports
case sensitive playback of the specified characters. For example,
SayAlphaCase(u,aBc) will result in 'a uppercase b c'.
SetAMAFlags
------------------
* This application is deprecated in favor of CHANNEL(amaflags).
SendDTMF
------------------
* The SendDTMF application will now accept 'W' as valid input. This will cause
the application to delay one second while streaming DTMF.
Stasis
------------------
* A new application in Asterisk 12, this hands control of the channel calling
the application over to an external system. Currently, external systems
manipulate channels in Stasis through the Asterisk RESTful Interface (ARI).
UserEvent
------------------
* UserEvent will now handle duplicate keys by overwriting the previous value
assigned to the key.
* In addition to AMI, UserEvent invocations will now be distributed to any
interested Stasis applications.
VoiceMail
------------------
* Mailboxes defined by app_voicemail MUST be referenced by the rest of the
system as mailbox@context. The rest of the system cannot add @default
to mailbox identifiers for app_voicemail that do not specify a context
any longer. It is a mailbox identifier format that should only be
interpreted by app_voicemail.
* The voicemail.conf configuration file now has an 'alias' configuration
parameter for use with the Directory application. The voicemail realtime
database table schema has also been updated with an 'alias' column.
Codecs
------------------
* Pass through support has been added for both VP8 and Opus.
* Added format attribute negotiation for the Opus codec. Format attribute
negotiation is provided by the res_format_attr_opus module.
Core
------------------
* Masquerades as an operation inside Asterisk have been effectively hidden
by the migration to the Bridging API. As such, many 'quirks' of Asterisk
no longer occur. This includes renaming of channels, "<ZOMBIE>" channels,
dropping of frame/audio hooks, and other internal implementation details
that users had to deal with. This fundamental change has large implications
throughout the changes documented for this version. For more information
about the new core architecture of Asterisk, please see the Asterisk wiki.
* Multiple parties in a bridge may now be transferred. If a participant in a
multi-party bridge initiates a blind transfer, a Local channel will be used
to execute the dialplan location that the transferer sent the parties to. If
a participant in a multi-party bridge initiates an attended transfer,
several options are possible. If the attended transfer results in a transfer
to an application, a Local channel is used. If the attended transfer results
in a transfer to another channel, the resulting channels will be merged into
a single bridge.
* The channel variable ATTENDED_TRANSFER_COMPLETE_SOUND is no longer channel
driver specific. If the channel variable is set on the transferrer channel,
the sound will be played to the target of an attended transfer.
* The channel variable BRIDGEPEER becomes a comma separated list of peers in
a multi-party bridge. The BRIDGEPEER value can have a maximum of 10 peers
listed. Any more peers in the bridge will not be included in the list.
BRIDGEPEER is not valid in holding bridges like parking since those channels
do not talk to each other even though they are in a bridge.
* The channel variable BRIDGEPVTCALLID is only valid for two party bridges
and will contain a value if the BRIDGEPEER's channel driver supports it.
* A channel variable ATTENDEDTRANSFER is now set which indicates which channel
was responsible for an attended transfer in a similar fashion to
BLINDTRANSFER.
* Modules using the Configuration Framework or Sorcery must have XML
configuration documentation. This configuration documentation is included
with the rest of Asterisk's XML documentation, and is accessible via CLI
commands. See the CLI changes for more information.
AMI (Asterisk Manager Interface)
------------------
* Major changes were made to both the syntax as well as the semantics of the
AMI protocol. In particular, AMI events have been substantially improved
in this version of Asterisk. For more information, please see the AMI
specification at https://wiki.asterisk.org/wiki/x/dAFRAQ
* AMI events that reference a particular channel or bridge will now always
contain a standard set of fields. When multiple channels or bridges are
referenced in an event, fields for at least some subset of the channels
and bridges in the event will be prefixed with a descriptive name to avoid
name collisions. See the AMI event documentation on the Asterisk wiki for
more information.
* The CLI command 'manager show commands' no longer truncates command names
longer than 15 characters and no longer shows authorization requirement
for commands. 'manager show command' now displays the privileges needed
for using a given manager command instead.
* The SIPshowpeer action will now include a 'SubscribeContext' field for a
peer in its response if the peer has a subscribe context set.
* The SIPqualifypeer action now acknowledges the request once it has
established that the request is against a known peer. It also issues a new
event, 'SIPQualifyPeerDone', once the qualify action has been completed.
* The PlayDTMF action now supports an optional 'Duration' parameter. This
specifies the duration of the digit to be played, in milliseconds.
* Added VoicemailRefresh action to allow an external entity to trigger mailbox
updates when changes occur instead of requiring the use of pollmailboxes.
* Added a new action 'ControlPlayback'. The ControlPlayback action allows an
AMI client to manipulate audio currently being played back on a channel. The
supported operations depend on the application being used to send audio to
the channel. When the audio playback was initiated using the ControlPlayback
application or CONTROL STREAM FILE AGI command, the audio can be paused,
stopped, restarted, reversed, or skipped forward. When initiated by other
mechanisms (such as the Playback application), the audio can be stopped,
reversed, or skipped forward.
* Channel related events now contain a snapshot of channel state, adding new
fields to many of these events.
* The AMI event 'Newexten' field 'Extension' is deprecated, and may be removed
in a future release. Please use the common 'Exten' field instead.
* The AMI event 'UserEvent' from app_userevent now contains the channel state
fields. The channel state fields will come before the body fields.
* The AMI events 'ParkedCall', 'ParkedCallTimeOut', 'ParkedCallGiveUp', and
'UnParkedCall' have changed significantly in the new res_parking module.
The 'Channel' and 'From' headers are gone. For the channel that was parked
or is coming out of parking, a 'Parkee' channel snapshot is issued and it
has a number of fields associated with it. The old 'Channel' header relayed
the same data as the new 'ParkeeChannel' header.
The 'From' field was ambiguous and changed meaning depending on the event.
for most of these, it was the name of the channel that parked the call
(the 'Parker'). There is no longer a header that provides this channel name,
however the 'ParkerDialString' will contain a dialstring to redial the
device that parked the call.
On UnParkedCall events, the 'From' header would instead represent the
channel responsible for retrieving the parkee. It receives a channel
snapshot labeled 'Retriever'. The 'from' field is is replaced with
'RetrieverChannel'.
Lastly, the 'Exten' field has been replaced with 'ParkingSpace'.
* The AMI event 'Parkinglot' (response to 'Parkinglots' command) in a similar
fashion has changed the field names 'StartExten' and 'StopExten' to
'StartSpace' and 'StopSpace' respectively.
* The deprecated use of | (pipe) as a separator in the channelvars setting in
manager.conf has been removed.
* Channel Variables conveyed with a channel no longer contain the name of the
channel as part of the key field, i.e., ChanVariable(SIP/foo): bar=baz is now
ChanVariable: bar=baz. When multiple channels are present in a single AMI
event, the various ChanVariable fields will contain a suffix that specifies
which channel they correspond to.
* The NewPeerAccount AMI event is no longer raised. The NewAccountCode AMI
event always conveys the AMI event for a particular channel.
* All 'Reload' events have been consolidated into a single event type. This
event will always contain a Module field specifying the name of the module
and a Status field denoting the result of the reload. All modules now issue
this event when being reloaded.
* The 'ModuleLoadReport' event has been removed. Most AMI connections would
fail to receive this event due to being connected after modules have loaded.
AMI connections that want to know when Asterisk is ready should listen for
the 'FullyBooted' event.
* app_fax now sends the same send fax/receive fax events as res_fax. The
'FaxSent' event is now the 'SendFAX' event, and the 'FaxReceived' event is
now the 'ReceiveFAX' event.
* The 'MusicOnHold' event is now two events: 'MusicOnHoldStart' and
'MusicOnHoldStop'. The sub type field has been removed.
* The 'JabberEvent' event has been removed. It is not AMI's purpose to be a
carrier for another protocol.
* The Bridge Manager action's 'Playtone' header now accepts more fine-grained
options. 'Channel1' and 'Channel2' may be specified in order to play a tone
to the specific channel. 'Both' may be specified to play a tone to both
channels. The old 'yes' option is still accepted as a way of playing the
tone to Channel2 only.
* The AMI 'Status' response event to the AMI Status action replaces the
'BridgedChannel' and 'BridgedUniqueid' headers with the 'BridgeID' header to
indicate what bridge the channel is currently in.
* The AMI 'Hold' event has been moved out of individual channel drivers, into
core, and is now two events: 'Hold' and 'Unhold'. The status field has been
removed.
* The AMI events in app_queue have been made more consistent with each other.
Events that reference channels (QueueCaller* and Agent*) will show
information about each channel. The (infamous) 'Join' and 'Leave' AMI
events have been changed to 'QueueCallerJoin' and 'QueueCallerLeave'.
* The 'MCID' AMI event now publishes a channel snapshot when available and
its non-channel-snapshot parameters now use either the "MCallerID" or
'MConnectedID' prefixes with Subaddr*, Name*, and Num* suffixes instead
of 'CallerID' and 'ConnectedID' to avoid confusion with similarly named
parameters in the channel snapshot.
* The AMI events 'Agentlogin' and 'Agentlogoff' have been renamed
'AgentLogin' and 'AgentLogoff' respectively.
* The 'Channel' key used in the 'AlarmClear', 'Alarm', and 'DNDState' has been
renamed "DAHDIChannel" since it does not convey an Asterisk channel name.
* 'ChannelUpdate' events have been removed.
* All AMI events now contain a 'SystemName' field, if available.
* Local channel optimization is now conveyed in two events:
'LocalOptimizationBegin' and 'LocalOptimizationEnd'. The Begin event is sent
when the Local channel driver begins attempting to optimize itself out of
the media path; the End event is sent after the channel halves have
successfully optimized themselves out of the media path.
* Local channel information in events is now prefixed with 'LocalOne' and
'LocalTwo'. This replaces the suffix of '1' and '2' for the two halves of
the Local channel. This affects the 'LocalBridge', 'LocalOptimizationBegin',
and 'LocalOptimizationEnd' events.
* The option 'allowmultiplelogin' can now be set or overriden in a particular
account. When set in the general context, it will act as the default
setting for defined accounts.
* The 'BridgeAction' event was removed. It technically added no value, as the
Bridge Action already receives confirmation of the bridge through a
successful completion Event.
* The 'BridgeExec' events were removed. These events duplicated the events that
occur in the Briding API, and are conveyed now through BridgeCreate,
BridgeEnter, and BridgeLeave events.
* The 'RTCPSent'/'RTCPReceived' events have been significantly modified from
previous versions. They now report all SR/RR packets sent/received, and
have been restructured to better reflect the data sent in a SR/RR. In
particular, the event structure now supports multiple report blocks.
* Added 'BlindTransfer' and 'AttendedTransfer' events. These events are
raised when a blind transfer/attended transfer completes successfully.
They contain information about the transfer that just completed, including
the location of the transfered channel.
* Added a 'security' class to AMI which outputs the required fields for
security messages similar to the log messages from res_security_log
* The AMI event 'ExtensionStatus' now contains a 'StatusText' field
that describes the status value in a human readable string.
CDR (Call Detail Records)
------------------
* Significant changes have been made to the behavior of CDRs. The CDR engine
was effectively rewritten and built on the Stasis message bus. For a full
definition of CDR behavior in Asterisk 12, please read the specification
on the Asterisk wiki (wiki.asterisk.org).
* CDRs will now be created between all participants in a bridge. For each
pair of channels in a bridge, a CDR is created to represent the path of
communication between those two endpoints. This lets an end user choose who
to bill for what during bridge operations with multiple parties.
* The duration, billsec, start, answer, and end times now reflect the times
associated with the current CDR for the channel, as opposed to a cumulative
measurement of all CDRs for that channel.
* When a CDR is dispatched, user defined CDR variables from both parties are
included in the resulting CDR. If both parties have the same variable, only
the Party A value is provided.
* Added a new option to cdr.conf, 'debug'. When enabled, significantly more
information regarding the CDR engine is logged as verbose messages. This
option should only be used if the behavior of the CDR engine needs to be
debugged.
* Added CLI command 'cdr set debug {on|off}'. This toggles the 'debug' setting
normally configured in cdr.conf.
* Added CLI command 'cdr show active {channel}'. When {channel} is not
specified, this command provides a summary of the channels with CDR
information and their statistics. When {channel} is specified, it shows
detailed information about all records associated with {channel}.
CEL (Channel Event Logging)
------------------
* CEL has undergone significant rework in Asterisk 12, and is now built on the
Stasis message bus. Please see the specification for CEL on the Asterisk
wiki at https://wiki.asterisk.org/wiki/x/4ICLAQ for more detailed
information.
* The 'extra' field of all CEL events that use it now consists of a JSON blob
with key/value pairs which are defined in the Asterisk 12 CEL documentation.
* BLINDTRANSFER events now report the transferee bridge unique
identifier, extension, and context in a JSON blob as the extra string
instead of the transferee channel name as the peer.
* ATTENDEDTRANSFER events now report the peer as NULL and additional
information in the 'extra' string as a JSON blob. For transfers that occur
between two bridged channels, the 'extra' JSON blob contains the primary
bridge unique identifier, the secondary channel name, and the secondary
bridge unique identifier. For transfers that occur between a bridged channel
and a channel running an app, the 'extra' JSON blob contains the primary
bridge unique identifier, the secondary channel name, and the app name.
* LOCAL_OPTIMIZE events have been added to convey local channel