forked from asterisk/asterisk
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CHANGES
7957 lines (6667 loc) · 363 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 IS AUTOMATICALLY GENERATED DURING THE RELEASE
=== PROCESS. DO NOT MAKE CHANGES HERE. INSTEAD, REFER TO
=== doc/CHANGES-staging/README.md FOR MORE DETAILS.
===
=== 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 19.0.0 to Asterisk 20.0.0 ------------
------------------------------------------------------------------------------
Applications
------------------
* added support for Danish syntax, playing the correct plural sound file
dependen on where you have 1 or multipe messages
based on the existing SE/NO code
* added that we set DIALEDPEERNUMBER on the outgoing channels
so it is avalible in b(content^extension^line)
this add the same behaviour as Dial
Channel-agnostic MF support
------------------
* A SendMF application and PlayMF manager
application are now included to send
arbitrary standard R1 MF tones on the
current channel or another specified channel.
Core
------------------
* Bundled PJProject Build
The build process has been updated to make pjproject troubleshooting
and development easier. See third-party/pjproject/README-hacking.md or
https://wiki.asterisk.org/wiki/display/AST/Bundled+PJProject
for more info.
Handle non-standard Meter metric type safely
------------------
* A meter_support flag has been introduced that defaults to true to maintain current behaviour.
If disabled, a counter metric type will be used instead wherever a meter metric type was used,
the counter will have a "_meter" suffix appended to the metric name.
MessageSend
------------------
* The MessageSend AMI action has been updated to allow the Destination
and the To addresses to be provided separately. This brings the
MessageSend manager command in line with the capabilities of the
MessageSend dialplan application.
ToneScan application
------------------
* A new application, ToneScan, allows for
synchronous detection of call progress
signals such as dial tone, busy tone,
Special Information Tones, and modems.
ami
------------------
* An AMI event now exists for "Wink".
* AMI events can now be globally disabled using
the disabledevents [general] setting.
app_confbridge
------------------
* Added the hear_own_join_sound option to the confbridge user profile to
control who hears the sound_join audio file. When set to 'yes' the user
entering the conference and the participants already in the conference
will hear the sound_join audio file. When set to 'no' the user entering
the conference will not hear the sound_join audio file, but the
participants already in the conference will hear the sound_join audio file.
* Adds the CONFBRIDGE_CHANNELS function which can
be used to retrieve a list of channels in a ConfBridge,
optionally filtered by a particular category. This
list can then be used with functions like SHIFT, POP,
UNSHIFT, etc.
app_dtmfstore
------------------
* New application which collects digits
dialed and stores them into
a specified variable.
app_mf
------------------
* Adds MF receiver and sender applications to support
the R1 MF signaling protocol, including integration
with the Dial application.
* Adds an option to ReceiveMF to cap the
number of digits read at a user-specified
maximum.
app_milliwatt
------------------
* The Milliwatt application's existing behavior is
incorrect in that it plays a constant tone, which
is not how digital milliwatt test lines actually
work.
An option is added so that a proper milliwatt test
tone can be provided, including a 1 second silent
interval every 10 seconds. However, for compatability
reasons, the default behavior remains unchanged.
app_morsecode
------------------
* Extends the Morsecode application by adding support for
American Morse code and adds a configurable option
for the frequency used in off intervals.
app_originate
------------------
* Codecs can now be specified for dialplan-originated
calls, as with call files and the manager action.
By default, only the slin codec is now used, instead
of all the slin* codecs.
app_playback
------------------
* A new option 'mix' is added to the Playback application that
will play by filename and say.conf. It will look on the format of the
name, if it is like say format it will play with say.conf if not it
will play the file name.
app_queue
------------------
* Reload behavior in app_queue has been changed so
queue and agent stats are not reset during full
app_queue module reloads. The queue reset stats
CLI command may still be used to reset stats while
Asterisk is running.
* Add field to save the time value when a member enter a queue.
Shows this time in seconds using 'queue show' command and the
field LoginTime for responses for AMI the events.
The output for the CLI command `queue show` is changed by added a
extra data field for the information of the time login time for each
member.
* added that we set DIALEDPEERNUMBER on the outgoing channels
so it is avalible in b(content^extension^line)
this add the same behaviour as Dial
* Load queues and members from Realtime for
AMI actions: QueuePause, QueueStatus and QueueSummary,
Applications: PauseQueueMember and UnpauseQueueMember.
* Added a new AMI action: QueueWithdrawCaller
This AMI action makes it possible to withdraw a caller from a queue
back to the dialplan. The call will be signaled to leave the queue
whenever it can, hence, it not guaranteed that the call will leave
the queue.
Optional custom data can be passed in the request, in the WithdrawInfo
parameter. If the call successfully withdrawn the queue,
it can be retrieved using the QUEUE_WITHDRAW_INFO variable.
This can be useful for certain uses, such as dispatching the call
to a specific extension.
* The m option now allows an override music on hold
class to be specified for the Queue application
within the dialplan.
app_queue.c
------------------
* Allow multiple files to be streamed for agent announcement.
app_queues
------------------
* adding support for playing the correct en/et for nordic languages
* Don't play sound_thanks if there is no leading hold_time message
When the only announcement is hold time, and there is no hold time (0 min, 0 sec), asterisk will say "thank you for your patience"
app_read
------------------
* A new option allows the digit '#' to be read literally,
rather than used exclusively as the input terminator
character.
app_sendtext
------------------
* A ReceiveText application has been added that can be
used in conjunction with the SendText application.
app_voicemail
------------------
* Add a new 'S' option to VoiceMail which prevents the instructions
(vm-intro) from being played if a busy/unavailable/temporary greeting
from the voicemail user is played. This is similar to the existing 's'
option except that instructions will still be played if no user
greeting is available.
* added support for Danish syntax, playing the correct plural sound file
dependen on where you have 1 or multipe messages
based on the existing SE/NO code
* The r option has been added, which prevents deletion
of messages from VoiceMailMain, which can be
useful for shared mailboxes.
apps
------------------
* A new option 'mix' is added to the Playback application that
will play by filename and say.conf. It will look on the format of the
name, if it is like say format it will play with say.conf if not it
will play the file name.
ari
------------------
* Expose channel driver's unique id (which is the Call-ID for SIP/PJSIP)
to ARI channel resources as 'protocol_id'.
ASTERISK-30027
ast_coredumper
------------------
* New options:
--pid=<asterisk_pid>
Allows specification of an Asterisk instance when trying to
and the script can't determine it itself.
--libdir=<system library directory>
Allows specification of a non-standard installation directory
containing the Asterisk modules.
--(no-)rename
Renames the coredump and the output files with readable
timestamps. This is the default.
Removed unneeded or confusing options:
--append-coredumps
--conffile
--no-default-search
--tarball-uniqueid
Changed Variables:
COREDUMPS is now just "/tmp/core!(*.txt)"
DATEFORMAT is renamed to DATEOPTS and defaults to '-u +%FT%H-%M-%SZ'
Changed behavior:
If you use 'running' or 'RUNNING' you no longer need to specify
'--no-default-search' to ignore existing coredumps.
cdr
------------------
* A new CDR option, channeldefaultenabled, allows controlling
whether CDR is enabled or disabled by default on
newly created channels. The default behavior remains
unchanged from previous versions of Asterisk (new
channels will have CDR enabled, as long as CDR is
enabled globally).
chan_dahdi
------------------
* Previously, cadences were appended on dahdi restart,
rather than reloaded. This prevented cadences from
being updated and maxed out the available cadences
if reloaded multiple times. This behavior is fixed
so that reloading cadences is idempotent and cadences
can actually be reloaded.
* A POLARITY function is now available that allows
getting or setting the polarity on a channel
from the dialplan.
chan_iax2
------------------
* ANI2 (OLI) is now transmitted over IAX2 calls
as an information element.
* Both a secret and an outkey may be specified at dial time,
since encryption is possible with RSA authentication.
chan_pjsip
------------------
* Add function PJSIP_HEADERS() to get list of headers by pattern in the same way as SIP_HEADERS() do.
Add ability to read header by pattern using PJSIP_HEADER().
* added global config option "allow_sending_180_after_183"
Allow Asterisk to send 180 Ringing to an endpoint
after 183 Session Progress has been send.
If disabled Asterisk will instead send only a
183 Session Progress to the endpoint.
* Hook flash events can now be sent on a PJSIP channel
if requested to do so.
chan_sip
------------------
* Session timers get removed on UPDATE
Fix if Asterisk receives a SIP REFER with Session-Timers UAC
that Asterisk maintains Session-Timers when sending UPDATE request
chan_sip.c
------------------
* resolve issue with pickup on device that uses "183" and not "180"
channel_internal_api
------------------
* CHANNEL(lastcontext) and CHANNEL(lastexten)
are now available for use in the dialplan.
cli
------------------
* The "module refresh" command has been added,
which allows unloading and then loading a
module with a single command.
* A new CLI command 'dialplan eval function' has been
added which allows users to test the behavior of
dialplan function calls directly from the CLI.
func_channel
------------------
* Adds the CHANNEL_EXISTS function to check for the existence
of a channel by name or unique ID.
func_db
------------------
* The function DB_KEYCOUNT has been added, which
returns the cardinality of the keys at a specified
prefix in AstDB, i.e. the number of keys at a
given prefix.
func_env.c
------------------
* Two new functions, DIRNAME and BASENAME, are now
included which allow users to obtain the directory
or the base filename of any file.
func_evalexten
------------------
* This adds the EVAL_EXTEN function which may be
used to evaluate data at dialplan extensions.
func_framedrop
------------------
* New function to selectively drop specified frames
in either direction on a channel.
func_json
------------------
* The JSON_DECODE dialplan function can now be used
to parse JSON strings, such as in conjunction with
CURL for using API responses.
func_odbc
------------------
* A SQL_ESC_BACKSLASHES dialplan function has been added which
escapes backslashes. Usage of this is dependent on whether the
database in use can use backslashes to escape ticks or not. If
it can, then usage of this prevents a broken SQL query depending
on how the SQL query is constructed.
func_scramble
------------------
* Adds an audio scrambler function that may be used to
distort voice audio on a channel as a privacy
enhancement.
func_strings
------------------
* A new STRBETWEEN function is now included which
allows a substring to be inserted between characters
in a string. This is particularly useful for transforming
dial strings, such as adding pauses between digits
for a string of digits that are sent to another channel.
func_vmcount
------------------
* Multiple mailboxes may now be specified instead of just one.
logger
------------------
* Added the ability to define custom log levels in logger.conf
and use them in the Log dialplan application. Also adds a
logger show levels CLI command.
res_agi
------------------
* Agi command 'exec' can now be enabled
to evaluate dialplan functions and variables
by setting the variable AGIEXECFULL to yes.
res_cliexec
------------------
* A new CLI command, dialplan exec application, has
been added which allows dialplan applications to be
executed at the CLI, useful for some quick testing
without needing to write dialplan.
res_fax_spandsp
------------------
* Adds support for spandsp 3.0.0.
res_geolocation
------------------
* Added res_geolocation which creates the core capabilities
to manipulate Geolocation information on SIP INVITEs.
res_parking
------------------
* An m option to Park and ParkAndAnnounce now allows
specifying a music on hold class override.
res_pjproject
------------------
* In pjproject.conf you can now map pjproject log levels
to the Asterisk TRACE log level. The default mappings
have therefore changed so that only pjproject levels
3 and 4 are mapped to DEBUG and 5 and 6 are now mapped
to TRACE. Previously 3, 4, 5, and 6 were all mapped to
DEBUG.
res_pjsip
------------------
* A new transport option 'allow_wildcard_certs' has been added that when it
and 'verify_server' are both set to 'yes', enables verification against
wildcards, i.e. '*.' in certs for common, and subject alt names of type DNS
for TLS transport types. Names must start with the wildcard. Partial wildcards,
e.g. 'f*.example.com' and 'foo.*.com' are not allowed. As well, names only
match against a single level meaning '*.example.com' matches 'foo.example.com',
but not 'foo.bar.example.com'.
res_pjsip_geolocation
------------------
* Added res_pjsip_geolocation which gives chan_pjsip
the ability to use the core geolocation capabilities.
res_pjsip_header_funcs
------------------
* Add function PJSIP_RESPONSE_HEADERS() to get list of header names from 200 response, in the same way as PJSIP_HEADERS() from the request.
Add function PJSIP_RESPONSE_HEADER() to read header from 200 response, in the same way as PJSIP_HEADER() from the request.
res_pjsip_pubsub
------------------
* A new resource_list option, resource_display_name, indicates
whether display name of resource or the resource name being
provided for RLS entries.
If this option is enabled, the Display Name will be provided.
This option is disabled by default to remain the previous behavior.
If the 'event' set to 'presence' or 'dialog' the non-empty HINT name
will be set as the Display Name.
The 'message-summary' is not supported yet.
* The Resource List Subscriptions (RLS) is dynamic now.
The asterisk now updates current subscriptions to reflect the changes
to the list on subscription refresh. If list items are added,
removed, updated or do not exist anymore, the asterisk regenerates
the resource list.
res_pjsip_registrar
------------------
* Adds new PJSIP AOR option remove_unavailable to either
remove unavailable contacts when a REGISTER exceeds
max_contacts when remove_existing is disabled, or
prioritize unavailable contacts over other existing
contacts when remove_existing is enabled.
res_pjsip_t38
------------------
* In res_pjsip_sdp_rtp, the bind_rtp_to_media_address option and the
fallback use of the transport's bind address solve problems sending
media on systems that cannot send ipv4 packets on ipv6 sockets, and
certain other situations. This change extends both of these behaviors
to UDPTL sessions as well in res_pjsip_t38, to fix fax-specific
problems on these systems, introducing a new option
endpoint/t38_bind_udptl_to_media_address.
res_rtp_asterisk
------------------
* When the address of the STUN server (stunaddr) is a name resolved via DNS, the
stunaddr will be recurringly resolved when the DNS answer Time-To-Live (TTL)
expires. This allows the STUN server to change its IP address without having to
reload the res_rtp_asterisk module.
res_tonedetect
------------------
* Arbitrary tone detection is now available through a
WaitForTone application (blocking) and a TONE_DETECT
function (non-blocking).
say.c
------------------
* Adds SAYFILES function to retrieve the file names that would
be played by corresponding Say applications, such as
SayDigits, SayAlpha, etc.
Additionally adds SayMoney and SayOrdinal applications.
stasis_channels
------------------
* Expose channel driver's unique id (which is the Call-ID for SIP/PJSIP)
to ARI channel resources as 'protocol_id'.
ASTERISK-30027
------------------------------------------------------------------------------
--- Functionality changes from Asterisk 18.0.0 to Asterisk 19.0.0 ------------
------------------------------------------------------------------------------
AMI Flash event
------------------
* Hook flash events are now exposed as AMI events.
Add variable support to Originate
------------------
* The Originate application now allows
variables to be set on the new channel
through a new option.
Core
------------------
* Added debug logging categories that allow a user to output debug information
based on a specified category. This lets the user limit, and filter debug
output to data relevant to a particular context, or topic. For instance the
following categories are now available for debug logging purposes:
dtls, dtls_packet, ice, rtcp, rtcp_packet, rtp, rtp_packet, stun, stun_packet
These debug categories can be enable/disable via an Asterisk CLI command:
core set debug category <category>[:<sublevel>] [category[:<sublevel] ...]
core set debug category off [<category> [<category>] ...]
If no sub-level is associated all debug statements for a given category are
output. If a sub-level is given then only those statements assigned a value
at or below the associated sub-level are output.
* The location where the media cache stores its temporary files
is no longer hardcoded to /tmp but can now be configured separately
via the astcachedir config variable in asterisk.conf.
The default location for astcachedir is now /var/cache/asterisk
instead of /tmp, please make sure to manually cleanup and/or
migrate the temporary files in /tmp after upgrading.
MessageSend
------------------
* The MessageSend dialplan application now takes an
optional third argument that can set the message's
"To" field on outgoing messages. It's an alternative
to using the MESSAGE(to) dialplan function.
To prevent confusion with the first argument, currently
named "to", it's been renamed to "destination".
Its function, creating the request URI, hasn't changed.
The online documentation has also been enhanced to
explain the behavior.
Despite the changes in this commit, there should be
no impact to current users of MessageSend.
New ConfKick application
------------------
* Adds a ConfKick() application, which allows
a specific channel, all users, or all non-admin
users to be kicked from a conference bridge.
New Reload application
------------------
* Adds an application to reload modules
PlaybackFinished has a new error state
------------------
* The PlaybackFinished event now has a new state "failed"
that is used when the sound file was not played due to an error.
Before the state on PlaybackFinished was always "done".
In case of multiple sound files to be played,
the PlaybackFinished is sent only once in the end of the list,
even in case of error.
WaitForCondition application
------------------
* This application provides a way to halt
dialplan execution until a provided
condition evaluates to true.
app_confbridge
------------------
* app_confbridge now has the ability to force the estimated bitrate on an SFU
bridge. To use it, set a bridge profile's remb_behavior to "force" and
set remb_estimated_bitrate to a rate in bits per second. The
remb_estimated_bitrate parameter is ignored if remb_behavior is something
other than "force".
app_confbridge answer supervision control
------------------
* app_confbridge now provides a user option to prevent
answer supervision if the channel hasn't been
answered yet. To use it, set a user profile's
answer_channel option to no.
app_dial announcement option
------------------
* The A option for Dial now supports
playing audio to the caller as well
as the called party.
app_mixmonitor
------------------
* app_mixmonitor now sends manager events MixMonitorStart, MixMonitorStop and
MixMonitorMute when the channel monitoring is started, stopped and muted (or
unmuted) respectively.
app_voicemail
------------------
* The VoiceMail application can now be configured to send greetings and
instructions via early media and only answering the channel when it is
time for the caller to record their message. This behavior can be
activated by passing the new 'e' option to VoiceMail.
* You can now customize the "beep" tone or omit it entirely.
chan_iax2
------------------
* You can now specify a default "auth" method in the
[general] section of iax.conf
chan_pjsip
------------------
* The PJSIP_SEND_SESSION_REFRESH dialplan function now issues a warning, and
returns unsuccessful if it's used on a channel prior to answering.
chan_pjsip, app_transfer
------------------
* Added TRANSFERSTATUSPROTOCOL variable. When transfer is performed,
transfers can pass a protocol specific error code.
Example, in SIP 3xx-6xx represent any SIP specific error received when
performing a REFER.
func_math: Three new dialplan functions
------------------
* Introduce three new functions, MIN, MAX, and ABS, which can be used to
obtain the minimum or maximum of up to two integers or absolute value.
func_odbc
------------------
* Introduce an ARGC variable for func_odbc functions, along with a minargs
per-function configuration option.
minargs enables enforcing of minimum count of arguments to pass to
func_odbc, so if you're unconditionally using ARG1 through ARG4 then
this should be set to 4. func_odbc will generate an error in this case,
so for example
[FOO]
minargs = 4
and ODBC_FOO(a,b,c) in dialplan will now error out instead of using a
potentially leaked ARG4 from Gosub().
ARGC is needed if you're using optional argument, to verify whether or
not an argument has been passed, else it's possible to use a leaked ARGn
from Gosub (app_stack). So now you can safely do
${IF($[${ARGC}>3]?${ARGV}:default value)} kind of thing.
func_volume now can be read
------------------
* The VOLUME function can now also be used
to read existing values previously set.
logger
------------------
* Added a new log formatter called "plain" that always prints
file, function and line number if available (even for verbose
messages) and never prints color control characters. Most
suitable for file output but can be used for other channels
as well.
You use it in logger.conf like so:
debug => [plain]debug
console => [plain]error,warning,debug,notice,pjsip_history
messages => [plain]warning,error,verbose
* The dateformat option in logger.conf will now control the remote
console (asterisk -r -T) timestamp format. Previously, dateformat only
controlled the formatting of the timestamp going to log files and the
main console (asterisk -c) but only for non-verbose messages.
Internally, Asterisk does not send the logging timestamp with verbose
messages to console clients. It's up to the Asterisk remote consoles
to format verbose messages. Asterisk remote consoles previously did
not load dateformat from logger.conf.
Previously there was a non-configurable and hard-coded "%b %e %T"
dateformat that would be used no matter what on all verbose console
messages printed on remote consoles.
Example:
logger.conf
dateformat=%F %T.%3q
# asterisk -rvvv -T
[2021-03-19 09:54:19.760-0400] Loading res_stasis_answer.so.
[Mar 19 09:55:43] -- Goto (dialExten,s,1)
Given the following example configuration in logger.conf, Asterisk log
files and the console, will log verbose messages using the given
timestamp. Now ensuring that all remote console messages are logged
with the same dateformat as other log streams.
---
[general]
dateformat=%F %T.%3q
[logfiles]
console => notice,warning,error,verbose
full => notice,warning,error,debug,verbose
---
Now we have a globally-defined dateformat that will be used
consistently across the Asterisk main console, remote consoles, and
log files.
Now we have consistent logging:
# asterisk -rvvv -T
[2021-03-19 09:54:19.760-0400] Loading res_stasis_answer.so.
[2021-03-19 09:55:43.920-0400] -- Goto (dialExten,s,1)
res_pjsip
------------------
* PJSIP transports can now be partially reloaded safely. This allows the
local_net and external_* options to be updated without restarting Asterisk.
* PJSIP endpoints can now be configured to skip authentication when
handling OPTIONS requests by setting the allow_unauthenticated_options
configuration property to 'yes.'
* PJSIP support of registrations of endpoints in multidomain
scenarios, where the endpoint contains the domain info
in pjsip.conf.
res_pjsip_dialog_info_body_generator
------------------
* PJSIP now supports RFC 4235 Section 4.1.6 dialog-info+xml local and
remote elements by iterating through ringing channels and inserting
that info into NOTIFY packet sent to the endpoint.
res_pjsip_messaging
------------------
* Implemented the new "to" parameter of the MessageSend()
dialplan application. This allows a user to specify
a complete SIP "To" header separate from the Request URI.
We now also accept a destination in the same format
as Dial()... PJSIP/number@endpoint
res_rtp_asterisk
------------------
* By default Asterisk reports the PJSIP version in all
STUN packets it sends.
This behaviour may not be desired in a production
environment and can now be disabled by setting the
stun_software_attribute option to 'no' in rtp.conf.
res_srtp
------------------
* SRTP replay protection has been added to res_srtp and
a new configuration option "srtpreplayprotection" has
been added to the rtp.conf config file. For security
reasons, the default setting is "yes". Buggy clients
may not handle this correctly which could result in
no, or one way, audio and Asterisk error messages like
"replay check failed".
------------------------------------------------------------------------------
--- New functionality introduced in Asterisk 18.0.0 --------------------------
------------------------------------------------------------------------------
Core
------------------
* The Streams API becomes the home for the core ACN capabilities.
These include...
* Parsing and formatting of codec negotiation preferences.
* Resolving pending streams and topologies with those configured
using configured preferences.
* Utility functions for creating string representations of
streams, topologies, and negotiation preferences.
For codec negotiation preferences:
* Added ast_stream_codec_prefs_parse() which takes a string
representation of codec negotiation preferences, which
may come from a pjsip endpoint for example, and populates
a ast_stream_codec_negotiation_prefs structure.
* Added ast_stream_codec_prefs_to_str() which does the reverse.
* Added many functions to parse individual parameter name
and value strings to their respective enum values, and the
reverse.
For streams:
* Added ast_stream_create_resolved() which takes a "live" stream
and resolves it with a configured stream and the negotiation
preferences to create a new stream.
* Added ast_stream_to_str() which create a string representation
of a stream suitable for debug or display purposes.
For topology:
* Added ast_stream_topology_create_resolved() which takes a "live"
topology and resolves it, stream by stream, with a configured
topology stream and the negotiation preferences to create a new
topology.
* Added ast_stream_topology_to_str() which create a string
representation of a topology suitable for debug or display
purposes.
* Renamed ast_format_caps_from_topology() to
ast_stream_topology_get_formats() to be more consistent with
the existing ast_stream_get_formats().
Additional changes:
* A new function ast_format_cap_append_names() appends the results
to the ast_str buffer instead of replacing buffer contents.
app_bridgeaddchan
------------------
* The BridgeAdd application now behaves more like the Bridge application.
The application now sets the BRIDGERESULT channel variable to indicate
what happened when the channel resumes in dialplan. This is instead of
hanging up the channel on failure conditions.
res_pjsip
------------------
* Two new options, incoming_call_offer_pref and outgoing_call_offer_pref
have been added to res_pjsip endpoints that specify the preferred order
of codecs to use between those received/sent in an SDP offer and those
set in the endpoint configuration.
------------------------------------------------------------------------------
--- Functionality changes from Asterisk 17.0.0 to Asterisk 18.0.0 ------------
------------------------------------------------------------------------------
AMI
------------------
* You can now specify an optional 'Content-Type' as an argument for the Asterisk
SendText manager action.
ARI
------------------
* A new parameter 'inhibitConnectedLineUpdates' is now available in the
'bridges.addChannel' call. This prevents the identity of the newly connected
channel from being presented to other bridge members.
ARI Channels
------------------
* The Channel resource has a new sub-resource "externalMedia".
This allows an application to create a channel for the sole purpose
of exchanging media with an external server. Once created, this
channel could be placed into a bridge with existing channels to
allow the external server to inject audio into the bridge or
receive audio from the bridge.
See https://wiki.asterisk.org/wiki/display/AST/External+Media+and+ARI
for more information.
Core
------------------
* H.265/HEVC is now a supported video codec and it can be used by
specifying "h265" in the allow line.
Please note however, that handling of the additional SDP parameters
described in RFC 7798 section 7.2 is not yet supported.
Features
------------------
* Adds support for AudioSocket, a very simple bidirectional audio streaming
protocol. There are both channel and application interfaces.
A description of the protocol can be found on the referenced wiki page. A
short talk about the reasons and implementation can be found on YouTube at
the link provided.
ARI support has also been added via the existing "externalMedia" ARI
functionality. The UUID is specified using the arbitrary "data" field.
Wiki: https://wiki.asterisk.org/wiki/display/AST/AudioSocket
YouTube: https://www.youtube.com/watch?v=tjduXbZZEgI
Messaging
------------------
* In order to reduce the amount of AMI and ARI events generated,
the global "Message/ast_msg_queue" channel can be set to suppress
it's normal channel housekeeping events such as "Newexten",
"VarSet", etc. This can greatly reduce load on the manager
and ARI applications when the Digium Phone Module for Asterisk
is in use. To enable, set "hide_messaging_ami_events" in
asterisk.conf to "yes" In Asterisk versions <18, the default
is "no" preserving existing behavior. Beginning with
Asterisk 18, the option will default to "yes".
STIR/SHAKEN
------------------
* STIR/SHAKEN support has been added to Asterisk. Configuration is done in
stir_shaken.conf. There is a sample configuration file to help you get
started (asterisk/configs/samples/stir_shaken.conf.sample). Once that's
set up, you can enable STIR/SHAKEN on any endpoint by setting stir_shaken
to yes on the endpoint configuration object. This will add an Identity
header on outgoing INVITEs, and check for an Identity header on incoming
INVITEs. This option has been added to Alembic as well.
The information received on an incoming INVITE can be checked using the
STIR_SHAKEN dialplan function. There are two variations:
STIR_SHAKEN(count)
STIR_SHAKEN(0, verify_result)
The first variation will tell you how many STIR/SHAKEN results are on the
channel. The second fetches information for a specific result. The first
parameter is the index, followed by what information you want to retrieve.
The available options are 'verify_result', 'identity', and 'attestation'.
app_chanisavail
------------------
* The ChanIsAvail application now tolerates empty positions in the supplied
device list. Dialplan can now be simplified by not having to check for
empty positions in the device list.
app_confbridge
------------------
* A new bridge profile option, maximum_sample_rate, has been added which sets
a maximum sample rate that the bridge will be mixed at. This allows the bridge
to move below the maximum sample rate as needed but caps it at the maximum.
* A new option, "text_messaging", has been added to the user profile
which allows control over whether text messaging is enabled or
disabled for a user. If enabled (the default) text messages
will be sent to the user. If disabled no text messages will be
sent to the user.
app_dial
------------------
* The Dial application now tolerates empty positions in the supplied
destination list. Dialplan can now be simplified by not having to check
for empty positions in the destination list. If there are no endpoints to
dial then DIALSTATUS is set to CHANUNAVAIL.
app_mixmonitor
------------------
* An option 'S' has been added to MixMonitor. If used in combination with
the r() and/or t() options, if a frame is available to write to one of
those files but not the other, a frame of silence if written to the file
that does not have an audio frame. This should prevent the two files
from "drifting" when mixed after the fact.
* If the 'filename' argument to MixMonitor() ended with '.wav49,'
Asterisk would silently convert the extension to '.WAV' when opening
the file for writing. This caused the MIXMONITOR_FILENAME variable to
reference the wrong file. The MIXMONITOR_FILENAME variable will now
reflect the name of the file that Asterisk actually used instead of
the filename that was passed to the application.
app_page
------------------
* The Page application now tolerates empty positions in the supplied
destination list. Dialplan can now be simplified by not having to check
for empty positions in the destination list.
app_voicemail
------------------
* A feature was added in Asterisk 13.27.0 and 16.4.0 that removed lock files from
the Asterisk voicemail directory on startup. Some users that store their
voicemails on network storage devices experienced slow startup times due to the
relative expense of traversing the voicemail directory structure looking for
orphaned lock files. This feature has now been removed.
Users who require the lock files to be removed at startup should modify their
startup scripts to do so before starting the asterisk process.
chan_pjsip
------------------
* A new dialplan function, PJSIP_MOH_PASSTHROUGH, has been added to chan_pjsip. This
allows the behaviour of the moh_passthrough endpoint option to be read or changed
in the dialplan. This allows control on a per-call basis.
chan_rtp
------------------
* The UnicastRTP channel driver provided by chan_rtp now accepts
"<hostname>:<port>" as an alternative to "<ip_address>:<port>" in the destination.
The first AAAA (preferred) or A record resolved will be used as the destination.
The lookup is synchronous so beware of possible dialplan delays if you specify a
hostname.
func_curl
------------------
* A new parameter, httpheader, has been added to CURLOPT function. This parameter
allows to set custom http headers for subsequent calls off CURL function.
Any setting of headers will replace the default curl headers
(e.g. "Content-type: application/x-www-form-urlencoded")