Skip to content

Чат

Убедитесь, что предыдущие шаги выполнены успешно
  • SDK подключено к проекту: добавлена зависимость io.carrotquest:android-sdk (см. Установка)
  • Ключи взяты из раздела для разработчика (не из webApi): Ключи для SDK
  • Инициализация выполнена успешно и в Logcat появилась надпись “SDK init success”
Результат шага
  • Чат отображается и открывается в приложении, диалоги передаются в админку.

Методы открытия чата

Есть несколько способов открыть чат.

Метод для открытия чата

Метод более универсален — его можно использовать из любого вашего кода, как из ConstraintLayout/Jetpack Compose, так и из чего-то радикально иного:

kotlin
import io.carrotquest_sdk.android.Carrot

Carrot.openChat(context)
java
import android.content.Context;
import io.carrotquest_sdk.android.Carrot;

Context context = this;
Carrot.openChat(context);

Переходы из пушей и ин-аппов

При нажатии на кнопку «открыть чат» из ин-апп сообщения или из пуша чат откроется автоматически, дополнительных настроек не требуется.

Floating button

Кнопка для открытия чата. Такая же, как на WEB-версии:

Untitled

На данный момент кнопку можно добавить только при использовании ConstraintLayoutJetpack Compose не поддерживается. Чтобы встроить её в разметку:

xml
<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

  • Показать плавающую кнопку

    kotlin
    import io.carrotquest_sdk.android.ui.fab.FloatingButton
    
    val floatingButton = findViewById<FloatingButton>(R.id.cq_sdk_float_button)
    floatingButton.show()
    java
    import io.carrotquest_sdk.android.ui.fab.FloatingButton;
    
    FloatingButton floatingButton = findViewById(R.id.cq_sdk_float_button);
    floatingButton.show();
  • Скрыть плавающую кнопку

    kotlin
    floatingButton.hide()
    java
    floatingButton.hide();
  • Показать кнопки интеграции

    kotlin
    floatingButton.expand()
    java
    floatingButton.expand();
  • Скрыть кнопки интеграции

    kotlin
    floatingButton.collapse()
    java
    floatingButton.collapse();

Методы запроса непрочитанных сообщений и диалогов

Если вы вызываете чат не через floating button, могут понадобиться следующие методы.

Получить количество непрочитанных диалогов и список их ID

Метод getUnreadConversations возвращает List<String> — список ID непрочитанных диалогов:

kotlin
import io.carrotquest_sdk.android.Carrot

val conversationsList = Carrot.getUnreadConversations()
println("Carrot quest SDK dialogs count: ${conversationsList.count()}")
java
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 непрочитанных диалогов и срабатывает при каждом обновлении:

kotlin
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}")
    }
})
java
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 — такая же, как включена в настройках админ-панели.
kotlin
import io.carrotquest_sdk.android.Carrot
import io.carrotquest_sdk.android.core.main.ThemeSdk

Carrot.setTheme(ThemeSdk.DARK)
java
import io.carrotquest_sdk.android.Carrot;
import io.carrotquest_sdk.android.core.main.ThemeSdk;

Carrot.setTheme(ThemeSdk.DARK);

Примечание

Вызывать метод для отображения кнопки чата или открытия чата стоит только после Carrot.setup и (если используется) Carrot.auth.