Brand Messenger Android SDK Conversation (APAC)

Learn how to initiate chat with an agent in the Brand Messenger Android SDK

Initiate Chat with Agent

For starting the messaging activity, using the following script:

BrandMessengerManager.show(context);
BrandMessengerManager.show(context);

If the environment is also configured with Welcome-Messages, the following can be used instead of show(context). This will also send an API request to give the user a welcome-message.

BrandMessengerManager.showWithWelcome(context);

To just send the welcome-message API request without displaying the conversation screen, use the following

BrandMessengerManager.sendWelcomeMessageRequest(context);

Intercept Message Actions

Message actions from SDK conversation screen, such as user tapping on link-buttons, can be intercepted and handled outside of the SDK via a delegate.

BrandMessengerManager.setMessageActionDelegate(new KBMMessageActionDelegate() {
    @Override
    public boolean onAction(Context context, String action, Message message, Object object, Map<String, Object> replyMetadata) {
        switch (action) {
            // Example action types
            case KBMRichMessage.SUBMIT_BUTTON:
                break;
            case KBMRichMessage.QUICK_REPLY:
                break;
            case KBMRichMessage.TEMPLATE_ID + 9:
                break;
            case KBMRichMessage.WEB_LINK:
                // URL link data is found differently depending on the rich-message model type
                KBMRichMessageModel.KBMAction kbmAction = null;
                if (object instanceof KBMRichMessageModel.KBMButtonModel) {
                    kbmAction = ((KBMRichMessageModel.KBMButtonModel) object).getAction();
                } else if (object instanceof KBMRichMessageModel.KBMElementModel) {
                    kbmAction = ((KBMRichMessageModel.KBMElementModel) object).getAction();
                } else if (object instanceof KBMRichMessageModel.KBMAction) {
                    kbmAction = (KBMRichMessageModel.KBMAction) object;
                } else if (object instanceof KBMRichMessageModel.KBMPayloadModel) {
                    kbmAction = ((KBMRichMessageModel.KBMPayloadModel) object).getAction();
                }
                String url;
                if (kbmAction != null) {
                    if (!TextUtils.isEmpty(kbmAction.getUrl())) {
                        url = kbmAction.getUrl()
                    } else if (kbmAction.getPayload() != null && !TextUtils.isEmpty(kbmAction.getPayload().getUrl())) {
                        url = kbmAction.getPayload().getUrl();
                    }
                }

                if (object instanceof KBMRichMessageModel.KBMPayloadModel) {
                    KBMRichMessageModel.KBMPayloadModel payloadModel = (KBMRichMessageModel.KBMPayloadModel) object;
                    if (!TextUtils.isEmpty(payloadModel.getUrl())) {
                        url = payloadModel.getUrl();
                    }
                }
                openUrl(url);
                return true;
        }
        // Return false to let SDK handle action. True if action is handled here.
        return false;
    }
});
BrandMessengerManager.setMessageActionDelegate( object : KBMMessageActionDelegate {
    override fun onAction(
        context: Context?,
        action: String?,
        message: Message?,
        `object`: Any?,
        replyMetadata: MutableMap<String, Any>?
    ): Boolean {
        when (action) {
            KBMRichMessage.SUBMIT_BUTTON -> return false
            KBMRichMessage.QUICK_REPLY -> return false
            KBMRichMessage.TEMPLATE_ID -> return false
            KBMRichMessage.WEB_LINK -> {
                // handle link.
                var kbmAction: KBMRichMessageModel.KBMAction? = null
                if (kbmObject is KBMRichMessageModel.KBMButtonModel) {
                    kbmAction = kbmObject.action
                } else if (kbmObject is KBMRichMessageModel.KBMElementModel<*>) {
                    kbmAction = kbmObject.action
                } else if (kbmObject is KBMRichMessageModel.KBMAction) {
                    kbmAction = kbmObject
                } else if (kbmObject is KBMRichMessageModel.KBMPayloadModel) {
                    kbmAction = kbmObject.action
                }
                var url: String
                if (kbmAction != null) {
                    if (!TextUtils.isEmpty(kbmAction.url)) {
                        url = kbmAction.url
                    } else if (kbmAction.payload != null && !TextUtils.isEmpty(kbmAction.payload.url)) {
                        url = kbmAction.payload.url
                    }
                }

                if (kbmObject is KBMRichMessageModel.KBMPayloadModel) {
                    if (!TextUtils.isEmpty(kbmObject.url)) {
                        url = kbmObject.url
                    }
                }
                openUrl(url)
                return true
            }
        }
        return false;
    }
})

Fetch new messages on every chat screen open

The SDK fetches the latest message every time the chat-screen is opened.
This functionality can be enabled/disabled. When disabled, new messages will only be fetches when a push-notification arrives or a mqtt connection message for new message is received.
Default is enabled (true).
BrandMessengerUserPreference.getInstance(this).setFetchNewOnFragmentOpen(false);


Did this page help you?