Comment on page
Real-Time Events
The following events are returned when reading from a real time messages and events from the datafeed:
All events follow the structure below:
id
: A randomly generated ID for the event, distinct from the ID of the message or chatroom or other objects that the event pertains to. These IDs are unique, except in the situation where two activities are performed simultaneously in the Symphony client (for example, members are added during the creation of a room). In this case, the two associated events will share the same id. This is for Symphony internal use.timestamp
: The timestamp for when the event occurred in Unix timestamp milliseconds format. For certain events, this will be equivalent to the created timestamp of the object the event pertains to (for instance, room creation timestamp).type
: The type of event that occurred (for instance, a "MessageSent" or "RoomCreated" event).initiator
: The actor that initiated the event. Currently, initiator will always be a user. The initiator user may be distinct from the affected user (for instance, when one user adds another user to a chatroom).payload
: An object containing event-specific information that is keyed off the event type.
Generated when a message is sent in an IM, MIM, or chatroom of which the user in context is a member, including messages sent by the user him/herself.
{
"id": "",
"timestamp": 0,
"type": "MESSAGESENT",
"initiator": {
"user": {
"userId": 0,
"firstName": "",
"lastName": "",
"displayName": "",
"email": "",
"userName": ""
}
},
"payload": {
"messageSent": {
"message": {
"messageId": "",
"timestamp": 0,
"message": "<div data-format='PresentationML' data-version='2.0'>Message content. With <span class='entity' data-entity-id='mention1'>@user name</span>, <span class='cashTag' data-entity-id='cashtag2'>$ticker</span>, and <span class='hashTag' data-entity-id='hashtag3'>#keyword</span>.</div>",
"data": "{
\"mention1\": {
\"type\": \"com.symphony.user.mention\",
\"version\": \"1.0\",
\"id\": [{
\"type\": \"com.symphony.user.userId\",
\"value\": 123456789
}]
},
\"cashtag2\": {
\"type\": \"org.symphonyoss.fin.security\",
\"version\": \"1.0\",
\"id\": [{
\"type\": \"org.symphonyoss.fin.security.id.ticker\",
\"value\": \"ibm\"
}]
},
\"hashtag3\": {
\"type\": \"org.symphonyoss.taxonomy\",
\"version\": \"1.0\",
\"id\": [{
\"type\": \"org.symphonyoss.taxonomy.hashtag\",
\"value\": \"unexpected\"
}]
}
}",
"attachments": [],
"user": {
"userId": 0,
"firstName": "",
"lastName": "",
"displayName": "",
"email": "",
"username": ""
},
"externalRecipients": false,
"stream": {
"streamId": "",
"streamType": "IM"
},
"userAgent": "Agent-2.2.5-Linux-4.9.77-31.58.amzn1.x86_64",
"originalFormat": "com.symphony.messageml.v2"
}
}
}
}
Events attributes details:
version
: version of the message payload, set when the message was createdmessage
: the message itselfattachments
: list of attachments to the message, not present if there are no attachmentsuser
: author of the messageexternalRecipients
: indicates whether that message is sent to external users.false
: the message was only sent to users internal to the company.true
: the message was sent to at least one user outside of the company.
stream
: stream the message was posted into.streamId
: identifier for the stream.streamType
: stream type can beROOM
,IM
,MIM
, orPOST
.
data
: JSON structure contained inside an escaped string, NOT an actual JSON structure.
Note:
- The event
initiator
and the messageuser
are the same - Hashtags and cashtags in EntityJSON have no '#' or '$'
- An external chatroom can contain messages with
externalRecipients
set tofalse
in cases where external users have not been added to the chatroom yet.
Generated when messages are suppressed:
{
"id": "V2Jdlz",
"messageId": "qsOkkR1Z170QKVu54QU8WX___qRaa2y5bw",
"timestamp": 1493131629382,
"type": "MESSAGESUPPRESSED",
"initiator": {
"user": {
"userId": 8933531976380
}
},
"payload": {
"messageSuppressed": {
"messageId": "QasBvaApRVqAIGPcqUTOAn___qRaa6hwdA",
"stream": {
"streamId": "ksuDd0xGnAGW1B4plItFyn___qRfGLBsdA"
}
}
}
}
Generated when a user replies to a bot message that contains an interactive form with UX components such as text fields, radio buttons, checkboxes, person selectors and more. Please refer to Symphony Elements for more information.
[
{
"id": "HHZFPX",
"messageId": "StQDPAYMXNz1ue4fcr5W7H___pQENqrGbQ",
"timestamp": 1563297404217,
"type": "SYMPHONYELEMENTSACTION",
"initiator": {
"user": {
"userId": 7078106482890,
"firstName": "User",
"lastName": "Bot",
"displayName": "User",
"email": "[email protected]",
"username": "user_bot"
}
},
"payload": {
"symphonyElementsAction": {
"stream": {
"streamId": "YuK1c2y2yuie6+UfQnjSPX///pQEn69idA=="
},
"formMessageId": "xtZqqBNGwLDkLuvuQTyjH3///pQENvjudA==5454",
"formId": "form_id",
"formValues": {
"action": "submit_button",
"name_01": "John",
"email_01": "[email protected]",
"country": "opt1",
"example_radio": "option_01",
"checkbox_1": "value01",
"checkbox_2": "value02",
"comment": "my comment"
}
}
}
}
]
Note that since Symphony v20.3.1, the event payload returned by the Datafeed has changed. The attribute
actionStream
has been removed and the formStream
attribute has been renamed to stream
.Generated when either:
- The user in context shares a wall post written by another user.
- Another user shares a wall post written by the user in context.
{
"id": "",
"timestamp": 0,
"type": "SHAREDPOST",
"initiator": {
"user": {
"userId": 0,
"firstName": "",
"lastName": "",
"displayName": "",
"email": "",
"username": ""
}
},
"payload": {
"sharedPost": {
"message": {
"messageId": "",
"timestamp": 0,
"message": "<div data-format='PresentationML' data-version='2.0'>Sent when sharing the original post</div>",
"data" : "{ }",
"attachments": [],
// This is the user who is sharing the wall post.
"user": {
"userId": 0,
"firstName": "",
"lastName": "",
"displayName": "",
"email": "",
"username": ""
},
"externalRecipients": false,
"stream": {
// This is the ID of the sharing user's wall.
"streamId": "",
// For a shared wall post, the destination stream type will always be POST.
"streamType": "POST"
}
},
// This is the original wall post that is being shared.
"sharedMessage": {
"messageId": "",
"timestamp": 0,
"message": "<div data-format='PresentationML' data-version='2.0'>Original Post</div>",,
"data" : "{}",
"attachments": [],
// This is the author of the original wall post.
"user": {
"userId": 0,
"firstName": "",
"lastName": "",
"displayName": "",
"email": "",
"username": ""
},
"externalRecipients": false,
"stream": {
// This is the ID of the original poster's wall.
"streamId": "",
// For a shared wall post, the originating stream type will always be POST.
"streamType": "POST"
}
}
}
}
}
Generated when an IM or MIM is created with the user in context as a member, initiated either by the user in context or another user:
{
"id": "",
"timestamp": 0,
"type": "INSTANTMESSAGECREATED",
"initiator": {
"user": {
"userId": 0,
"firstName": "",
"lastName": "",
"displayName": "",
"email": "",
"username": ""
}
},
"payload": {
"instantMessageCreated": {
"stream": {
"streamId": "",
// Stream type can be either IM or MIM.
"streamType": "MIM",
"members": [
{ "userId": 0 },
{ "userId": 1 },
{ "userId": 2 }
],
"external": false
}
}
}
}
Generated when a room is created by the user in context:
[
{
"id": "uW6hmX",
"messageId": "nn-TBGB...",
"timestamp": 1535146379937,
"type": "ROOMCREATED",
"initiator": {
"user": {
"userId": 14568...,
"displayName": "Local Bot",
"email": "[email protected]",
"username": "bot.user"
}
},
"payload": {
"roomCreated": {
"stream": {
"streamId": "tVtJmEG...",
"streamType": "ROOM",
"roomName": "pub12",
"external": false,
"crossPod": false
},
"roomProperties": {
"name": "pub12",
"description": "#twelfth",
"creatorUser": {
"userId": 14568...,
"displayName": "Local Bot",
"email": "[email protected]",
"username": "bot.user"
},
"createdDate": 1535146379931,
"external": false,
"crossPod": false,
"copyProtected": false,
"readOnly": false,
"discoverable": false,
"membersCanInvite": false,
"canViewHistory": false,
"public": true
}
}
}
}
]
Generated when a room of which the user in context is a member is updated, including rooms updated by the user him/herself:
{
"id": "",
"timestamp": 0,
"type": "ROOMUPDATED",
"initiator": {
"user": {
"userId": 0,
"firstName": "",
"lastName": "",
"displayName": "",
"email": "",
"username": ""
}
},
"payload": {
"roomUpdated": {
"stream": {
"streamId": "",
"streamType": "ROOM",
"roomName": "",
"external": false
},
// These fields represent the current state of these attributes. At least one of them was updated by this operation.
"newRoomProperties": {
"name": "",
"description": "",
"discoverable": false,
"membersCanInvite": false
}
}
}
}
Generated when a room of which the user in context is a member is deactivated, including rooms deactivated by the user him/herself:
{
"id": "",
"timestamp": 0,
"type": "ROOMDEACTIVATED",
"initiator": {
"user": {
"userId": 0,
"firstName": "",
"lastName": "",
"displayName": "",
"email": "",
"username": ""
}
},
"payload": {
"roomDeactivated": {
"stream": {
"streamId": "",
"streamType": "ROOM"
}
}
}
}
The
ROOMDEACTIVATED
event does not include the roomName
or external
fields.Generated when a room of which the user in context is a member is reactivated, including rooms reactivated by the user him/herself:
{
"id": "",
"timestamp": 0,
"type": "ROOMREACTIVATED",
"initiator": {
"user": {
"userId": 0,
"firstName": "",
"lastName": "",
"displayName": "",
"email": "",
"username": ""
}
},
"payload": {
"roomReactivated": {
"stream": {
"streamId": "",
"streamType": "ROOM",
"roomName": "",
"external": false
}
}
}
}
Generated when a user requests to join a room. Only the user who requested to join the room and the owners of that room will receive this event on their datafeeds.
The
affectedUsers
attribute represents the owners of the room.
Available in Agent 2.56.0.[
{
"id": "LSWslw",
"messageId": "lwu0jF0reb7Sbw",
"timestamp": 1574439227693,
"type": "USERREQUESTEDTOJOINROOM",
// This is the user who initiated the action, in this case, the user who has requested to join the room.
"initiator": {
"user": {
"userId": 68719476737,
"firstName": "John",
"lastName": "Doe",
"displayName": "John Doe",
"email": "[email protected]",
"username": "[email protected]"
}
},
"payload": {
"userRequestedToJoinRoom": {
"stream": {
"streamId": "cVHHJfFJbjyQ4bmHsHJBcdA",
"members": []
},
//These are the users who own the room.
"affectedUsers": [
{
"userId": 68719476759,
"displayName": "owner1",
"email": "[email protected]",
"username": "owner1"
},
{
"userId": 68719476760,
"firstName": "owner2",
"lastName": "owner2",
"displayName": "owner2 owner2",
"email": "[email protected]",
"username": "owner2"
}
]
}
}
}
]
Generated when a new user joins or is added to a room of which the user in context is a member, including when the user himself joins or is added to a room.:
{
"id": "",
"timestamp": 0,
"type": "USERJOINEDROOM",
// This is the user who initiated the action (i.e. added the user to the room). If the initiator and and affected user are the same, the user joined the room of his own accord.
"initiator": {
"user": {
"userId": 0,
"firstName": "",
"lastName": "",
"displayName": "",
"email": "",
"username": ""
}
},
"payload": {
"userJoinedRoom": {
"stream": {
"streamId": "",
"streamType": "ROOM",
"roomName": "",
"external": false
},
// This is the user who was affected by the action (i.e. joined the room).
"affectedUser": {
"userId": 0,
"firstName": "",
"lastName": "",
"displayName": "",
"email": "",
"username": ""
}
}
}
}
Generated when a user leaves or is removed from a room of which the user in context is a member, including when the user himself leaves or is removed from a room:
{
"id": "",
"timestamp": 0,
"type": "USERLEFTROOM",
// This is the user who initiated the action (i.e. removed the user from the room). If the initiator and and affected user are the same, the user left the room of his own accord.
"initiator": {
"user": {
"userId": 0,
"firstName": "",
"lastName": "",
"displayName": "",
"email": "",
"username": ""
}
},
"payload": {
"userLeftRoom": {
"stream": {
"streamId": "",
"streamType": "ROOM",
"roomName": "",
"external": false
},
// This is the user who was affected by the action (i.e. left the room).
"affectedUser": {
"userId": 0,
"firstName": "",
"lastName": "",
"displayName": "",
"email": "",
"username": ""
}
}
}
}
Generated when a user is promoted from a participant to an owner of a room of which the user in context is a member, including when the user himself is promoted to an owner or promotes another user.:
{
"id": "",
"timestamp": 0,
"type": "ROOMMEMBERPROMOTEDTOOWNER",
// This is the user who performed the promotion.
"initiator": {
"user": {
"userId": 0,
"firstName": "",
"lastName": "",
"displayName": "",
"email": "",
"username": ""
}
},
"payload": {
"roomMemberPromotedToOwner": {
"stream": {
"streamId": "",
"streamType": "ROOM",
"roomName": "",
"external": false
},
// This is the user who was promoted.
"affectedUser": {
"userId": 0,
"firstName": "",
"lastName": "",
"displayName": "",
"email": "",
"username": ""
}
}
}
}
Generated when a user is demoted from an owner to a participant of a room of which the user in context is a member, including when the user himself is demoted to a participant or demotes another user:
{
"id": "",
"timestamp": 0,
"type": "ROOMMEMBERDEMOTEDFROMOWNER",
// This is the user who performed the demotion.
"initiator": {
"user": {
"userId": 0,
"firstName": "",
"lastName": "",
"displayName": "",
"email": "",
"username": ""
}
},
"payload": {
"roomMemberDemotedFromOwner": {
"stream": {
"streamId": "",
"streamType": "ROOM",
"roomName": "",
"external": false
},
// This is the user who was demoted.
"affectedUser": {
"userId": 0,
"firstName": "",
"lastName": "",
"displayName": "",
"email": "",
"username": ""
}
}
}
}
Generated when a connection request is sent, either:
- Sent by the user in context to another user.
- Sent to the user in context by another user.
{
"id": "",
"timestamp": 0,
"type": "CONNECTIONREQUESTED",
// This is the user who sent the request.
"initiator": {
"user": {
"userId": 0,
"firstName": "",
"lastName": "",
"displayName": "",
"email": "",
"username": ""
}
},
"payload": {
"connectionRequested": {
// This is the user to whom the request was sent.
"toUser": {
"userId": 0,
"firstName": "",
"lastName": "",
"displayName": ""
}
}
}
}
Generated when a connection request is accepted, either:
- Sent by the user in context and accepted by another user.
- Sent by another user and accepted by the user in context.
{
"id": "",
"timestamp": 0,
"type": "CONNECTIONACCEPTED",
// This is the user who accepted the request.
"initiator": {
"user": {
"userId": 0,
"firstName": "",
"lastName": "",
"displayName": "",
"email": "",
"username": ""
}
},
"payload": {
"connectionAccepted": {
// This is the user who sent the request.
"fromUser": {
"userId": 0,
"firstName": "",
"lastName": "",
"displayName": "",
"email": ""
}
}
}
}
Last modified 9mo ago