Пожалуйста, войдите здесь. Часто задаваемые вопросы О нас
Задайте Ваш вопрос

Trixbox + Flash и Запись разговоров

0

Добрый день!

У меня TrixBox с шлюзами Linksys на внутренние телефоны.

Нарисовалась следующая проблема:

Поступает звонок на рецепшн (тел. 301), создается файл записи разговора и в базу пишется его uniqueid. Далее 301 переводит этот звонок допустим на 315, и вот тут возникает ситуация:

  • если перевод сделан через # , то все работает правильно, соединение устанавливается, создается новый файл записи разговора и в базу записывается новый uniqueid.

  • если перевод сделан через FLASH, то звонок переводится, новый файл записи создается, но в базу записывается uniqueid старый ... и как следствие нет возможности прослушать звонок через вэб-морду.

По логам

...

это создается файл записи при ответе 301 трубки

-- Executing [s@macro-record-enable:23] NoOp("Local/301@from-internal-7f81;2", "Recording enable for 301") in new stack
-- Executing [s@macro-record-enable:24] Set("Local/301@from-internal-7f81;2", "CALLFILENAME=20121008-141805-1349691485.651") in new stack
-- Executing [s@macro-record-enable:25] MixMonitor("Local/301@from-internal-7f81;2", "20121008-141805-1349691485.651.wav,,") in new stack
-- Executing [s@macro-record-enable:26] MacroExit("Local/301@from-internal-7f81;2", "") in new stack

...

жмем Flash

 -- Started music on hold, class 'default', on Local/301@from-internal-7f81;2

...

набираем 315 трубку

== Using SIP RTP TOS bits 184
== Using SIP RTP CoS mark 5
== Using SIP VRTP TOS bits 136
== Using SIP VRTP CoS mark 6

 -- Executing [315@from-internal:1] Macro("SIP/301-00000147", "exten-vm,315,315") in new stack
 -- Executing [s@macro-exten-vm:1] Macro("SIP/301-00000147", "user-callerid") in new stack
-- Executing [s@macro-user-callerid:1] Set("SIP/301-00000147", "AMPUSER=301") in new stack
-- Executing [s@macro-user-callerid:2] GotoIf("SIP/301-00000147", "0?report") in new stack
-- Executing [s@macro-user-callerid:3] ExecIf("SIP/301-00000147", "1?Set(REALCALLERIDNUM=301)") in new stack
-- Executing [s@macro-user-callerid:4] Set("SIP/301-00000147", "AMPUSER=301") in new stack
-- Executing [s@macro-user-callerid:5] Set("SIP/301-00000147", "AMPUSERCIDNAME=301") in new stack
-- Executing [s@macro-user-callerid:6] GotoIf("SIP/301-00000147", "0?report") in new stack
-- Executing [s@macro-user-callerid:7] Set("SIP/301-00000147", "AMPUSERCID=301") in new stack
-- Executing [s@macro-user-callerid:8] Set("SIP/301-00000147", "CALLERID(all)="301" <301>") in new stack
-- Executing [s@macro-user-callerid:9] ExecIf("SIP/301-00000147", "0?Set(CHANNEL(language)=)") in new stack
-- Executing [s@macro-user-callerid:10] GotoIf("SIP/301-00000147", "0?continue") in new stack
-- Executing [s@macro-user-callerid:11] Set("SIP/301-00000147", "__TTL=64") in new stack
-- Executing [s@macro-user-callerid:12] GotoIf("SIP/301-00000147", "1?continue") in new stack
-- Goto (macro-user-callerid,s,19)
-- Executing [s@macro-user-callerid:19] NoOp("SIP/301-00000147", "Using CallerID "301" <301>") in new stack
-- Executing [s@macro-exten-vm:2] Set("SIP/301-00000147", "RingGroupMethod=none") in new stack
-- Executing [s@macro-exten-vm:3] Set("SIP/301-00000147", "VMBOX=315") in new stack
-- Executing [s@macro-exten-vm:4] Set("SIP/301-00000147", "EXTTOCALL=315") in new stack
-- Executing [s@macro-exten-vm:5] Set("SIP/301-00000147", "CFUEXT=") in new stack
-- Executing [s@macro-exten-vm:6] Set("SIP/301-00000147", "CFBEXT=") in new stack
-- Executing [s@macro-exten-vm:7] Set("SIP/301-00000147", "RT=180") in new stack
-- Executing [s@macro-exten-vm:8] Macro("SIP/301-00000147", "record-enable,315,IN") in new stack
-- Executing [s@macro-record-enable:1] NoOp("SIP/301-00000147", "1349691500.653") in new stack
-- Executing [s@macro-record-enable:2] GotoIf("SIP/301-00000147", "1?:check") in new stack
-- Executing [s@macro-record-enable:3] ResetCDR("SIP/301-00000147", "w") in new stack
-- Executing [s@macro-record-enable:4] StopMixMonitor("SIP/301-00000147", "") in new stack
-- Executing [s@macro-record-enable:5] ExecIf("SIP/301-00000147", "0,MacroExit,") in new stack
-- Executing [s@macro-record-enable:6] GotoIf("SIP/301-00000147", "0?Group:OUT") in new stack
-- Goto (macro-record-enable,s,17)
-- Executing [s@macro-record-enable:17] GotoIf("SIP/301-00000147", "1?IN") in new stack
-- Goto (macro-record-enable,s,22)
-- Executing [s@macro-record-enable:22] ExecIf("SIP/301-00000147", "0,MacroExit,") in new stack
-- Executing [s@macro-record-enable:23] NoOp("SIP/301-00000147", "Recording enable for 315") in new stack
-- Executing [s@macro-record-enable:24] Set("SIP/301-00000147", "CALLFILENAME=20121008-141820-1349691500.653") in new stack
-- Executing [s@macro-record-enable:25] MixMonitor("SIP/301-00000147", "20121008-141820-1349691500.653.wav,,") in new stack
-- Executing [s@macro-record-enable:26] MacroExit("SIP/301-00000147", "") in new stack
-- Executing [s@macro-exten-vm:9] Macro("SIP/301-00000147", "dial,180,tr,315") in new stack
-- Executing [s@macro-dial:1] GotoIf("SIP/301-00000147", "1?dial") in new stack
== Begin MixMonitor Recording SIP/301-00000147
-- Goto (macro-dial,s,3)
-- Executing [s@macro-dial:3] AGI("SIP/301-00000147", "dialparties.agi") in new stack
-- Launched AGI Script /var/lib/asterisk/agi-bin/dialparties.agi
trixbox1*CLI> 
dialparties.agi: Starting New Dialparties.agi
dialparties.agi: Caller ID name is '301' number is '301'
     > dialparties.agi: USE_CONFIRMATION:  'FALSE'
   > dialparties.agi: RINGGROUP_INDEX:   ''
dialparties.agi: Methodology of ring is  'none'
-- dialparties.agi: Added extension 315 to extension map
-- dialparties.agi: Extension 315 cf is disabled
-- dialparties.agi: Extension 315 do not disturb is disabled
   > dialparties.agi: extnum 315 has:  cw: 1; hascfb: 0 [] hascfu: 0 []
dialparties.agi: EXTENSION_STATE: 0 (NOT_INUSE)
-- dialparties.agi: dbset CALLTRACE/315 to 301
-- dialparties.agi: Filtered ARG3: 315
-- <SIP/301-00000147>AGI Script dialparties.agi completed, returning 0
-- Executing [s@macro-dial:7] Dial("SIP/301-00000147", "SIP/315,180,tr") in new stack
== Using SIP RTP TOS bits 184
== Using SIP RTP CoS mark 5
== Using SIP VRTP TOS bits 136
== Using SIP VRTP CoS mark 6
-- Called 315
-- SIP/315-00000148 is ringing

как я вижу в логе оба файла создались нормально, НО в базу по звонку между 301 и 315 попала запись:

2012-10-08 14:18:23 315 from-internal Local/301@from-internal-7f81;2 SIP/315-00000148 Dial SIP/315,180,tr 86 84 ANSWERED 3 1349691485.651

куда копнуть? почему в БД пишется старый uniqueid и другое время файла?

удалить закрыть спам изменить тег редактировать

спросил 2012-10-08 14:46:09 +0400

wellus Gravatar wellus
49 19 9

обновил 2012-10-08 15:33:57 +0400

Comments

1

Тут ничего не сделать, переводите через *2.

zzuz ( 2012-10-08 18:36:00 +0400 )редактировать

Вначале и переводили, потом методом тыка обнаружили что flash работает, и перешли на него ))) и это как Т-вирус распространилось на все офисы... Тут вопрос на "характер" выяснить, почему Asterisk файл создает, а в БД записывает какую-то хрень...

wellus ( 2012-10-09 10:09:34 +0400 )редактировать

Ну расскажу я Вам. В чем смысл? Изменить Вы это всё равно не сможете. Переучивайте персонал.

zzuz ( 2012-10-09 12:57:59 +0400 )редактировать

Добрый день! Переучил персонал, но проблема осталась.

Причем проблема с записью времени создания файла. В БД пишется время файла одно, а в имени файла записи разговора - другое, отличие в несколько секунд...

При чем выявить закономерность почему у одних звонков все нормально, а у других происходит этот коллапс - не могу...

wellus ( 2013-02-15 17:27:47 +0400 )редактировать

"если перевод сделан через # , то все работает правильно, соединение устанавливается, создается новый файл записи разговора и в базу записывается новый uniqueid."

zzuz ( 2013-02-15 17:41:28 +0400 )редактировать

файлы в freepbx ищутся по uniqueid . Время попадания в штатный cdr и время создания строки для самой записи после ответа на звонок может отличаться и это нормально.

zzuz ( 2013-02-15 17:43:33 +0400 )редактировать

только веб-морда триксбоксовская, ищет записи разговоров не только по uniqueid, но и по calldate... нет ни где правленного php-файла от вебморды, чтоб убрать сверку по calldate?

wellus ( 2013-02-15 17:54:31 +0400 )редактировать

файлы в freepbx ищутся ТОЛЬКО по uniqueid. и по calldate в базе. остальные параметры для поиска кроме uniqueid не уникальны .

zzuz ( 2013-02-15 18:03:08 +0400 )редактировать

Почему тогда не находятся файлы у которых calldate в имени, отличается от calldate в базе? Я думаю, что для прослушки файла веб морда сверяет и uniqueid и calldate в имени файла.

wellus ( 2013-02-16 11:53:57 +0400 )редактировать

вот создается уникальный ключ для поиска в файле call.monitor: $uniquefilekey = $calldate_key . "-" . $uniqueid;

wellus ( 2013-02-16 11:54:46 +0400 )редактировать

вот я так понимаю поиск по этому ключу: arraypush($checkfiles,$path . $uniquefilekey . ".wav");

wellus ( 2013-02-16 11:55:35 +0400 )редактировать

вот как записать в $uniquefilekey чтоб они искал *-uniqueid, где * - любые символы и любое количество этих символов, чтоб потом в arraypush($checkfiles,$path . $uniquefilekey . ".wav"); получился шаблон поиска *-uniqueid.wav ... моих познаний в php не хватает.

wellus ( 2013-02-16 12:00:00 +0400 )редактировать

Ну я например Вам не верю , что файлы зарегистрированные по унику в БД не находятся.

zzuz ( 2013-02-16 17:25:38 +0400 )редактировать

Файлы есть. Вебморда ищет их в каталоге по uniqueid и по calldate. И когда в имени файла calldate отличается от calldate, записанного в БД, при том что uniqueid совпадает, у нее (вебморды) получается другое имя файла. Соответственно она ни чего не находит в каталоге.

wellus ( 2013-02-16 17:55:32 +0400 )редактировать

Ну например. в БД есть запись у которой calldate=20130202-140202 и uniqueid=14527983.2115 , а в каталоге лежит файл с временем отличным в несколько секунд 20130202-140205-14527983.2115.wav. Вебморда ищет файл 20130202-140202-14527983.2115.wav и не находит. Я хочу чтоб она искала только на основании uniqueid *-14527983.2115.wav

wellus ( 2013-02-16 17:58:57 +0400 )редактировать

Будьте первым, кто ответит на этот вопрос!

Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!
[скрыть предварительный просмотр]

Закладки и информация

Добавить закладку

подписаться на rss ленту новостей

Статистика

Задан: 2012-10-08 14:46:09 +0400

Просмотрен: 202 раз

Обновлен: Oct 08 '12

Похожие вопросы:

Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией GNU GPL.