Message Reactions API for PubNub Dart SDK
Add or remove actions on published messages to build features like receipts, reactions, or to associate custom metadata to messages. Clients can subscribe to a channel to receive message reaction events on that channel. They can also fetch past message reactions from Message Persistence independently or when they fetch original messages.
Terminology
All message reactions in code are collectively called message reactions in the docs and the term applies both to reacting to a message (through emojis) and acting on a message (by deleting it).
Add Message Reaction
note
This method requires that the Mobile Push Notifications add-on is enabled for your key in the Admin Portal. Read the support page on enabling add-on features on your keys.
This method adds a message reaction to a parent message. Parent message is a normal message identified by a combination of subscribeKey
, channel
and timetoken
. Returns the added reaction in the response.
Parent message existence
Server doesn't validate if the parent message exists at the time of adding the message reaction. It does, however, check if you haven't already added this particular action to the parent message.
For a given parent message, there can be only one message reaction with type
and value
.
Method(s)
To Add a Message Reaction you can use the following method(s) in the Dart SDK:
pubnub.addMessageAction(
{String type,
String value,
String channel,
Timetoken timetoken,
Keyset? keyset,
String? using}
)
Parameter | Type | Required | Description |
---|---|---|---|
type | String | Yes | Type of message reaction. |
value | String | Yes | Value of message reaction. |
channel | String | Yes | Specifies channel name to publish message reactions to. |
timetoken | Timetoken | Yes | The publish timetoken of a parent message. |
keyset | Keyset | Optional | Override for the PubNub default keyset configuration. |
using | String | Optional | Keyset name from the keysetStore to be used for this method call. |
Basic Usage
var result = await pubnub.addMessageAction(
type: 'reaction',
value: 'smiley',
channel: 'my_channel',
timetoken: Timetoken(15610547826969050));
Returns
The addMessageAction()
operation returns a AddMessageActionResult
which contains the following property:
Property Name | Type | Description |
---|---|---|
action | MessageAction | Added message reaction. |
The MessageAction
object contains the following properties:
Property Name | Type | Description |
---|---|---|
type | String | Type of message reaction. |
value | String | Value of message reaction. |
actionTimetoken | String | Timetoken assigned to added message reaction. |
messageTimetoken | String | Timetoken of message. |
uuid | String | UUID of sender. |
Remove Message Reaction
note
This method requires that the Mobile Push Notifications add-on is enabled for your key in the Admin Portal. Read the support page on enabling add-on features on your keys.
Remove a previously added action on a published message
. Returns an empty response.
Method(s)
To Remove a Message Reaction you can use the following method(s) in the Dart SDK:
pubnub.deleteMessageAction(String channel,
{Timetoken messageTimetoken,
Timetoken actionTimetoken,
Keyset? keyset,
String? using})
Parameter | Type | Required | Description |
---|---|---|---|
channel | String | Yes | Channel the message was sent to. |
messageTimetoken | Timetoken | Yes | Publish timetoken of the original message. |
actionTimetoken | Timetoken | Yes | Publish timetoken of the message reaction to be removed. |
keyset | Keyset | Optional | Override for the PubNub default keyset configuration. |
using | String | Optional | Keyset name from the keysetStore to be used for this method call. |
Basic Usage
var result = await pubnub.deleteMessageAction(
'my_channel', Timetoken(15610547826969050), Timetoken(15610547826969159));
Returns
The deleteMessageAction()
operation returns a DeleteMessageActionResult
which does not have actionable data.
Get Message Reactions
note
This method requires that the Mobile Push Notifications add-on is enabled for your key in the Admin Portal. Read the support page on enabling add-on features on your keys.
Get a list of message reactions in a channel
. Returns a list of actions sorted by the action's timetoken in ascending order.
Method(s)
To Get Message Reactions you can use the following method(s) in the Dart SDK:
pubnub.fetchMessageActions(
String channel,
{Timetoken? from,
Timetoken? to,
int? limit,
Keyset? keyset,
String? using})
Parameter | Type | Required | Default | Description |
---|---|---|---|---|
channel | String | Yes | The channel name. | |
from | Timetoken | Optional | Message Reaction timetoken denoting the start of the range requested (return values will be less than from ). | |
to | Timetoken | Optional | Message Reaction timetoken denoting the end of the range requested (return values will be greater than or equal to to ). | |
limit | int | Optional | 100 | Specifies the number of actions to return in response. Default/Maximum is 100 . |
keyset | Keyset | Optional | Override for the PubNub default keyset configuration. | |
using | String | Optional | Keyset name from the keysetStore to be used for this method call. |
Basic Usage
var result = await pubnub.fetchMessageActions('my_channel');
Response
{
"status": 200,
"data": [
{
"type": "reaction",
"value": "smiley_face",
"actionTimetoken": "15610547826970050",
"messageTimetoken": "15610547826969050",
"uuid": "terryterry69420"
}
],
"more": {
"url": "/v1/actions/sub-c-6ba5f838-6456-11e8-9307-eaaa55e2558c/channel/my_channel?start=15610547826970050&end=15645905639093361&limit=2",
"start": "15610547826970050",
"end": "15645905639093361",
show all 19 linesReturns
The fetchMessageActions()
operation returns a list of FetchMessageActionsResult
object containing following properties:
Property Name | Type | Description |
---|---|---|
actions | List<MessageAction> | List of message reactions. |
moreActions | MoreAction | Pagination information. |
The MessageAction
has following properties:
Property Name | Type | Description |
---|---|---|
type | String | Type of message reaction. |
value | String | Value of message reaction. |
actionTimetoken | String | Timetoken assigned to added message reaction. |
messageTimetoken | String | Timetoken of message. |
uuid | String | UUID of sender. |
The MoreAction
has following properties:
Property Name | Type | Description |
---|---|---|
url | String | URL to fetch next page of message reactions. |
start | String | Start timetoken value for next page. |
limit | int | Limit count for next page. |
Other Examples
Fetch Message reactions with paging
// this loop continue fetching message reactions when next batch is available
var fetchMessageActionsResult = FetchMessageActionsResult(<MessageAction>[]);
var loopResult, from, to, limit;
do {
loopResult = await pubnub.fetchMessageActions('my_channel',
from: from, to: to, limit: limit);
fetchMessageActionsResult.actions.addAll(loopResult.actions);
if (loopResult.moreActions != null) {
var more = loopResult.moreActions;
from = Timetoken(BigInt.parse(more.start));
to = Timetoken(BigInt.parse(more.end));
limit = more.limit;
}
show all 17 lines