Requesting the Oracle Radio WebSocket Talk Floor

Send a REQUEST_TALK message to request a talk token for transmitting on a Radio channel.

Permissions and Prerequisites

The following permissions and prerequisites apply to this operation.

RequirementValue
AuthenticationComplete the supported authentication path for the client before sending this operation. See authentication.
Radio permissionradio.talk.request
Channel accessThe user must have talk access to the requested channel. A request can be denied by the channel access control list.
Session stateThe WebSocket connection must be open. Only one talk token can control the talk floor for a channel at a time.

Request

Send the REQUEST_TALK message as a JSON text message.

NameData typeRequiredDefaultConstraintsDescription
typestringYesNoneMust be REQUEST_TALK.Identifies the talk-floor request.
channelstringNodefaultChannel name.Channel for which to request the talk floor.
userstringNoNoneDisplay name.Display name supplied with the request.
priorityintegerNo0From 0 through 1000. Values over 100 require radio.talk.priority.high; without that permission, the effective priority is limited to 100.Request priority. A higher priority can preempt a lower priority.
Note

First send SUBSCRIBE. In the SUBSCRIBED response, confirm that the target channel's result has subscribed set to true. If the service returns SUBSCRIBE_DENIED, or the target channel's result has denied set to true, resolve the denial and subscribe again before sending REQUEST_TALK.
Note

The current WebSocket talk-token lifetime is 30 seconds; REQUEST_TALK doesn't accept a requested duration. Use the expiresAt value returned with GRANTED to track token validity. Stop transmitting when the service sends TOKEN_EXPIRED.
{
  "type": "REQUEST_TALK",
  "channel": "operations",
  "user": "dispatcher1",
  "priority": 50
}

Responses

The following table lists the messages the client can receive and explains their purpose.

Message typeKindDescription
GRANTEDDirect response or queued grantReturns a talk token. A later grant for a queued request has fromQueue set to true.
DENIEDDirect responseReports that the channel is busy or the request was otherwise denied.
QUEUEDDirect responseReports the request's position behind the current token holder.
TALK_DENIEDDenialReports a Radio permission or channel access denial, with a reason and code.
CHANNEL_BUSYAsynchronous eventNotifies channel subscribers that a user holds the talk floor.
INTERRUPTEDAsynchronous eventNotifies the token holder that a higher-priority user took the talk floor. Stop transmitting.
TOKEN_EXPIREDAsynchronous eventNotifies the token holder that the talk token expired. Stop transmitting and request another token if needed.
ERRORErrorIndicates that the request is invalid or couldn't be processed.

GRANTED Response

The following table describes the response properties, their data types, and whether they are required.

NameData typeRequiredDescription
typestringYesResponse type. The value is GRANTED.
tokenstringYesUUID talk token to use for the transmission.
channelstringYesChannel controlled by the talk token.
userDisplayNamestringNoDisplay name of the token holder.
priorityWarningstringNoWarning about the requested priority.
fromQueuebooleanNoWhether the server granted a previously queued request.
expiresAtstringYesTalk-token expiration date and time in ISO 8601 format.
{
  "type": "GRANTED",
  "token": "550e8400-e29b-41d4-a716-446655440000",
  "channel": "operations",
  "userDisplayName": "Dispatcher One",
  "expiresAt": "2024-01-15T10:35:00Z"
}