Вход | Регистрация
Вы здесь: Главная / Форум / Главный форум по Asterisk / TrixBox, Elastix, FreePbx / recordingcheck??

recordingcheck??

Что это за скрипт такой?
1 23>
Откуда: Odessa
Сообщений: 90

recordingcheck??

*CLI>
-- Launched AGI Script /var/lib/asterisk/agi-bin/recordingcheck
-- <SIP/10101-b7712738>AGI Script recordingcheck completed, returning -1

после этого идет
-- Executing [h@from-internal:1] Macro("SIP/10101-09eb30b8", "hangupcall") in new stack

когда возвращает 0 то все нормально

Насколько я понял если астериск(триксбокс) не может записать звонок в базу отчетов то выкидывает звонок?
Как это лечить?
2009-12-12 21:24

Сообщений: 6521

Re: recordingcheck??

A что такое нормально?
Я что такое не нормально?

Несовершённые звонки нет смысла записывать в CDR, например абонент 10101 набрал номер, послушал вызов, и положил трубку. Для такого завершения в скриптах стоит функция - NoCDR, чтобы не записывать ненужную информацию в CDR. Поэтому возвращает -1.

А /var/lib/asterisk/agi-bin/recordingcheck проверяет вообще то надо записывать разговор или нет.
2009-12-12 21:35

Откуда: Odessa
Сообщений: 90

Re: recordingcheck??

Так происходит только при начале инициализации звонка!

== 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 [10101@from-internal:1] Set("SIP/10101-b7c11128", "MOHCLASS=none") in new stack
-- Executing [10101@from-internal:2] Macro("SIP/10101-b7c11128", "user-callerid,SKIPTTL,") in new stack
-- Executing [s@macro-user-callerid:1] Set("SIP/10101-b7c11128", "AMPUSER=9198209952") in new stack
-- Executing [s@macro-user-callerid:2] GotoIf("SIP/10101-b7c11128", "0?report") in new stack
-- Executing [s@macro-user-callerid:3] ExecIf("SIP/10101-b7c11128", "1?Set(REALCALLERIDNUM=9198209952)") in new stack
-- Executing [s@macro-user-callerid:4] Set("SIP/10101-b7c11128", "AMPUSER=") in new stack
-- Executing [s@macro-user-callerid:5] Set("SIP/10101-b7c11128", "AMPUSERCIDNAME=") in new stack
-- Executing [s@macro-user-callerid:6] GotoIf("SIP/10101-b7c11128", "1?report") in new stack
-- Goto (macro-user-callerid,s,11)
-- Executing [s@macro-user-callerid:11] GotoIf("SIP/10101-b7c11128", "1?continue") in new stack
-- Goto (macro-user-callerid,s,20)
-- Executing [s@macro-user-callerid:20] NoOp("SIP/10101-b7c11128", "Using CallerID "" <9198209952>") in new stack
-- Executing [1010@from-internal:3] Set("SIP/10101-b7c11128", "_NODEST=") in new stack
-- Executing [1010@from-internal:4] Macro("SIP/10101-b7c11128", "record-enable,,OUT,") in new stack
-- Executing [s@macro-record-enable:1] GotoIf("SIP/10101-b7c11128", "1?check") in new stack
-- Goto (macro-record-enable,s,4)
-- Executing [s@macro-record-enable:4] AGI("SIP/10101-b7c11128", "recordingcheck,20091212-204029,1260643229.154") in new stack
-- Launched AGI Script /var/lib/asterisk/agi-bin/recordingcheck
-- <SIP/10101-b7c11128>AGI Script recordingcheck completed, returning -1
-- Executing [h@from-internal:1] Macro("SIP/10101-b7c11128", "hangupcall") in new stack
-- Executing [s@macro-hangupcall:1] ResetCDR("SIP/10101-b7c11128", "vw") in new stack
-- Executing [s@macro-hangupcall:2] NoCDR("SIP/10101-b7c11128", "") in new stack
-- Executing [s@macro-hangupcall:3] GotoIf("SIP/10101-b7c11128", "1?skiprg") in new stack
-- Goto (macro-hangupcall,s,6)
-- Executing [s@macro-hangupcall:6] GotoIf("SIP/10101-b7c11128", "1?skipblkvm") in new stack
2009-12-12 21:47

Сообщений: 6521

Re: recordingcheck??

Всё видно по шагам: В контексте from-internal на 4-м шаге макрос определяет нужна ли запись разговора
record-enable,,OUT,
Макрос macro-record-enable на первом шаге macro-record-enable:1 проверяет - стоит птичка? GotoIf("SIP/10101-b7c11128", "1?check")
тогда пошёл на макрос записи Goto (macro-record-enable,s,4) на 4-й шаг
где исполняет /var/lib/asterisk/agi-bin/recordingcheck куда передаются аргументы
20091212-204029 и 1260643229.154

Я открыл и посмотрел,
case "IN":

$exten = $agi->get_variable("ARG1");
$options = $agi->database_get("AMPUSER","{$exten['data']}/recording");

if ($options["result"] == "0") {
$agi->verbose("No AMPUSER db entry for ".$exten["data"].". Not recording");
exit(1);
}
//explode recording vars
$recording = explode("|",$options["data"]);
$recout = substr($recording[0],4);
$recin = substr($recording[1],3);

if($recin == "Always") {
$agi->verbose("Inbound recording enabled.");
$agi->verbose("CALLFILENAME={$timestamp}-{$uniqueid}");
$agi->set_variable("CALLFILENAME","{$timestamp}-{$uniqueid}");
$agi->set_priority('record');
exit(0);
} else {
$agi->verbose("Inbound recording not enabled");
exit(1);
}

Думаю, что
1) уже надо вспоминать что сломал;
2) установив вербозность побольше можно увидеть сообщения детальней типа "Inbound recording not enabled":
3) даже глянув в /var/log/asterisk/full можно почитать побольше, чем в командной строке.

В общем - дело усидчивости и терпения.
2009-12-12 22:28

Откуда: Odessa
Сообщений: 90

Re: recordingcheck??

Понял, возможно правильный ответ этот

ded:

1) уже надо вспоминать что сломал;

Буду читать в логах и скрипте.
Как всегда спасибо-гуру!
2009-12-12 22:57

Откуда: Odessa
Сообщений: 90

Re: recordingcheck??

Просмотрел все внимательно - в этой стороне ничего не ломал :)
причина No AMPUSER db entry
нет AMPUSERа в базе AstDb


А AMPUSER или не определен, он пустой (заходит с наружного транка)
а потом выскакивают ошибки

Как обойти это ограничение?
"Отредактировать" recordingcheck, изменив

//if ($options["result"] == "0") {

if ($options["result"] == "1") {

$agi->verbose("No AMPUSER db entry for ".$exten["data"].". Not recording");

exit(1);

}
есть-ли более корректный способ, чтоб не лезть руками в код скриптов?

На забугорном форуме писали (толково никто не ответил)
So when I read recordingcheck.php I comment the "exit(1)" in the if() where the AMPUSER is not found. This didn't work.

I would appreciate if you could tell me where this "AMPUSER" is stored [ it says in a "db" ], where? How can I add it manually? Or even better, how can I skip this checking?
2009-12-13 10:40

Avatara of switch
Откуда: Уфа
Сообщений: 5856

Re: recordingcheck??

вы вручную абонента завели в конфигурационных файлах завели?
http://www.lynks.ru - Решения телефонии, мини-АТС, VoIP на основе Trixbox и Asterisk
2009-12-13 10:58

Откуда: Odessa
Сообщений: 90

Re: recordingcheck??

нет, не заводил
вот
-- Executing [s@macro-user-callerid:1]Set("SIP/10101-b7c004e8", "AMPUSER=3937") in new stack
а затем на шаге
-- Executing [s@macro-user-callerid:4] Set("SIP/10101-b7c004e8", "AMPUSER=") in new stack

приходит с внешнего транка а потом пропадает значение
2009-12-13 11:04

Avatara of switch
Откуда: Уфа
Сообщений: 5856

Re: recordingcheck??

внешний транк в какой контекст приходит?
http://www.lynks.ru - Решения телефонии, мини-АТС, VoIP на основе Trixbox и Asterisk
2009-12-13 11:11

Откуда: Odessa
Сообщений: 90

Re: recordingcheck??

пускаю в
context=from-internal
чтоб в одном контексте был с внутренними транками
2009-12-13 11:29

1 23>
Добавить страницу в закладки:  Delicious Google Slashdot Yahoo Yandex.ru Reddit Digg Technorati Bobrdobr.ru Newsland.ru Smi2.ru Rumarkz.ru Vaau.ru Memori.ru Rucity.com Moemesto.ru News2.ru Mister-Wong.ru Myscoop.ru 100zakladok.ru