Чат
Убедитесь, что предыдущие шаги выполнены успешно
- SDK подключено к проекту: добавлена зависимость
io.carrotquest:android-sdk(см. Установка) - Ключи взяты из раздела для разработчика (не из webApi): Ключи для SDK
- Инициализация выполнена успешно и в Logcat появилась надпись “SDK init success”
Результат шага
- Чат отображается и открывается в приложении, диалоги передаются в админку.
Методы открытия чата
Есть несколько способов открыть чат.
Метод для открытия чата
Метод более универсален — его можно использовать из любого вашего кода, как из ConstraintLayout/Jetpack Compose, так и из чего-то радикально иного:
import io.carrotquest_sdk.android.Carrot
Carrot.openChat(context)import android.content.Context;
import io.carrotquest_sdk.android.Carrot;
Context context = this;
Carrot.openChat(context);Переходы из пушей и ин-аппов
При нажатии на кнопку «открыть чат» из ин-апп сообщения или из пуша чат откроется автоматически, дополнительных настроек не требуется.
Floating button
Кнопка для открытия чата. Такая же, как на WEB-версии:

На данный момент кнопку можно добавить только при использовании ConstraintLayout — Jetpack Compose не поддерживается. Чтобы встроить её в разметку:
<io.carrotquest_sdk.android.ui.fab.FloatingButton
android:id="@+id/cq_sdk_float_button"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:cq_location_fab="BOTTOM_RIGHT"
app:cq_visibility_background="false"
app:cq_icon_fab="@drawable/ic_send"
app:cq_margin_fab="8dp"
app:cq_show_social_labels="false"
app:cq_auto_hide_fab="true"
/>Все атрибуты, которые начинаются с cq_…, необязательные и нужны для тонкой настройки кнопки:
cq_location_fab— расположение кнопки относительно родительского контейнера. Допустимые значения:TOP_LEFT,TOP_RIGHT,BOTTOM_LEFT,BOTTOM_RIGHT. По умолчаниюBOTTOM_RIGHT.cq_visibility_background— видимость эффекта затемнения при нажатии. По умолчаниюtrue.cq_icon_fab— иконка кнопки. По умолчанию@id/ic_cq_message.cq_margin_fab— отступы кнопки относительно родительского контейнера. По умолчанию16dp.cq_show_social_labels— видимость надписей рядом с иконками социальных сетей. По умолчаниюtrue.cq_auto_hide_fab— автоматическое скрытие кнопки чата при отсутствии интернета. По умолчаниюfalse.
Методы для управления Floating Button
Показать плавающую кнопку
kotlinimport io.carrotquest_sdk.android.ui.fab.FloatingButton val floatingButton = findViewById<FloatingButton>(R.id.cq_sdk_float_button) floatingButton.show()javaimport io.carrotquest_sdk.android.ui.fab.FloatingButton; FloatingButton floatingButton = findViewById(R.id.cq_sdk_float_button); floatingButton.show();Скрыть плавающую кнопку
kotlinfloatingButton.hide()javafloatingButton.hide();Показать кнопки интеграции
kotlinfloatingButton.expand()javafloatingButton.expand();Скрыть кнопки интеграции
kotlinfloatingButton.collapse()javafloatingButton.collapse();
Методы запроса непрочитанных сообщений и диалогов
Если вы вызываете чат не через floating button, могут понадобиться следующие методы.
Получить количество непрочитанных диалогов и список их ID
Метод getUnreadConversations возвращает List<String> — список ID непрочитанных диалогов:
import io.carrotquest_sdk.android.Carrot
val conversationsList = Carrot.getUnreadConversations()
println("Carrot quest SDK dialogs count: ${conversationsList.count()}")import java.util.List;
import io.carrotquest_sdk.android.Carrot;
List<String> conversationsList = Carrot.getUnreadConversations();
System.out.println("Carrot quest SDK dialogs count: " + conversationsList.size());Подписаться на список непрочитанных диалогов
Колбэк выдаёт точно такой же список ID непрочитанных диалогов и срабатывает при каждом обновлении:
import io.carrotquest_sdk.android.Carrot
Carrot.setUnreadConversationsCallback(object : Carrot.Callback<List<String>> {
override fun onResponse(conversationsList: List<String>?) {
println("Carrot quest SDK dialogs count: ${conversationsList?.count()}")
}
override fun onFailure(e: Throwable?) {
println("Carrot quest SDK error = ${e?.message}")
}
})import java.util.List;
import io.carrotquest_sdk.android.Carrot;
Carrot.setUnreadConversationsCallback(new Carrot.Callback<List<String>>() {
@Override
public void onResponse(List<String> conversationsList) {
System.out.println("Carrot quest SDK dialogs count: " + (conversationsList != null ? conversationsList.size() : 0));
}
@Override
public void onFailure(Throwable e) {
System.out.println("Carrot quest SDK error = " + (e != null ? e.getMessage() : null));
}
});Тема
Тему чата можно переключить методом Carrot.setTheme. Доступно четыре значения enum ThemeSdk:
LIGHT— светлая тема;DARK— тёмная тема;FROM_DEVICE— подстраивается под системную тему устройства;FROM_WEB— такая же, как включена в настройках админ-панели.
import io.carrotquest_sdk.android.Carrot
import io.carrotquest_sdk.android.core.main.ThemeSdk
Carrot.setTheme(ThemeSdk.DARK)import io.carrotquest_sdk.android.Carrot;
import io.carrotquest_sdk.android.core.main.ThemeSdk;
Carrot.setTheme(ThemeSdk.DARK);Примечание
Вызывать метод для отображения кнопки чата или открытия чата стоит только после Carrot.setup и (если используется) Carrot.auth.