Загрузка записей телефонных звонков из Asterisk



Как и обещал, вторая часть моей реализации взаимодействия с АТС Asterisk из Управления торговлей 11, а именно загрузка записей телефонных разговоров в качестве прикреплённого файла к документу Телефонный звонок.

Эта публикация является продолжением моей публикации Звонок из карточки контакта через Asterisk без внешних компонент

Мне показалось, что делать авторизацию на АТС и загрузку файлов со странички CDR слишком сложно. Поэтому я попросил администратора АТС расшарить папочку с записями и смонтировать её на сервере 1С. Собственно для функционирования обработки этот путь необходимо указать в переменной ПутьКПапке в двух местах: в форме интерактивной загрузки и в модуле обработки в процедуре автоматической загрузки.

ПутьКПапке = "/home/usr1cv8/.1cv8/1C/asterisk/";
ВидКИ = "Внутренний"; // новый вид КИ, который заведён для внутреннего номера 

Т.к. мы не знаем идентификатора звонка АТС, будем искать файл по направлению (out), номеру абонента, внутреннему номеру пользователя (для этого нам нужен вид контактной информации) и точному времени звонка. Вот тут важные моменты: обработка корректно найдёт только те звонки, которые были совершены с помощью расширения из моей предыдущей статьи и время на сервере 1С и АТС должно быть синхронизировано.

А дальше всё просто:

  1. получаем список звонков за последний час;
  2. производим преобразование телефонного номера;
  3. ищем файл по маске “out-номер_абонента-номер_внутренний-дата-время*.wav”;
  4. проверяем размер файла (если 44 байта, то там только заголовок);
  5. загружаем файл, прикрепляем к карточке.

Дата и время создания документа «Телефонный звонок» могут немного отличаться от даты и времени записи, т. к. файл создаётся сразу при инициализации звонка, а документ после того, как пользователь возьмёт трубку, но эта разница не может быть больше 30 сек. (см. настройку ТаймАаут из предыдущей статьи). Чтобы не пропустить такой файл, ищем файл не только по дате документа, но и на минуту вперёд.

Теперь подключаем обработку и указываем в расписании запуск в рабочее время каждые 30 минут. С помощью интерактивной загрузки контролируем полноту и качество.

Обработка проверена на конфигурации 1С:Комплексная автоматизация 2 (2.4.7.151) и должна работать на ERP и Управлении торговлей 11.

P.S. Развернул аналогичную систему на базе ОС Windows, дополнительно встроил конвертацию в mp3, файлы уменьшились в 2-3 раза. Соответственно нужно поставить библиотеку FFmpeg и правильно указать к ней путь:

Команда = "C:Program Filesffmpeginffmpeg -i " + СтрокаСписка.Файл + " -vn -ar 8000 -ac 1 -ab 128K -f mp3 " + ИмяФайлаВМП3;

 

6 Comments

  1. Dnki

    Как говорилось в одном советском фильме: «Я от Моцарта ожидал большего.»

    Reply
  2. soulner

    (1) Согласен, с начала планировал авторизовываться на web-морде Asterisk, и качать файлы со странички cdr, но оказалось, что можно проще.

    Reply
  3. Dnki

    А как создается документ «Телефонный звонок»? Руками?

    Правильная постановка вопроса:

    — автоматически в момент реального звонка от АТС

    — документ получает и сохраняет в себе имя файла

    — при желании прослушать, файл может и нужно скачать с компа АТС во временную папку. Но лучше сразу проиграть с удаленного компа (если это в локальной сети, то папка расшарена, ведь нет проблемы с SMB )

    — а вот «загружаем файл, прикрепляем к карточке» это уже точно лишнее. Я правильно понял — все звуковые файлы хранятся в БД?

    Reply
  4. soulner

    (3) Там немного другой алгоритм:

    1. пользователь нажимает кнопку вызова тут (https://infostart.ru/public/1085994/) или кликает по номеру телефона тут (https://infostart.ru/public/1124492/);

    2. у него начитает звонить телефон;

    3. пользователь снимает трубку, открывается карточка звонка, он пишет тему, разговаривает и если есть возможность, по набирает описание телефонного разговора.

    В этот момент в базе ещё не создан документ «Телефонный звонок», а на АТС ещё не записан звуковой файл.

    4. Звонок заканчивается, пользователь кладёт трубку, файл появился, а документ «Телефонный звонок» ещё нет.

    5. Пользователь дописывает информацию о звонке и сохраняет карточку. В принципе, в этот момент уже можно загрузить файл.

    6. Обработка, запускаемая регламентным заданием загружает файл и прикрепляет к карточке.

    Файлы не хранятся в базе, они, как и все остальные файлы, хранятся в томах на диске.

    Reply
  5. zavyzka

    soulner, ждём обещанную статью про приём входящего звонка)

    Reply
  6. soulner

    (5) Я помню, но всё руки не доходят

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *