Media over Websocket Channel Driver

* Created chan_websocket which can exchange media over both inbound and
outbound websockets which the driver will frame and time.
See http://s.asterisk.net/mow for more information.

* res_http_websocket: Made defines for max message size public and converted
a few nuisance verbose messages to debugs.

* main/channel.c: Changed an obsolete nuisance error to a debug.

* ARI channels: Updated externalMedia to include chan_websocket as a supported
transport.

UserNote: A new channel driver "chan_websocket" is now available. It can
exchange media over both inbound and outbound websockets and will both frame
and re-time the media it receives.
See http://s.asterisk.net/mow for more information.

UserNote: The ARI channels/externalMedia API now includes support for the
WebSocket transport provided by chan_websocket.
This commit is contained in:
George Joseph
2025-04-28 10:39:50 -06:00
parent 838541d767
commit aa14410651
8 changed files with 1672 additions and 54 deletions

View File

@@ -834,13 +834,13 @@ struct ast_ari_channels_external_media_args {
const char *app;
/*! The "variables" key in the body object holds variable key/value pairs to set on the channel on creation. Other keys in the body object are interpreted as query parameters. Ex. { "endpoint": "SIP/Alice", "variables": { "CALLERID(name)": "Alice" } } */
struct ast_json *variables;
/*! Hostname/ip:port of external host */
/*! Hostname/ip:port or websocket_client connection ID of external host. May be empty for a websocket server connection. */
const char *external_host;
/*! Payload encapsulation protocol */
/*! Payload encapsulation protocol. Must be 'none' for the websocket transport. */
const char *encapsulation;
/*! Transport protocol */
const char *transport;
/*! Connection type (client/server) */
/*! Connection type (client/server). 'server' is only valid for the websocket transport. */
const char *connection_type;
/*! Format to encode audio in */
const char *format;
@@ -863,7 +863,7 @@ int ast_ari_channels_external_media_parse_body(
/*!
* \brief Start an External Media session.
*
* Create a channel to an External Media source/sink.
* Create a channel to an External Media source/sink. The combination of transport and encapsulation will select one of chan_rtp(udp/rtp), chan_audiosocket(tcp/audiosocket) or chan_websocket(websocket/none) channel drivers.
*
* \param headers HTTP headers
* \param args Swagger parameters