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

Confirmation request message

Copy link

With Confirmation request message, you can ask your customers for confirmation of ticket closing by providing two different options such as the confirm or decline buttons. The message is customizable in Settings > Triggers on the Sendbird Dashboard.

Note: Depending on the permissions set in Settings > Automation on the Sendbird Dashboard, agents can directly close a ticket or close a ticket after sending the confirmation request message.


Message types

Copy link

Confirmation request messages can have three types of states as below:

Confirmation states

Copy link
StateDescription

WAITING

Set when an agent sends a confirmation request message.

CONFIRMED

Set when a customer confirms to close a ticket.

DECLINED

Set when a customer declines to close a ticket.


Send confirmation of ticket closing

Copy link

To reply to a confirmation request message, call the ticket.confirmEndOfChat() method on a client app. When a customer chooses one of the two options, the response true or false is sent to the Desk server as CONFIRMED or DECLINED, respectively.

ticket.confirmEndOfChat(USER_MESSAGE, true|false, new Ticket.ConfirmEndOfChatHandler() {
    @Override
    public void onResult(Ticket ticket, SendbirdException e) {
        if (e != null) {
            // Handle error.
        }

        // You can implement your code here to customize the UI of the message.
    }
});

Update the confirmation request message

Copy link

Sendbird server notifies the updates to your app through the onMessageUpdate() method of the channel event handler. You can implement your code to customize the UI of the updated message depending on the confirmation 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 isClosureInquired = "SENDBIRD_DESK_INQUIRE_TICKET_CLOSURE".equals(type);
                if (isClosureInquired) {
                    JsonObject closureInquiry = dataObj.get("body").getAsJsonObject();
                    String state = closureInquiry.get("state").getAsString();
                    switch (state) {
                        case "CONFIRMED":
                            // Implement your code for the UI when a customer confirms to close a ticket.
                            break;
                        case "DECLINED":
                            // Implement your code for the UI when a customer declines to close a ticket.
                            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() of the channel event handler.

{
    "type": "SENDBIRD_DESK_INQUIRE_TICKET_CLOSURE",
    "body": {
        "state": "CONFIRMED"
    }
}