include $(TOPDIR)/rules.mk
PKG_NAME:=asterisk
-PKG_VERSION:=18.5.1
-PKG_RELEASE:=2
+PKG_VERSION:=18.11.2
+PKG_RELEASE:=1
PKG_SOURCE:=asterisk-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://downloads.asterisk.org/pub/telephony/asterisk/releases
-PKG_HASH:=e7d78716a0deeadf24b7d537cd24c11c2d9a096265eefc9470565c4da0fc54c7
+PKG_HASH:=b456d19610e53789446e097bb9773a82a04088922de0cfaff2b818326b67296b
PKG_BUILD_DEPENDS:=libxml2/host
app-directed-pickup \
app-directory \
app-disa \
+ app-dtmfstore \
app-dumpchan \
app-exec \
app-externalivr \
app-ices \
app-image \
app-ivrdemo \
+ app-mf \
app-milliwatt \
app-minivm \
app-mixmonitor \
app-read \
app-readexten \
app-record \
+ app-reload \
app-saycounted \
app-sayunixtime \
app-senddtmf \
app-sendtext \
+ app-sf \
app-skel \
app-sms \
app-softhangup \
app-url \
app-userevent \
app-verbose \
+ app-waitforcond \
app-voicemail \
app-voicemail-imap \
app-voicemail-odbc \
func-enum \
func-env \
func-extstate \
+ func-frame-drop \
func-frame-trace \
func-global \
func-groupcount \
func-holdintercept \
func-iconv \
func-jitterbuffer \
+ func-json \
func-lock \
func-math \
func-md5 \
func-presencestate \
func-rand \
func-realtime \
+ func-sayfiles \
+ func-scramble \
func-sha1 \
func-shell \
func-sorcery \
res-stun-monitor \
res-timing-dahdi \
res-timing-pthread \
+ res-tonedetect \
res-xmpp
UTILS_AVAILABLE:= \
--without-pjproject-bundled \
--with-libedit="$(STAGING_DIR)/usr" \
--with-libxml2 \
+ --without-libxslt \
$(if $(CONFIG_PACKAGE_$(PKG_NAME)-res-snmp),--with-netsnmp="$(STAGING_DIR)/usr",--without-netsnmp) \
--without-newt \
--without-osptk \
$(eval $(call BuildAsteriskModule,app-directed-pickup,Directed call pickup,Directed call pickup application.,,,app_directed_pickup,,))
$(eval $(call BuildAsteriskModule,app-directory,Extension directory,Extension directory.,,,app_directory,,))
$(eval $(call BuildAsteriskModule,app-disa,Direct Inward System Access,Direct Inward System Access application.,,,app_disa,,))
+$(eval $(call BuildAsteriskModule,app-dtmfstore,DTMF storage,Technology independent async DTMF storage.,,,app_dtmfstore,,))
$(eval $(call BuildAsteriskModule,app-dumpchan,Dump info about channel,Dump info about the calling channel.,,,app_dumpchan,,))
$(eval $(call BuildAsteriskModule,app-exec,Exec application,Executes dialplan applications.,,,app_exec,,))
$(eval $(call BuildAsteriskModule,app-externalivr,External IVR interface,External IVR interface application.,,,app_externalivr,,))
$(eval $(call BuildAsteriskModule,app-festival,Simple festival interface,Simple Festival interface.,,festival.conf,app_festival,,))
$(eval $(call BuildAsteriskModule,app-flash,Flash channel,Flash channel application.,+$(PKG_NAME)-chan-dahdi,,app_flash,,))
$(eval $(call BuildAsteriskModule,app-followme,Find-me/follow-me,Find-Me/Follow-Me application.,,followme.conf,app_followme,,))
-$(eval $(call BuildAsteriskModule,app-getcpeid,Get ADSI CPE ID,Get ADSI CPE ID.,,,app_getcpeid,,))
+$(eval $(call BuildAsteriskModule,app-getcpeid,Get ADSI CPE ID,Get ADSI CPE ID.,+asterisk-res-adsi,,app_getcpeid,,))
$(eval $(call BuildAsteriskModule,app-ices,Encode and stream,Encode and stream via Icecast and IceS.,,,app_ices,,))
$(eval $(call BuildAsteriskModule,app-image,Image transmission,Image transmission application.,,,app_image,,))
$(eval $(call BuildAsteriskModule,app-ivrdemo,IVR demo,IVR demo application.,,,app_ivrdemo,,))
+$(eval $(call BuildAsteriskModule,app-mf,MF digits,Send MF digits Application.,,,app_mf,,))
$(eval $(call BuildAsteriskModule,app-milliwatt,Digital milliwatt [mu-law] test app,Digital milliwatt test application.,,,app_milliwatt,,))
$(eval $(call BuildAsteriskModule,app-minivm,Minimal voicemail system,A minimal voicemail e-mail system.,,extensions_minivm.conf minivm.conf,app_minivm,,))
$(eval $(call BuildAsteriskModule,app-mixmonitor,Record a call and mix the audio,Mixed audio monitoring application.,,,app_mixmonitor,,))
$(eval $(call BuildAsteriskModule,app-read,Variable read,Read variable application.,,,app_read,,))
$(eval $(call BuildAsteriskModule,app-readexten,Extension to variable,Read and evaluate extension validity.,,,app_readexten,,))
$(eval $(call BuildAsteriskModule,app-record,Record sound file,Trivial record application.,,,app_record,,))
+$(eval $(call BuildAsteriskModule,app-reload,Reload,Reload module[s].,,,app_reload,,))
$(eval $(call BuildAsteriskModule,app-saycounted,Decline words,Decline words according to channel language.,,,app_saycounted,,))
$(eval $(call BuildAsteriskModule,app-sayunixtime,Say Unix time,Say time.,,,app_sayunixtime,,))
$(eval $(call BuildAsteriskModule,app-senddtmf,Send DTMF digits,Send DTMF digits application.,,,app_senddtmf,,))
$(eval $(call BuildAsteriskModule,app-sendtext,Send text,Send text applications.,,,app_sendtext,,))
+$(eval $(call BuildAsteriskModule,app-sf,SF Sender and Receiver Applications,SF Sender and Receiver Applications.,,,app_sf,,))
$(eval $(call BuildAsteriskModule,app-skel,Skeleton [sample],Skeleton application.,,app_skel.conf,app_skel,,))
$(eval $(call BuildAsteriskModule,app-sms,SMS,SMS/PSTN handler.,,,app_sms,,))
$(eval $(call BuildAsteriskModule,app-softhangup,Hang up requested channel,Hangs up the requested channel.,,,app_softhangup,,))
$(eval $(call BuildAsteriskModule,app-url,Send URL,Send URL applications.,,,app_url,,))
$(eval $(call BuildAsteriskModule,app-userevent,Custom user event,Custom user event application.,,,app_userevent,,))
$(eval $(call BuildAsteriskModule,app-verbose,Verbose logging,Send verbose output.,,,app_verbose,,))
+$(eval $(call BuildAsteriskModule,app-waitforcond,Wait for condition,Wait until condition is true.,,,app_waitforcond,,))
$(eval $(call BuildAsteriskModule,app-voicemail,Voicemail,Voicemail module.,,voicemail.conf,app_voicemail,vm-*,))
$(eval $(call BuildAsteriskModule,app-voicemail-imap,Voicemail IMAP,Voicemail module.,+uw-imap,,app_voicemail_imap,,))
$(eval $(call BuildAsteriskModule,app-voicemail-odbc,Voicemail ODBC,Voicemail module.,+unixodbc,,app_voicemail_odbc,,))
$(eval $(call BuildAsteriskModule,func-enum,ENUM,ENUM related dialplan functions.,,enum.conf,func_enum,,))
$(eval $(call BuildAsteriskModule,func-env,Environment functions,Environment/filesystem dialplan functions.,,,func_env,,))
$(eval $(call BuildAsteriskModule,func-extstate,Hinted extension state,Gets the state of an extension in the dialplan.,,,func_extstate,,))
+$(eval $(call BuildAsteriskModule,func-frame-drop,Frame drop,Function to drop frames on a channel.,,,func_frame_drop,,))
$(eval $(call BuildAsteriskModule,func-frame-trace,Frame trace for internal ast_frame debugging,Frame trace for internal ast_frame debugging.,,,func_frame_trace,,))
$(eval $(call BuildAsteriskModule,func-global,Global variable,Variable dialplan functions.,,,func_global,,))
$(eval $(call BuildAsteriskModule,func-groupcount,Group count,Channel group dialplan functions.,,,func_groupcount,,))
$(eval $(call BuildAsteriskModule,func-holdintercept,Hold interception dialplan function,Hold interception dialplan function.,,,func_holdintercept,,))
$(eval $(call BuildAsteriskModule,func-iconv,Charset conversion,Charset conversions.,,,func_iconv,,,$(ICONV_DEPENDS)))
$(eval $(call BuildAsteriskModule,func-jitterbuffer,Jitter buffer for read side of channel,Jitter buffer for read side of channel.,,,func_jitterbuffer,,))
+$(eval $(call BuildAsteriskModule,func-json,JSON decoding function,JSON decoding function.,,,func_json,,))
$(eval $(call BuildAsteriskModule,func-lock,Dialplan mutexes,Dialplan mutexes.,,,func_lock,,))
$(eval $(call BuildAsteriskModule,func-math,Math functions,Mathematical dialplan function.,,,func_math,,))
$(eval $(call BuildAsteriskModule,func-md5,MD5 digest dialplan functions,MD5 digest dialplan functions.,,,func_md5,,))
$(eval $(call BuildAsteriskModule,func-presencestate,Hinted presence state,Gets or sets a presence state in the dialplan.,,,func_presencestate,,))
$(eval $(call BuildAsteriskModule,func-rand,RAND dialplan function,Random number dialplan function.,,,func_rand,,))
$(eval $(call BuildAsteriskModule,func-realtime,REALTIME dialplan function,Read/write/store/destroy values from a realtime repository.,,,func_realtime,,))
+$(eval $(call BuildAsteriskModule,func-sayfiles,Say files,Say application files.,,,func_sayfiles,,))
+$(eval $(call BuildAsteriskModule,func-scramble,Scramble,Frequency inverting voice scrambler.,,,func_scramble,,))
$(eval $(call BuildAsteriskModule,func-sha1,SHA-1 computation dialplan function,SHA-1 computation dialplan function.,,,func_sha1,,))
$(eval $(call BuildAsteriskModule,func-shell,Shell,Collects the output generated by a command executed by the system shell.,,,func_shell,,))
$(eval $(call BuildAsteriskModule,func-sorcery,Get a field from a sorcery object,Get a field from a sorcery object.,,,func_sorcery,,))
$(eval $(call BuildAsteriskModule,res-stun-monitor,STUN monitoring,STUN network monitor.,,res_stun_monitor.conf,res_stun_monitor,,))
$(eval $(call BuildAsteriskModule,res-timing-dahdi,DAHDI Timing Interface,DAHDI timing interface.,+$(PKG_NAME)-chan-dahdi,,res_timing_dahdi,,))
$(eval $(call BuildAsteriskModule,res-timing-pthread,pthread Timing Interface,pthread timing interface.,,,res_timing_pthread,,))
+$(eval $(call BuildAsteriskModule,res-tonedetect,Tone detection,Tone detection module.,,,res_tonedetect,,))
$(eval $(call BuildAsteriskModule,res-xmpp,XMPP client and component module,Asterisk XMPP interface.,+libiksemel +libopenssl,xmpp.conf,res_xmpp,,))
################################
+++ /dev/null
-From 1e5a2cfe3037823b17dd4ac47b071f02d6f9825f Mon Sep 17 00:00:00 2001
-From: Naveen Albert <mail@interlinked.x10host.com>
-Date: Fri, 21 May 2021 20:08:58 -0400
-Subject: [PATCH] app_dial: Expanded A option to add caller announcement
-
-Hitherto, the A option has made it possible to play
-audio upon answer to the called party only. This option
-is expanded to allow for playback of an audio file to
-the caller instead of or in addition to the audio
-played to the answerer.
-
-ASTERISK-29442
-
-Change-Id: If6eed3ff5c341dc8c588c8210987f2571e891e5e
----
- apps/app_dial.c | 79 +++++++++++++++----
- doc/CHANGES-staging/app_dial_announcement.txt | 6 ++
- 2 files changed, 68 insertions(+), 17 deletions(-)
- create mode 100644 doc/CHANGES-staging/app_dial_announcement.txt
-
---- a/apps/app_dial.c
-+++ b/apps/app_dial.c
-@@ -93,11 +93,17 @@
- </parameter>
- <parameter name="options" required="false">
- <optionlist>
-- <option name="A">
-- <argument name="x" required="true">
-+ <option name="A" argsep=":">
-+ <argument name="x">
- <para>The file to play to the called party</para>
- </argument>
-- <para>Play an announcement to the called party, where <replaceable>x</replaceable> is the prompt to be played</para>
-+ <argument name="y">
-+ <para>The file to play to the calling party</para>
-+ </argument>
-+ <para>Play an announcement to the called and/or calling parties, where <replaceable>x</replaceable>
-+ is the prompt to be played to the called party and <replaceable>y</replaceable> is the prompt
-+ to be played to the caller. The files may be different and will be played to each party
-+ simultaneously.</para>
- </option>
- <option name="a">
- <para>Immediately answer the calling channel when the called channel answers in
-@@ -2941,33 +2947,71 @@ static int dial_exec_full(struct ast_cha
- int digit = 0;
- struct ast_channel *chans[2];
- struct ast_channel *active_chan;
-+ char *calledfile = NULL, *callerfile = NULL;
-+ int calledstream = 0, callerstream = 0;
-
- chans[0] = chan;
- chans[1] = peer;
-
-- /* we need to stream the announcement to the called party when the OPT_ARG_ANNOUNCE (-A) is setted */
--
-- /* stream the file */
-- res = ast_streamfile(peer, opt_args[OPT_ARG_ANNOUNCE], ast_channel_language(peer));
-- if (res) {
-- res = 0;
-- ast_log(LOG_ERROR, "error streaming file '%s' to callee\n", opt_args[OPT_ARG_ANNOUNCE]);
-+ /* we need to stream the announcement(s) when the OPT_ARG_ANNOUNCE (-A) is set */
-+ callerfile = opt_args[OPT_ARG_ANNOUNCE];
-+ calledfile = strsep(&callerfile, ":");
-+
-+ /* stream the file(s) */
-+ if (!ast_strlen_zero(calledfile)) {
-+ res = ast_streamfile(peer, calledfile, ast_channel_language(peer));
-+ if (res) {
-+ res = 0;
-+ ast_log(LOG_ERROR, "error streaming file '%s' to callee\n", calledfile);
-+ } else {
-+ calledstream = 1;
-+ }
-+ }
-+ if (!ast_strlen_zero(callerfile)) {
-+ res = ast_streamfile(chan, callerfile, ast_channel_language(chan));
-+ if (res) {
-+ res = 0;
-+ ast_log(LOG_ERROR, "error streaming file '%s' to caller\n", callerfile);
-+ } else {
-+ callerstream = 1;
-+ }
- }
-
-+ /* can't use ast_waitstream, because we're streaming two files at once, and can't block
-+ We'll need to handle both channels at once. */
-+
- ast_channel_set_flag(peer, AST_FLAG_END_DTMF_ONLY);
-- while (ast_channel_stream(peer)) {
-- int ms;
-+ while (ast_channel_stream(peer) || ast_channel_stream(chan)) {
-+ int mspeer, mschan;
-
-- ms = ast_sched_wait(ast_channel_sched(peer));
-+ mspeer = ast_sched_wait(ast_channel_sched(peer));
-+ mschan = ast_sched_wait(ast_channel_sched(chan));
-
-- if (ms < 0 && !ast_channel_timingfunc(peer)) {
-- ast_stopstream(peer);
-+ if (calledstream) {
-+ if (mspeer < 0 && !ast_channel_timingfunc(peer)) {
-+ ast_stopstream(peer);
-+ calledstream = 0;
-+ }
-+ }
-+ if (callerstream) {
-+ if (mschan < 0 && !ast_channel_timingfunc(chan)) {
-+ ast_stopstream(chan);
-+ callerstream = 0;
-+ }
-+ }
-+
-+ if (!calledstream && !callerstream) {
- break;
- }
-- if (ms < 0)
-- ms = 1000;
-
-- active_chan = ast_waitfor_n(chans, 2, &ms);
-+ if (mspeer < 0)
-+ mspeer = 1000;
-+
-+ if (mschan < 0)
-+ mschan = 1000;
-+
-+ /* wait for the lowest maximum of the two */
-+ active_chan = ast_waitfor_n(chans, 2, (mspeer > mschan ? &mschan : &mspeer));
- if (active_chan) {
- struct ast_channel *other_chan;
- struct ast_frame *fr = ast_read(active_chan);
-@@ -3017,6 +3061,7 @@ static int dial_exec_full(struct ast_cha
- ast_frfree(fr);
- }
- ast_sched_runq(ast_channel_sched(peer));
-+ ast_sched_runq(ast_channel_sched(chan));
- }
- ast_channel_clear_flag(peer, AST_FLAG_END_DTMF_ONLY);
- }
---- /dev/null
-+++ b/doc/CHANGES-staging/app_dial_announcement.txt
-@@ -0,0 +1,6 @@
-+Subject: app_dial announcement option
-+
-+The A option for Dial now supports
-+playing audio to the caller as well
-+as the called party.
-+