diff --git a/CHANGES b/CHANGES index f19704d9013bc882564f0c13b46966fad22a3ed8..da516efdc2a63719f10fc333ed7d732df5977ab0 100644 --- a/CHANGES +++ b/CHANGES @@ -31,6 +31,21 @@ ConfBridge - record_command: a command to execute when recording is finished Note that these options may also be with the CONFBRIDGE function. +ControlPlayback +------------------ + * Remote files can now be retrieved and played back. See the Playback + dialplan application for more details. + +Playback +------------------ + * Remote files can now be retrieved and played back via the Playback and other + media playback dialplan applications. This is done by directly providing + the URL to play to the dialplan application: + same => n,Playback(http://1.1.1.1/howler-monkeys-fl.wav) + Note that unlike 'normal' media files, the entire URI to the file must be + provided, including the file extension. Currently, on HTTP and HTTPS URI + schemes are supported. + SMS ------------------ * Added the 'n' option, which prevents the SMS from being written to the log @@ -132,6 +147,17 @@ Core of '[json]' can be set, e.g., full => [json]debug,verbose,notice,warning,error + * The core now supports a 'media cache', which stores temporary media files + retrieved from external sources. CLI commands have been added to manipulate + and display the cached files, including: + - 'media cache show <all>' - show all cached media files, or details about + one particular cached media file + - 'media cache refresh <item>' - force a refresh of a particular media file + in the cache + - 'media cache delete <item>' - remove an item from the cache + - 'media cache create <uri>' - retrieve a URI and store it in the cache + + Functions ------------------ diff --git a/main/file.c b/main/file.c index f0f826a4ff905b1b090cdf31dfd5f48762c38c5b..654937a5824bcd7bb7ea972835d6bad5541fb418 100644 --- a/main/file.c +++ b/main/file.c @@ -54,6 +54,7 @@ ASTERISK_REGISTER_FILE() #include "asterisk/stasis.h" #include "asterisk/json.h" #include "asterisk/stasis_system.h" +#include "asterisk/media_cache.h" /*! \brief * The following variable controls the layout of localized sound files. @@ -644,6 +645,10 @@ static int fileexists_test(const char *filename, const char *fmt, const char *la return 0; } + if (!ast_media_cache_retrieve(filename, NULL, buf, buflen)) { + return filehelper(buf, result_cap, NULL, ACTION_EXISTS); + } + if (ast_language_is_prefix && !is_absolute_path(filename)) { /* new layout */ if (lang) { snprintf(buf, buflen, "%s/%s", lang, filename);