Заметки
Почему чат ОЛ есть в таймлайне, но запись не открывается
Почему запись открытой линии появляется в таймлайне 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-е, а в правах или маршрутизации открытой линии.