bigbluebutton-Github/bbb-graphql-server/metadata/actions.graphql
Arthur B. Grossi d2132484b4
feat(plugins): server command send chat message (#20781)
* feat(plugins): add chat server command and chat message type `plugin`

This commit adds the required code for the plugins SDK's chat server
command `CHAT_SEND_MESSAGE`, which allows plugins to send chat
messages. Messages sent by plugins are identified by the message
type `plugin` and belong to the user (senderID) of the client that
sent it. Plugin messages are not displayed by the client itself because
these messages are meant to be custom-rendered by plugins, typically by
the plugin that sent them.

* feat(plugins): add message metadata

Plugin name and plugin custom metadata are stored in message's metadata,
so plugins need it to identify messages when applying custom render.

* feat(chat): removes specific code for plugin messages

Removes specific akka messages, handlers and routes for plugin messages
and adds metadata parameter in `GroupChatMsgFromUser`.

* feat(chat): adds option parameter to mutation

Adds optional parameter `metadata` to the already existing mutation
`chatSendMessage` and use this mutation for plugin chat server command.

* feat(chat): rendering of plugin messages

This commit implements the correct rendering of plugin messages, which
is:
- Plugin messages with metadata attribute `custom` set to true are not
  rendered by the client, and are meant to be custom-rendered by
  plugins.
- Plugin messages with metadata attribute `custom` set to false are
  rendered by the client as being sent by the user that triggered it.

* Update sdk version to v0.0.56

* update sdk version to v0.0.57
2024-08-07 15:59:30 -04:00

636 lines
9.3 KiB
GraphQL

type Mutation {
allUsersClearEmoji: Boolean
}
type Mutation {
allUsersClearReaction: Boolean
}
type Mutation {
breakoutRoomCreate(
record: Boolean!
captureNotes: Boolean!
captureSlides: Boolean!
durationInMinutes: Int!
sendInviteToModerators: Boolean!
rooms: [BreakoutRoom]!
): Boolean
}
type Mutation {
breakoutRoomEndAll: Boolean
}
type Mutation {
breakoutRoomMoveUser(
userId: String!
fromBreakoutRoomId: String!
toBreakoutRoomId: String!
): Boolean
}
type Mutation {
breakoutRoomRequestJoinUrl(
breakoutRoomId: String!
): Boolean
}
type Mutation {
breakoutRoomSendMessageToAll(
message: String!
): Boolean
}
type Mutation {
breakoutRoomSetInviteDismissed: Boolean
}
type Mutation {
breakoutRoomSetTime(
timeInMinutes: Int!
): Boolean
}
type Mutation {
cameraBroadcastStart(
stream: String!
): Boolean
}
type Mutation {
cameraBroadcastStop(
stream: String!
): Boolean
}
type Mutation {
captionAddLocale(
locale: String!
): Boolean
}
type Mutation {
captionSubmitText(
transcriptId: String!
start: Int!
end: Int!
text: String!
transcript: String!
locale: String!
isFinal: Boolean!
): Boolean
}
type Mutation {
captionSubmitTranscript(
transcriptId: String!
transcript: String!
locale: String!
): Boolean
}
type Mutation {
chatCreateWithUser(
userId: String!
): Boolean
}
type Mutation {
chatPublicClearHistory: Boolean
}
type Mutation {
chatRemove(
chatId: String!
): Boolean
}
type Mutation {
chatSendMessage(
chatId: String!
chatMessageInMarkdownFormat: String!
metadata: json
): Boolean
}
type Mutation {
chatSetLastSeen: Boolean
}
type Mutation {
chatSetTyping(
chatId: String
): Boolean
}
type Mutation {
chatSetVisible(
visible: Boolean!
): Boolean
}
type Mutation {
echoTestRunningAt: Boolean
}
type Mutation {
externalVideoStart(
externalVideoUrl: String!
): Boolean
}
type Mutation {
externalVideoStop: Boolean
}
type Mutation {
externalVideoUpdate(
status: String!
rate: Float!
time: Float!
state: Float!
): Boolean
}
type Mutation {
guestUsersSetLobbyMessage(
message: String!
): Boolean
}
type Mutation {
guestUsersSetLobbyMessagePrivate(
guestId: String!
message: String!
): Boolean
}
type Mutation {
guestUsersSetPolicy(
guestPolicy: String!
): Boolean
}
type Mutation {
guestUsersSubmitApprovalStatus(
guests: [GuestUserApprovalStatus]!
): Boolean
}
type Mutation {
meetingEnd: Boolean
}
type Mutation {
meetingLayoutSetProps(
layout: String!
syncWithPresenterLayout: Boolean!
presentationIsOpen: Boolean!
isResizing: Boolean!
cameraPosition: String
focusedCamera: String!
presentationVideoRate: Float!
): Boolean
}
type Mutation {
meetingLayoutSetSyncWithPresenterLayout(
syncWithPresenterLayout: Boolean!
): Boolean
}
type Mutation {
meetingLockSettingsSetProps(
disableCam: Boolean!
disableMic: Boolean!
disablePrivChat: Boolean!
disablePubChat: Boolean!
disableNotes: Boolean!
hideUserList: Boolean!
lockOnJoin: Boolean!
lockOnJoinConfigurable: Boolean!
hideViewersCursor: Boolean!
hideViewersAnnotation: Boolean!
): Boolean
}
type Mutation {
meetingRecordingSetStatus(
recording: Boolean!
): Boolean
}
type Mutation {
meetingSetMuted(
muted: Boolean!
exceptPresenter: Boolean
): Boolean
}
type Mutation {
meetingSetWebcamOnlyForModerator(
webcamsOnlyForModerator: Boolean!
): Boolean
}
type Mutation {
pluginDataChannelDeleteEntry(
pluginName: String!
channelName: String!
subChannelName: String!
entryId: String!
): Boolean
}
type Mutation {
pluginDataChannelPushEntry(
pluginName: String!
subChannelName: String!
channelName: String!
payloadJson: String!
toRoles: [String]!
toUserIds: [String]!
): Boolean
}
type Mutation {
pluginDataChannelReplaceEntry(
pluginName: String!
subChannelName: String!
channelName: String!
entryId: String!
payloadJson: String!
): Boolean
}
type Mutation {
pluginDataChannelReset(
pluginName: String!
channelName: String!
subChannelName: String!
): Boolean
}
type Mutation {
pluginLearningAnalyticsDashboardSendGenericData(
genericDataForLearningAnalyticsDashboard: json!
pluginName: String!
): Boolean
}
type Mutation {
pollCancel: Boolean
}
type Mutation {
pollCreate(
pollId: String!
pollType: String!
secretPoll: Boolean!
question: String!
isMultipleResponse: Boolean!
answers: [String]
): Boolean
}
type Mutation {
pollPublishResult(
pollId: String!
): Boolean
}
type Mutation {
pollSubmitUserTypedVote(
pollId: String!
answer: String!
): Boolean
}
type Mutation {
pollSubmitUserVote(
pollId: String!
answerIds: [Int]
): Boolean
}
type Mutation {
presAnnotationDelete(
pageId: String!
annotationsIds: [String]!
): Boolean
}
type Mutation {
presAnnotationDeleteAll(
pageId: String!
): Boolean
}
type Mutation {
presAnnotationSubmit(
pageId: String!
annotations: json!
): Boolean
}
type Mutation {
presentationExport(
presentationId: String!
fileStateType: String!
): Boolean
}
type Mutation {
presentationPublishCursor(
whiteboardId: String!
xPercent: Float!
yPercent: Float!
): Boolean
}
type Mutation {
presentationRemove(
presentationId: String!
): Boolean
}
type Mutation {
presentationRequestUploadToken(
podId: String!
filename: String!
uploadTemporaryId: String!
): Boolean
}
type Mutation {
presentationSetCurrent(
presentationId: String!
): Boolean
}
type Mutation {
presentationSetDownloadable(
presentationId: String!
downloadable: Boolean!
fileStateType: String!
): Boolean
}
type Mutation {
presentationSetPage(
presentationId: String!
pageId: String!
): Boolean
}
type Mutation {
presentationSetPageInfiniteWhiteboard(
infiniteWhiteboard: Boolean!
pageId: String!
): Boolean
}
type Mutation {
presentationSetRenderedInToast(
presentationId: String!
): Boolean
}
type Mutation {
presentationSetWriters(
pageId: String!
usersIds: [String]!
): Boolean
}
type Mutation {
presentationSetZoom(
presentationId: String!
pageId: String!
pageNum: Int!
xOffset: Float!
yOffset: Float!
widthRatio: Float!
heightRatio: Float!
): Boolean
}
type Mutation {
sharedNotesCreateSession(
sharedNotesExtId: String!
): Boolean
}
type Mutation {
sharedNotesSetPinned(
sharedNotesExtId: String!
pinned: Boolean!
): Boolean
}
type Mutation {
timerActivate(
stopwatch: Boolean!
running: Boolean!
time: Int!
track: String
): Boolean
}
type Mutation {
timerDeactivate: Boolean
}
type Mutation {
timerReset: Boolean
}
type Mutation {
timerSetSongTrack(
track: String!
): Boolean
}
type Mutation {
timerSetTime(
time: Int!
): Boolean
}
type Mutation {
timerStart: Boolean
}
type Mutation {
timerStop: Boolean
}
type Mutation {
timerSwitchMode(
stopwatch: Boolean!
): Boolean
}
type Mutation {
userEjectCameras(
userId: String!
): Boolean
}
type Mutation {
userEjectFromMeeting(
userId: String!
banUser: Boolean!
): Boolean
}
type Mutation {
userEjectFromVoice(
userId: String!
banUser: Boolean
): Boolean
}
type Mutation {
userJoinMeeting(
authToken: String!
clientType: String!
): Boolean
}
type Mutation {
userLeaveMeeting: Boolean
}
type Mutation {
userSendActivitySign: Boolean
}
type Mutation {
userSetAway(
away: Boolean!
): Boolean
}
type Mutation {
userSetCameraPinned(
userId: String!
pinned: Boolean!
): Boolean
}
type Mutation {
userSetCaptionLocale(
locale: String!
provider: String!
): Boolean
}
type Mutation {
userSetClientSettings(
userClientSettingsJson: json!
): Boolean
}
type Mutation {
userSetConnectionAlive(
networkRttInMs: Float!
): Boolean
}
type Mutation {
userSetEmojiStatus(
emoji: String!
): Boolean
}
type Mutation {
userSetExitReason(
exitReason: String!
): Boolean
}
type Mutation {
userSetLocked(
userId: String!
locked: Boolean!
): Boolean
}
type Mutation {
userSetMuted(
userId: String
muted: Boolean!
): Boolean
}
type Mutation {
userSetPresenter(
userId: String!
): Boolean
}
type Mutation {
userSetRaiseHand(
raiseHand: Boolean!
userId: String
): Boolean
}
type Mutation {
userSetReactionEmoji(
reactionEmoji: String!
): Boolean
}
type Mutation {
userSetRole(
userId: String!
role: String!
): Boolean
}
type Mutation {
userSetSpeechLocale(
locale: String!
provider: String!
): Boolean
}
type Mutation {
userSetSpeechOptions(
partialUtterances: Boolean!
minUtteranceLength: Float!
): Boolean
}
type Mutation {
userThirdPartyInfoResquest(
externalUserId: String!
): Boolean
}
type Mutation {
userTransferVoiceToMeeting(
fromMeetingId: String!
toMeetingId: String!
): Boolean
}
input BreakoutRoom {
captureNotesFilename: String!
captureSlidesFilename: String!
freeJoin: Boolean!
isDefaultName: Boolean!
name: String!
sequence: Int!
shortName: String!
users: [String]!
}
input GuestUserApprovalStatus {
guest: String!
status: String!
}