Desk SDKs Android v1
Desk SDKs Android
Desk SDKs
Android
Version 1

CSAT message

Copy link

Customer satisfaction rating (CSAT) message enables your customers to give a score or leave a comment on the support provided within a ticket. The satisfaction rating scale ranges from 1 to 5, and the average CSAT score an agent or a team received can be found in Reports on the Sendbird Dashboard.


Prerequisite

Copy link

To send a CSAT message to a client app, turn on the Customer satisfaction rating feature on your dashboard first. The message is customizable in Settings > Automation on the dashboard.


Message types

Copy link

CSAT messages can have two types of states as below:

Confirmation states

Copy link
StateDescription

WAITING

Set when an agent sends a CSAT message.

CONFIRMED

Set when a customer sends a response to a CSAT message.


Submit feedback

Copy link

To submit feedback from a client app, call the ticket.submitFeedback() method on the client app. When a customer replies to the CSAT message, the state of the message changes from WAITING to CONFIRMED.

ticket.submitFeedback(USER_MESSAGE, SCORE, COMMENT, new Ticket.SubmitFeedbackHandler() {
    @Override
    public void onResult(Ticket ticket, SendbirdException e) {
        if (e != null) {
            // Handle error.
        }

        ...
    }
});
Arguments
RequiredTypeDescription

USER_MESSAGE

string

Specifies a text message for a CSAT message.

SCORE

int

Specifies the score of satisfaction rating scale. Values range from 1 to 5.

COMMENT

string

Specifies a comment on the provided support. The value can be null.


Update the CSAT message

Copy link

Sendbird server notifies the updates to your app through theonMessageUpdate() method of the channel event handler. You can implement your code to customize the UI of the updated message depending on the request status.

public void onMessageUpdated(final BaseChannel channel, final BaseMessage message) {
    Ticket.getByChannelUrl(channel.getUrl(), new Ticket.GetByChannelUrlHandler() {
        @Override
        public void onResult(Ticket ticket, SendbirdException e) {
            if (e != null) return;

            String data = message.getData();
            if (!TextUtils.isEmpty(data)) {
                JsonObject dataObj = new JsonParser().parse(data).getAsJsonObject();
                String type = dataObj.get("type").getAsString();
                boolean isFeedbackMessage = "SENDBIRD_DESK_CUSTOMER_SATISFACTION".equals(type);
                if (isFeedbackMessage) {
                    JsonObject feedback = dataObj.get("body").getAsJsonObject();
                    String state = feedback.get("state").getAsString();
                    switch (state) {
                        case "CONFIRMED":
                            // Implement your code for the UI when there is a response from a customer.
                            break;
                        case "WAITING":
                            // Implement your code for the UI when there is no response from a customer.
                            break;
                    }
                }
            }
        }
    });
}

message.data

Copy link

You can find the stringified JSON object of the following in the message.data property within the onMessageUpdate() method of the channel event handler.

{
    "type": "SENDBIRD_DESK_CUSTOMER_SATISFACTION",
    "body": {
        "state": "CONFIRMED",
        "customerSatisfactionScore": 3,                             // Score ranges from 1 to 5
        "customerSatisfactionComment": "It was really helpful :)."  // Comment is optional.
    }
}