cel: add publish user event helper

Add a wrapper function around ast_cel_publish_event that
packs event and extras into a blob before publishing

Resolves:#330
This commit is contained in:
Mike Bradeen 2023-09-14 11:00:19 -06:00
parent 3b027d1e47
commit 4592f97c36
2 changed files with 31 additions and 0 deletions

View File

@ -195,6 +195,22 @@ void ast_cel_publish_event(struct ast_channel *chan,
enum ast_cel_event_type event_type,
struct ast_json *blob);
/*!
* \brief Publish a CEL user event
* \since 18
*
* \note
* This serves as a wrapper function around ast_cel_publish_event() to help pack the
* extra details before publishing.
*
* \param chan This is the primary channel associated with this channel event.
* \param event This is the user event being reported.
* \param extra This contains any extra parameters that need to be conveyed for this event.
*/
void ast_cel_publish_user_event(struct ast_channel *chan,
const char *event,
const char *extra);
/*!
* \brief Get the CEL topic
*

View File

@ -1689,6 +1689,21 @@ static int reload_module(void)
return 0;
}
void ast_cel_publish_user_event(struct ast_channel *chan,
const char *event,
const char *extra)
{
RAII_VAR(struct ast_json *, blob, NULL, ast_json_unref);
blob = ast_json_pack("{s: s, s: {s: s}}",
"event", event,
"extra", "extra", S_OR(extra, ""));
if (!blob) {
return;
}
ast_cel_publish_event(chan, AST_CEL_USER_DEFINED, blob);
}
void ast_cel_publish_event(struct ast_channel *chan,
enum ast_cel_event_type event_type,
struct ast_json *blob)