mirror of
https://github.com/asterisk/asterisk.git
synced 2025-10-19 03:07:59 +00:00
This patch implements the REST API's for POST /channels/{channelId}/play
and GET /playback/{playbackId}. This allows an external application to initiate playback of a sound on a channel while the channel is in the Stasis application. /play commands are issued asynchronously, and return immediately with the URL of the associated /playback resource. Playback commands queue up, playing in succession. The /playback resource shows the state of a playback operation as enqueued, playing or complete. (Although the operation will only be in the 'complete' state for a very short time, since it is almost immediately freed up). (closes issue ASTERISK-21283) (closes issue ASTERISK-21586) Review: https://reviewboard.asterisk.org/r/2531/ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@389587 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -414,15 +414,17 @@ int ast_channel_data_cmp_structure(const struct ast_data_search *tree,
|
||||
|
||||
/* ACCESSORS */
|
||||
|
||||
#define DEFINE_STRINGFIELD_SETTERS_FOR(field) \
|
||||
#define DEFINE_STRINGFIELD_SETTERS_FOR(field, publish) \
|
||||
void ast_channel_##field##_set(struct ast_channel *chan, const char *value) \
|
||||
{ \
|
||||
ast_string_field_set(chan, field, value); \
|
||||
if (publish) ast_channel_publish_snapshot(chan); \
|
||||
} \
|
||||
\
|
||||
void ast_channel_##field##_build_va(struct ast_channel *chan, const char *fmt, va_list ap) \
|
||||
{ \
|
||||
ast_string_field_build_va(chan, field, fmt, ap); \
|
||||
if (publish) ast_channel_publish_snapshot(chan); \
|
||||
} \
|
||||
void ast_channel_##field##_build(struct ast_channel *chan, const char *fmt, ...) \
|
||||
{ \
|
||||
@@ -430,19 +432,20 @@ void ast_channel_##field##_build(struct ast_channel *chan, const char *fmt, ...)
|
||||
va_start(ap, fmt); \
|
||||
ast_channel_##field##_build_va(chan, fmt, ap); \
|
||||
va_end(ap); \
|
||||
if (publish) ast_channel_publish_snapshot(chan); \
|
||||
}
|
||||
|
||||
DEFINE_STRINGFIELD_SETTERS_FOR(name);
|
||||
DEFINE_STRINGFIELD_SETTERS_FOR(language);
|
||||
DEFINE_STRINGFIELD_SETTERS_FOR(musicclass);
|
||||
DEFINE_STRINGFIELD_SETTERS_FOR(accountcode);
|
||||
DEFINE_STRINGFIELD_SETTERS_FOR(peeraccount);
|
||||
DEFINE_STRINGFIELD_SETTERS_FOR(userfield);
|
||||
DEFINE_STRINGFIELD_SETTERS_FOR(call_forward);
|
||||
DEFINE_STRINGFIELD_SETTERS_FOR(uniqueid);
|
||||
DEFINE_STRINGFIELD_SETTERS_FOR(parkinglot);
|
||||
DEFINE_STRINGFIELD_SETTERS_FOR(hangupsource);
|
||||
DEFINE_STRINGFIELD_SETTERS_FOR(dialcontext);
|
||||
DEFINE_STRINGFIELD_SETTERS_FOR(name, 0);
|
||||
DEFINE_STRINGFIELD_SETTERS_FOR(language, 1);
|
||||
DEFINE_STRINGFIELD_SETTERS_FOR(musicclass, 0);
|
||||
DEFINE_STRINGFIELD_SETTERS_FOR(accountcode, 0);
|
||||
DEFINE_STRINGFIELD_SETTERS_FOR(peeraccount, 0);
|
||||
DEFINE_STRINGFIELD_SETTERS_FOR(userfield, 0);
|
||||
DEFINE_STRINGFIELD_SETTERS_FOR(call_forward, 0);
|
||||
DEFINE_STRINGFIELD_SETTERS_FOR(uniqueid, 0);
|
||||
DEFINE_STRINGFIELD_SETTERS_FOR(parkinglot, 0);
|
||||
DEFINE_STRINGFIELD_SETTERS_FOR(hangupsource, 0);
|
||||
DEFINE_STRINGFIELD_SETTERS_FOR(dialcontext, 0);
|
||||
|
||||
#define DEFINE_STRINGFIELD_GETTER_FOR(field) const char *ast_channel_##field(const struct ast_channel *chan) \
|
||||
{ \
|
||||
|
Reference in New Issue
Block a user