# Прослушивание записи звонка в коробочной версии Битрикс24

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

**Было**

<figure><img src="/files/3VIWReE1M1bhA1b38kev" alt=""><figcaption></figcaption></figure>

**Стало**

<figure><img src="/files/hezszAS9BINw1T8yaf6x" alt=""><figcaption></figcaption></figure>

**Важно:**

* Адрес получения записей должен быть доступен пользователям CRM с их машин.
* Для корректной загрузки записи в плеере, необходимо обеспечить доступ по HTTPS\
  с рабочим сертификатом (большинство браузеров не разрешают смешанный контент).

1. В файл /local/php\_interface/init.php добавляем код, с помощью которого подключается js библиотека:

```javascript
"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'));
    }
}
```

2. Создаем файл /local/js/custom/audio.js со следующим содержимым:

```javascript
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('Такого элемента на странице не существует');
      }
    });
  }
})
```

3. В файле /local/js/custom/audio.js во второй строке определен массив elements с css селекторами элементов HTML страницы, в которых содержатся ссылки на запись звонков. **Желательно, чтобы это был тег div**. Если на портале используется другой класс или элемент, то необходимо в массив elements добавить нужный селектор. **div. указывать обязательно!**

<figure><img src="/files/YDksBe8Xy5oXjFoso4n7" alt=""><figcaption></figcaption></figure>

На новой версии портала взяли тег **div.crm-timeline\_\_editable-text\_content**:

<figure><img src="/files/TJJhyQrGZgkJGvkGL4gV" alt=""><figcaption></figcaption></figure>

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

<figure><img src="/files/pPelEQi0doWyHd583qBU" alt=""><figcaption></figcaption></figure>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.itgrix.ru/how-to-fix/proslushivanie-zapisi-zvonka-v-korobochnoi-versii-bitriks24.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
