recordingcheck??
Что это за скрипт такой?
Откуда: 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 то все нормально
Насколько я понял если астериск(триксбокс) не может записать звонок в базу отчетов то выкидывает звонок?
Как это лечить?
|
Сообщений: 6521
|
Re: recordingcheck??
A что такое нормально?
Я что такое не нормально?
Несовершённые звонки нет смысла записывать в CDR, например абонент 10101 набрал номер, послушал вызов, и положил трубку. Для такого завершения в скриптах стоит функция - NoCDR, чтобы не записывать ненужную информацию в CDR. Поэтому возвращает -1.
А /var/lib/asterisk/agi-bin/recordingcheck проверяет вообще то надо записывать разговор или нет.
|
Откуда: 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
|
Сообщений: 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 можно почитать побольше, чем в командной строке.
В общем - дело усидчивости и терпения.
|
Откуда: Odessa
Сообщений: 90
|
Re: recordingcheck??
Понял, возможно правильный ответ этот
ded:
1) уже надо вспоминать что сломал;
Буду читать в логах и скрипте.
Как всегда спасибо-гуру!
|
Откуда: 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?
|
Откуда: Уфа
Сообщений: 5856
|
Re: recordingcheck??
вы вручную абонента завели в конфигурационных файлах завели?
|
Откуда: 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
приходит с внешнего транка а потом пропадает значение
|
Откуда: Уфа
Сообщений: 5856
|
Re: recordingcheck??
внешний транк в какой контекст приходит?
|
Откуда: Odessa
Сообщений: 90
|
Re: recordingcheck??
пускаю в
context=from-internal
чтоб в одном контексте был с внутренними транками
|
|