Report offensive messages
PubNub provides a mechanism for users to report offensive content in messages directly from their applications. A moderator can then fetch these flagged messages from Message Persistence and either delete them or take appropriate action against the users who sent the messages.
User ID / UUID
User ID is also referred to as UUID
/uuid
in some APIs and server responses but holds the value of the userId
parameter you set during initialization.
Flag messages
Use the addMessageAction
method to add a flag as an action to a published message. The flag is stored and linked to the original message, so you can see if messages are flagged or not when you fetch them from Message Persistence.
- JavaScript
- Swift
- Java
- Unity
1pubnub.addMessageAction(
2 {
3 channel: 'ch-1'
4 messageTimetoken: '15610547826970040',
5 action: {
6 type: 'flagged',
7 value: 'message is inappropriate',
8 },
9 },
10 function(status, response) {
11
12 }
13);
1extension MyAppMessageAction: MessageAction {}
2
3let action = MyAppMessageAction(type: "flagged", value: "message is inappropriate")
4
5pubnub.addMessageAction(
6 channel: "ch-1",
7 message: action,
8 messageTimetoken: 15610547826969050
9) { result in
10 switch result {
11 case let .success(response):
12 print("Successfully Message Reaction Add Response: \(response)")
13 case let .failure(error):
14 print("Error from failed response: \(error.localizedDescription)")
15 }
show all 16 lines1pubnub.addMessageAction()
2 .channel("ch-1")
3 .messageAction(new PNMessageAction()
4 .setType("flagged")
5 .setValue("message is inappropriate")
6 .setMessageTimetoken(15701761818730000L)
7 )
8 .async(result -> {
9 result.onSuccess(res -> {
10 System.out.println(res.getType());
11 System.out.println(res.getValue());
12 System.out.println(res.getUserId());
13 System.out.println(res.getActionTimetoken());
14 System.out.println(res.getMessageTimetoken());
15 }).onFailure(exception -> {
show all 18 lines1MessageActionAdd messageAct = new MessageActionAdd();
2messageAct.ActionType = "flagged";
3messageAct.ActionValue = "message is inappropriate";
4
5pubnub.AddMessageActions().Channel("ch-1").MessageAction(messageAct).MessageTimetoken(15701761818730000).Async((result, status) => {
6 if (!status.Error) {
7 Debug.Log("result.ActionTimetoken: " + result.ActionTimetoken);
8 Debug.Log("result.ActionType: " + result.ActionType);
9 Debug.Log("result.ActionValue: " + result.ActionValue);
10 Debug.Log("result.MessageTimetoken: " + result.MessageTimetoken);
11 Debug.Log("result.UserID: " + result.UserID);
12 } else {
13 Debug.Log(status.Error);
14 Debug.Log(status.ErrorData.Info);
15 }
show all 16 linesUnflag messages
Use the removeMessageAction
method to remove a flag from a message.
- JavaScript
- Swift
- Java
- Unity
1pubnub.removeMessageAction(
2{
3 channel: 'ch-1'
4 messageTimetoken: '15610547826970040',
5 actionTimetoken: '15610547826970040',
6},
7function(status, response) {
8}
9);
1pubnub.removeMessageActions(
2 channel: "ch-1",
3 message: 15610547826969050,
4 action: 15610547826970050
5) { result in
6 switch result {
7 case let .success(response):
8 print("Successfully Message Reaction Remove Response: \(response)")
9 case let .failure(error):
10 print("Error from failed response: \(error.localizedDescription)")
11 }
12})
1pubnub.removeMessageAction()
2 .channel("ch-1")
3 .messageTimetoken(15701761818730000L)
4 .actionTimetoken(15701775691010000L)
5 .async(result -> { /* check result */ });
1pubnub.RemoveMessageActions().ActionTimetoken(15701775691010000).Channel("ch-1").MessageTimetoken(15701761818730000).Async((result, status) => {
2 if (!status.Error) {
3 // result has no actionable data
4 } else {
5 Debug.Log(status.Error);
6 Debug.Log(status.ErrorData.Info);
7 }
8});
Flagging Events
PubNub triggers events when flags are added or removed. Users that are subscribed to channels will receive these events.
Message reaction added:
1{
2 "channel":"my_channel",
3 "subscription":null,
4 "timetoken":"15871508399473609",
5 "publisher":"user-1",
6 "message":{
7 "source":"actions",
8 "version":"1.0",
9 "action":"added",
10 "data":{
11 "type":"flagged",
12 "value":"message is inappropriate",
13 "messageTimetoken":"15632184115444390",
14 "actionTimetoken":"15632184115444394"
15 }
show all 17 linesMessage reaction removed:
1{
2 "channel":"my_channel",
3 "subscription":null,
4 "timetoken":"15871508399473609",
5 "publisher":"user-1",
6 "message":{
7 "source":"actions",
8 "version":"1.0",
9 "action":"removed",
10 "data":{
11 "type":"flagged",
12 "value":"message is inappropriate",
13 "messageTimetoken":"15632184115444390",
14 "actionTimetoken":"15632184115444394"
15 }
show all 17 lines