К содержимому
Интеграции

Интеграция с обработкой записей

Обновлено

Получить локальный MP3

Для серверной интеграции с обработкой или расшифровкой записей предусмотрен метод:

crmEwcrmuisPlugin::getRecordFile(int $call_id): ?string

$call_id — ID звонка в CRM, а не идентификатор сессии UIS. Метод возвращает абсолютный путь к локальному файлу или null, если запись недоступна. Если запись допускает загрузку по запросу и файла ещё нет, метод пытается скачать его синхронно.

Пример в PHP-коде Webasyst после загрузки включённого плагина:

$path = crmEwcrmuisPlugin::getRecordFile((int) $call_id);
if ($path !== null) {
    // Передайте локальный MP3 своей обработке.
}

Сам метод не проверяет права пользователя. Используйте его в доверенном серверном коде. Если результат выдаётся пользователю через собственный контроллер, сначала проверьте доступ к звонку средствами CRM.

Загрузка по запросу допускается для состояний available и downloaded, а для deleted — только в режиме «Скачивать только при прослушивании или запросе». Наличие строки pending, missing или error само по себе не позволяет методу принудительно скачать файл.

Событие после скачивания

После успешного сохранения файла плагин вызывает событие приложения CRM:

crm.ewcrmuis_record_downloaded

В конфигурации обработчиков плагина CRM используется имя ewcrmuis_record_downloaded. Параметры:

Параметр Тип Значение
call_id int ID звонка CRM
record_id int ID строки записи в хранилище плагина
path string Абсолютный путь к сохранённому MP3

Пример фрагмента handlers вашего плагина CRM:

'handlers' => array(
    'ewcrmuis_record_downloaded' => 'recordDownloadedHandler',
),

Пример метода обработчика в классе вашего плагина:

public function recordDownloadedHandler(&$params)
{
    $call_id = (int) $params['call_id'];
    $record_id = (int) $params['record_id'];
    $path = (string) $params['path'];
    // Поставьте файл в собственную очередь обработки.
}

Событие вызывается после каждого успешного скачивания, в том числе повторного. Получение уже существующего локального файла через getRecordFile() без скачивания событие не вызывает. Учитывайте повторы при реализации обработчика.

Ссылка через CRM

Телефонный класс плагина реализует стандартный контракт:

getRecordUrl($plugin_call_id, $plugin_record_id)

Он используется CRM, в том числе методом API CRM crm.call.recordUrl. В реализации плагина поиск идёт по $plugin_record_id, результат — сохранённая ссылка на файл в UIS, либо null. Это не ссылка на локальный MP3 и не действие скачивания. Срок доступности такой ссылки зависит от UIS.

Встроенный проигрыватель CRM обращается к контроллеру плагина, который проверяет права на звонок и отдаёт локальный файл, при необходимости предварительно скачивая его. Поддерживается выдача диапазонов байтов.