Manually Flagging Inappropriate 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 storage and either delete them or take appropriate action against the users who sent the messages.
Use the addMessageAction
method to add a flag as an action to a published message. When an action is added, it also publishes an event on the channel so users can hide the message on the app. 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 storage.
pubnub.addMessageAction(
{
channel: 'ch-1'
messageTimetoken: '15610547826970040',
action: {
type: 'flagged',
value: 'message is inappropriate',
},
},
function(status, response) {
}
);
extension MyAppMessageAction: MessageAction {}
let action = MyAppMessageAction(type: "flagged", value: "message is inappropriate")
pubnub.addMessageAction(
channel: "ch-1",
message: action,
messageTimetoken: 15610547826969050
) { result in
switch result {
case let .success(response):
print("Successfully Message Action Add Response: \(response)")
case let .failure(error):
print("Error from failed response: \(error.localizedDescription)")
}
})
pubnub.addMessageAction()
.channel("ch-1")
.messageAction(new PNMessageAction()
.setType("flagged")
.setValue("message is inappropriate")
.setMessageTimetoken(15701761818730000L)
)
.async(new PNCallback<PNAddMessageActionResult>() {
@Override
public void onResponse(PNAddMessageActionResult result, PNStatus status) {
if (!status.isError()) {
System.out.println(result.getType());
System.out.println(result.getValue());
System.out.println(result.getUuid());
System.out.println(result.getActionTimetoken());
System.out.println(result.getMessageTimetoken());
} else {
status.getErrorData().getThrowable().printStackTrace();
}
}
})
MessageActionAdd messageAct = new MessageActionAdd();
messageAct.ActionType = "flagged";
messageAct.ActionValue = "message is inappropriate";
pubnub.AddMessageActions().Channel("ch-1").MessageAction(messageAct).MessageTimetoken(15701761818730000).Async((result, status) => {
if (!status.Error) {
Debug.Log("result.ActionTimetoken: " + result.ActionTimetoken);
Debug.Log("result.ActionType: " + result.ActionType);
Debug.Log("result.ActionValue: " + result.ActionValue);
Debug.Log("result.MessageTimetoken: " + result.MessageTimetoken);
Debug.Log("result.UUID: " + result.UUID);
} else {
Debug.Log(status.Error);
Debug.Log(status.ErrorData.Info);
}
});
Sample message action event:
{
"channel":"my_channel",
"subscription":null,
"timetoken":"15871508399473609",
"publisher":"user-1",
"message":{
"source":"actions",
"version":"1.0",
"action":"added",
"data":{
"type":"flagged",
"value":"message is inappropriate",
"messageTimetoken":"15632184115444390",
"actionTimetoken":"15632184115444394"
}
}
}