Прослушивание записи звонка в коробочной версии Битрикс24
Инструкция по созданию и использованию решения
“Прослушивание записи звонка в Битрикс24”
и ссылка на скачивание в карточке элемента в Таймлайне.
Было

Стало

Важно:
Адрес получения записей должен быть доступен пользователям CRM с их машин.
Для корректной загрузки записи в плеере, необходимо обеспечить доступ по HTTPS с рабочим сертификатом (большинство браузеров не разрешают смешанный контент).
В файл /local/php_interface/init.php добавляем код, с помощью которого подключается js библиотека:
"OnEpilogHandlerMain"));
AddEventHandler("main", "OnEpilog", Array("AudioChangeSymbols", "OnEpilogHandlerMain"));
class AudioChangeSymbols
{
static function OnEpilogHandlerMain()
{
$main = array(
'mainScript' => array(
'js' => '/local/js/custom/audio.js',
),
);
foreach($main as $ext => $arext){
CJSCore::RegisterExt($ext, $arext);
}
CUtil::InitJSCore(array('mainScript'));
}
}
Создаем файл /local/js/custom/audio.js со следующим содержимым:
BX.ready(function(){
let elements = [
'div.crm-entity-stream-content-detail-description',
'div.crm-timeline__editable-text_content',
];
let arDeleteStr = [
'Download',
'\n',
];
let express = /\/crm\/\w+\/details\/\d+/;
let url_cur = document.location.pathname;
if(url_cur.match(express)) {
BX.addCustomEvent('onAjaxSuccess', function() {
let span_audio = '';
let tag = '';
for (let i = 0; i <= elements.length - 1; i++) {
if (document.querySelector(elements[i]) !== null) {
tag = elements[i];
}
}
if (tag !='') {
span_audio = document.querySelectorAll(tag);
let res = '';
let expr = '';
for (let elem of span_audio) {
if (elem.querySelector('audio') === null) {
res = elem.textContent;
if (res.includes('http') && res.includes('get_conversation_recording')) {
expr = /(http[^"]+\/get_conversation_recording\?[^"\/…]+)(…| |")/gm;
let ar = res.split(expr);
for (let i = 0; i <= arDeleteStr.length - 1; i++) {
if (ar[1].includes(arDeleteStr[i]) ) {
let arTrim = ar[1].split(arDeleteStr[i]);
ar[1] = arTrim[0];
}
}
let html = '';
if (ar[0] != '' && !res.includes('audio')) {
html = '<span>' + ar[0] + '</span><br>';
}
res = ar[1];
html += '<audio controls src=' + res + '></audio><br><a href=' + res + '>Скачать запись</a>';
elem.innerHTML = html;
}
}
}
} else {
console.log('Такого элемента на странице не существует');
}
});
}
})
В файле /local/js/custom/audio.js во второй строке определен массив elements с css селекторами элементов HTML страницы, в которых содержатся ссылки на запись звонков. Желательно, чтобы это был тег div. Если на портале используется другой класс или элемент, то необходимо в массив elements добавить нужный селектор. div. указывать обязательно!

На новой версии портала взяли тег div.crm-timeline__editable-text_content:

На старой версии портала это тег div.crm-entity-stream-content-detail-description.

Last updated
Was this helpful?