← Назад к заметкам

Заметки

Почему чат ОЛ есть в таймлайне, но запись не открывается

Почему запись открытой линии появляется в таймлайне CRM, но не открывает диалог: неполная activity, provider data и session ID.

Если запись открытой линии видна в таймлайне, но не открывает чат, проблема обычно не в тексте активности. Чаще не хватает provider-данных, session ID, chat ID или прав на сам диалог.

Проблема

В карточке CRM видна запись о чате открытой линии, но при клике ничего полезного не происходит: чат не открывается или открывается пустая область.

Так бывает, когда в таймлайн добавили обычную CRM-активность и назвали её перепиской, но не передали данные, по которым интерфейс открывает сессию открытой линии.

BX24.callMethod(
    'crm.activity.add',
    {
        fields: {
            OWNER_TYPE_ID: 2,
            OWNER_ID: 123,
            SUBJECT: 'Переписка с клиентом',
            DESCRIPTION: 'Клиент написал в чат',
            COMPLETED: 'Y',
        },
    },
    function (result) {
        console.log(result.error() || result.data());
    }
);

Такая запись может быть полезна как текстовая пометка, но она ещё не является полноценной связью с диалогом.

Не хватает provider-данных

Для кликабельной записи важен provider, тип provider-а и параметры сессии.

В activity должны быть данные, которые позволяют Битриксу понять, что запись относится к открытой линии.

fields: {
    OWNER_TYPE_ID: 2,
    OWNER_ID: 123,
    SUBJECT: 'Диалог открытой линии',
    PROVIDER_ID: 'IMOPENLINES_SESSION',
    PROVIDER_TYPE_ID: 'IMOPENLINES_SESSION',
    PROVIDER_PARAMS: {
        SESSION_ID: 456,
        CHAT_ID: 789,
    },
    BINDINGS: [
        { OWNER_TYPE_ID: 2, OWNER_ID: 123 }
    ]
}

Конкретные значения provider-а лучше сверять на портале и в существующих активностях, созданных штатной открытой линией. В разных версиях и сценариях структура может отличаться.

Session ID должен быть реальным

Даже правильный provider не поможет, если сессия не существует или пользователь не имеет доступа к диалогу.

Если есть сомнение, сначала проверьте сессию отдельным REST-вызовом.

BX24.callMethod(
    'imopenlines.dialog.get',
    { SESSION_ID: 456 },
    function (result) {
        console.log(result.error() || result.data());
    }
);

Если метод не возвращает диалог, проблема не в таймлайне: нужно искать, где потерялась сессия, закрыт ли диалог, есть ли права у пользователя и корректно ли сохранён ID.

Права тоже влияют

Запись может быть создана техническим пользователем, а открывать её пытается менеджер без доступа к диалогу.

Для открытых линий важны права на саму линию, доступ к CRM-сущности и доступ к диалогу. Поэтому при отладке лучше проверять сценарий обычным оператором, а не только администратором.

Если администратор открывает чат, а менеджер нет, дело чаще всего не в provider-е, а в правах или маршрутизации открытой линии.