VIDEOCHAT  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

FreePBX и MixMonitor, не получается получить набираемый номе

Обо всем касательно FreePBX, MetPBX, TrixBox, Elastix, AstPBX и всех других дистрибутивов

Модераторы: april22, Zavr2008

AlexN
Сообщения: 4
Зарегистрирован: 02 окт 2011, 15:46

FreePBX и MixMonitor, не получается получить набираемый номе

Сообщение AlexN »

Имеется FreePBX версии 2.9.0.7
Поставлена задача записывать звонки из колл-центра к клиентам. При этом в формируемом имени файла должны быть номера и оператора, который звонил и абонента, куда звонил оператор.

Номер оператора есть, а вот номера абонента некак найти не могу. Пробовал проверять разные переменные: ARG1-3 выдают либо CID, либо направление звонка (в моем случае OUT). Переменная EXTEN (описанная во многих мануалах) выдает не номер абонента, а наименовение экстеншена (в моем случае - s).

Подскажите, как победить ситуацию и получить правильно сформированное имя файла?

Звонки входящие пишутся с нормальными именами.
ded
Сообщения: 15625
Зарегистрирован: 26 авг 2010, 19:00

Re: FreePBX и MixMonitor, не получается получить набираемый

Сообщение ded »

Точнее - в формируемом имени файла должны быть номера и оператора, который звонил и абонента, куда оператор перевёл этот звонок.
Вам нужно расширенная обработка CDR для Call-center, в простом FreePBX CDR этого нет.

Попробуйте ставить птичку "писать входящие" на экстеншне, куда оператор перевёл звонок, увидите как FreePBX формирует CDR запись совершённого звонка, там наверняка будет переменная - номер конечного абонента.
AlexN
Сообщения: 4
Зарегистрирован: 02 окт 2011, 15:46

Re: FreePBX и MixMonitor, не получается получить набираемый

Сообщение AlexN »

Точнее - в формируемом имени файла должны быть номера и оператора, который звонил и абонента, куда оператор перевёл этот звонок.
Не так. Попробую проще объяснить.
Сидит оператор, который по выданному ему списку номеров обзванивает клиентов и задает стандарные вопросы. Клиент отвечат. Оператор говорит спасибо и кладет трубку. Т.е. ничто и никуда не переводится. Именно только оператор - клиент.

Если смотреть дебаг СИПа, уже после того, как скриптом назначается имя файла, появляются переменные типа OUTNUM и DIAL_NUMBER, но ввиду того,что они появляются после назначения имени файла их использование тоже не возможно.
ded
Сообщения: 15625
Зарегистрирован: 26 авг 2010, 19:00

Re: FreePBX и MixMonitor, не получается получить набираемый

Сообщение ded »

На экстеншне оператора поставить птичку - "Писать исходящие"
Смотреть в CDR - совершённый разговор откладывается конкретным Source (номер оператора) - Destination (номер абонента, с котрым состоялся разговор).
Vlad1983
Сообщения: 4251
Зарегистрирован: 09 авг 2011, 11:51

Re: FreePBX и MixMonitor, не получается получить набираемый

Сообщение Vlad1983 »

варианты:
1. поправив несколько строк в php скриптах FreePBX, но при следующем обновлении все снесется.
2. написать custom диалплан для исходящих.
3. выкинуть FreePBX и сразу писать как надо.
ЛС: @rostel
AlexN
Сообщения: 4
Зарегистрирован: 02 окт 2011, 15:46

Re: FreePBX и MixMonitor, не получается получить набираемый

Сообщение AlexN »

На экстеншне оператора поставить птичку - "Писать исходящие"
Это естественно. Иначе файла записи вообще нет.
Смотреть в CDR - совершённый разговор откладывается конкретным Source (номер оператора) - Destination (номер абонента, с котрым состоялся разговор).
Если смотреть в статистику совершенных звонокв - там все нормально - и номер звонящего и номер набираемый. Только вот понять бы, какую переменную подставить MixMonitor.
поправив несколько строк в php скриптах FreePBX, но при следующем обновлении все снесется.
Именно так и делаю. Но опять же - перепробовал кучу переменных, найденных в том скрипте. Ни одна не отдает набираемый номер.

Дебаг для понимания ситуации:
Тут звонок уходит в транк (контекст from-internal) между астериском и Cisco Call Manager.
== Using SIP RTP CoS mark 5
-- Executing [2514@from-internal:1] Macro("SIP/2019-00000b77", "user-callerid,LIMIT,") in new stack
-- Executing [s@macro-user-callerid:1] Set("SIP/2019-00000b77", "AMPUSER=2019") in new stack
-- Executing [s@macro-user-callerid:2] GotoIf("SIP/2019-00000b77", "0?report") in new stack
-- Executing [s@macro-user-callerid:3] ExecIf("SIP/2019-00000b77", "1?Set(REALCALLERIDNUM=2019)") in new stack
-- Executing [s@macro-user-callerid:4] Set("SIP/2019-00000b77", "AMPUSER=2019") in new stack
-- Executing [s@macro-user-callerid:5] Set("SIP/2019-00000b77", "AMPUSERCIDNAME=2019") in new stack
-- Executing [s@macro-user-callerid:6] GotoIf("SIP/2019-00000b77", "0?report") in new stack
-- Executing [s@macro-user-callerid:7] Set("SIP/2019-00000b77", "AMPUSERCID=2019") in new stack
-- Executing [s@macro-user-callerid:8] Set("SIP/2019-00000b77", "CALLERID(all)="2019" <2019>") in new stack
-- Executing [s@macro-user-callerid:9] GotoIf("SIP/2019-00000b77", "0?limit") in new stack
-- Executing [s@macro-user-callerid:10] ExecIf("SIP/2019-00000b77", "1?Set(GROUP(concurrency_limit)=2019)") in new stack
-- Executing [s@macro-user-callerid:11] GosubIf("SIP/2019-00000b77", "7?sub-ccss,s,1(from-internal,2514)") in new stack
-- Executing [s@sub-ccss:1] ExecIf("SIP/2019-00000b77", "0?Return()") in new stack
-- Executing [s@sub-ccss:2] Set("SIP/2019-00000b77", "CCSS_SETUP=TRUE") in new stack
-- Executing [s@sub-ccss:3] GosubIf("SIP/2019-00000b77", "0?monitor_config,1(from-internal,2514):monitor_default,1(from-internal,2514)") in new stack
-- Executing [monitor_default@sub-ccss:1] GotoIf("SIP/2019-00000b77", "0?is_exten") in new stack
-- Executing [monitor_default@sub-ccss:2] StackPop("SIP/2019-00000b77", "") in new stack
-- Executing [monitor_default@sub-ccss:3] Return("SIP/2019-00000b77", "FALSE") in new stack
-- Executing [s@macro-user-callerid:12] ExecIf("SIP/2019-00000b77", "0?Set(CHANNEL(language)=)") in new stack
-- Executing [s@macro-user-callerid:13] GotoIf("SIP/2019-00000b77", "1?continue") in new stack
-- Goto (macro-user-callerid,s,26)
-- Executing [s@macro-user-callerid:26] Set("SIP/2019-00000b77", "CALLERID(number)=2019") in new stack
-- Executing [s@macro-user-callerid:27] Set("SIP/2019-00000b77", "CALLERID(name)=2019") in new stack
-- Executing [s@macro-user-callerid:28] Set("SIP/2019-00000b77", "CHANNEL(language)=ru") in new stack
-- Executing [2514@from-internal:2] Set("SIP/2019-00000b77", "MOHCLASS=default") in new stack
-- Executing [2514@from-internal:3] Set("SIP/2019-00000b77", "_NODEST=") in new stack
-- Executing [2514@from-internal:4] Macro("SIP/2019-00000b77", "record-enable,2019,OUT,") in new stack
-- Executing [s@macro-record-enable:1] GotoIf("SIP/2019-00000b77", "1?check") in new stack
-- Goto (macro-record-enable,s,4)
-- Executing [s@macro-record-enable:4] ExecIf("SIP/2019-00000b77", "0?MacroExit()") in new stack
-- Executing [s@macro-record-enable:5] GotoIf("SIP/2019-00000b77", "0?Group:OUT") in new stack
-- Goto (macro-record-enable,s,14)
-- Executing [s@macro-record-enable:14] GotoIf("SIP/2019-00000b77", "0?IN") in new stack
-- Executing [s@macro-record-enable:15] ExecIf("SIP/2019-00000b77", "0?MacroExit()") in new stack
-- Executing [s@macro-record-enable:16] Set("SIP/2019-00000b77", "CALLFILENAME=2019___2011-09-30_21-06") in new stack
-- Executing [s@macro-record-enable:17] Goto("SIP/2019-00000b77", "record") in new stack
-- Goto (macro-record-enable,s,20)
[2011-09-30 21:06:48] WARNING[4057]: func_strings.c:1288 function_eval: EVAL requires an argument: EVAL(<string>)
-- Executing [s@macro-record-enable:20] MixMonitor("SIP/2019-00000b77", "2019___2011-09-30_21-06.wav,,") in new stack
-- Executing [s@macro-record-enable:21] MacroExit("SIP/2019-00000b77", "") in new stack
-- Executing [2514@from-internal:5] Macro("SIP/2019-00000b77", "dialout-trunk,1,2514,") in new stack
-- Executing [s@macro-dialout-trunk:1] Set("SIP/2019-00000b77", "DIAL_TRUNK=1") in new stack
-- Executing [s@macro-dialout-trunk:2] GosubIf("SIP/2019-00000b77", "0?sub-pincheck,s,1") in new stack
-- Executing [s@macro-dialout-trunk:3] GotoIf("SIP/2019-00000b77", "0?disabletrunk,1") in new stack
-- Executing [s@macro-dialout-trunk:4] Set("SIP/2019-00000b77", "DIAL_NUMBER=2514") in new stack
-- Executing [s@macro-dialout-trunk:5] Set("SIP/2019-00000b77", "DIAL_TRUNK_OPTIONS=tr") in new stack
-- Executing [s@macro-dialout-trunk:6] Set("SIP/2019-00000b77", "OUTBOUND_GROUP=OUT_1") in new stack
-- Executing [s@macro-dialout-trunk:7] GotoIf("SIP/2019-00000b77", "1?nomax") in new stack
-- Goto (macro-dialout-trunk,s,9)
-- Executing [s@macro-dialout-trunk:9] GotoIf("SIP/2019-00000b77", "0?skipoutcid") in new stack
-- Executing [s@macro-dialout-trunk:10] Set("SIP/2019-00000b77", "DIAL_TRUNK_OPTIONS=") in new stack
-- Executing [s@macro-dialout-trunk:11] Macro("SIP/2019-00000b77", "outbound-callerid,1") in new stack
-- Executing [s@macro-outbound-callerid:1] ExecIf("SIP/2019-00000b77", "0?Set(CALLERPRES()=)") in new stack
-- Executing [s@macro-outbound-callerid:2] ExecIf("SIP/2019-00000b77", "0?Set(REALCALLERIDNUM=2019)") in new stack
-- Executing [s@macro-outbound-callerid:3] GotoIf("SIP/2019-00000b77", "1?normcid") in new stack
-- Goto (macro-outbound-callerid,s,6)
-- Executing [s@macro-outbound-callerid:6] Set("SIP/2019-00000b77", "USEROUTCID=") in new stack
-- Executing [s@macro-outbound-callerid:7] Set("SIP/2019-00000b77", "EMERGENCYCID=") in new stack
-- Executing [s@macro-outbound-callerid:8] Set("SIP/2019-00000b77", "TRUNKOUTCID=") in new stack
-- Executing [s@macro-outbound-callerid:9] GotoIf("SIP/2019-00000b77", "1?trunkcid") in new stack
-- Goto (macro-outbound-callerid,s,12)
-- Executing [s@macro-outbound-callerid:12] ExecIf("SIP/2019-00000b77", "0?Set(CALLERID(all)=)") in new stack
-- Executing [s@macro-outbound-callerid:13] ExecIf("SIP/2019-00000b77", "0?Set(CALLERID(all)=)") in new stack
-- Executing [s@macro-outbound-callerid:14] ExecIf("SIP/2019-00000b77", "0?Set(CALLERID(all)=)") in new stack
-- Executing [s@macro-outbound-callerid:15] ExecIf("SIP/2019-00000b77", "0?Set(CALLERPRES()=prohib_passed_screen)") in new stack
-- Executing [s@macro-dialout-trunk:12] GosubIf("SIP/2019-00000b77", "0?sub-flp-1,s,1") in new stack
-- Executing [s@macro-dialout-trunk:13] Set("SIP/2019-00000b77", "OUTNUM=2514") in new stack
-- Executing [s@macro-dialout-trunk:14] Set("SIP/2019-00000b77", "custom=SIP/GKSI-TEST_copy_2") in new stack
-- Executing [s@macro-dialout-trunk:15] ExecIf("SIP/2019-00000b77", "0?Set(DIAL_TRUNK_OPTIONS=M(setmusic^default))") in new stack
-- Executing [s@macro-dialout-trunk:16] ExecIf("SIP/2019-00000b77", "0?Set(DIAL_TRUNK_OPTIONS=M(confirm))") in new stack
-- Executing [s@macro-dialout-trunk:17] Macro("SIP/2019-00000b77", "dialout-trunk-predial-hook,") in new stack
-- Executing [s@macro-dialout-trunk-predial-hook:1] MacroExit("SIP/2019-00000b77", "") in new stack
-- Executing [s@macro-dialout-trunk:18] GotoIf("SIP/2019-00000b77", "0?bypass,1") in new stack
-- Executing [s@macro-dialout-trunk:19] GotoIf("SIP/2019-00000b77", "0?customtrunk") in new stack
-- Executing [s@macro-dialout-trunk:20] Dial("SIP/2019-00000b77", "SIP/GKSI-TEST_copy_2/2514,300,") in new stack
== Using SIP RTP TOS bits 184
ded
Сообщения: 15625
Зарегистрирован: 26 авг 2010, 19:00

Re: FreePBX и MixMonitor, не получается получить набираемый

Сообщение ded »

Вы же видите последовательность выполнения команд? Имя файла записи формируется на 20-м шаге макроса macro-record-enable,

2011-09-30 21:06:48] WARNING[4057]: func_strings.c:1288 function_eval: EVAL requires an argument: EVAL(<string>)
-- Executing [s@macro-record-enable:20] MixMonitor("SIP/2019-00000b77", "2019___2011-09-30_21-06.wav,,") in new stack
в этот момент ещё нет значения в переменной DIAL_NUMBER - это позже
-- Executing [s@macro-dialout-trunk:4] Set("SIP/2019-00000b77", "DIAL_NUMBER=2514") in new stack
Также и OTNUM.

Пробуйте вставить NoOp(Destination is ${DNID})
Если будет искомый, то вставляйте в своё имя файла. Вообще вопрос лежал в области изучения документации.
http://asterisk.ru/knowledgebase/Asterisk+Variables
Vlad1983
Сообщения: 4251
Зарегистрирован: 09 авг 2011, 11:51

Re: FreePBX и MixMonitor, не получается получить набираемый

Сообщение Vlad1983 »

в макрос dialout-trunk вторым параметром передается какой номер набран
-- Executing [2514@from-internal:5] Macro("SIP/2019-00000b77", "dialout-trunk,1,2514,") in new stack

надо передать его же в макрос record-enable просто добавив третьим параметром при вызове

потом учесть переданный параметр (в макросе его значение будет в ${ARG3}) при формировании имени файла

делается это правкой ровно 2 строк в скриптах FreePBX
ЛС: @rostel
AlexN
Сообщения: 4
Зарегистрирован: 02 окт 2011, 15:46

Re: FreePBX и MixMonitor, не получается получить набираемый

Сообщение AlexN »

надо передать его же в макрос record-enable просто добавив третьим параметром при вызове

потом учесть переданный параметр (в макросе его значение будет в ${ARG3}) при формировании имени файла
Спасибо, помогло! :D
Da99eR
Сообщения: 1
Зарегистрирован: 06 окт 2011, 10:58
Контактная информация:

Re: FreePBX и MixMonitor, не получается получить набираемый

Сообщение Da99eR »

Столкнулся с такой же проблемой, точнее нуждой
AlexN, можете подробнее написать какой код куда дописали?
Ответить
© 2008 — 2024 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH