Вход | Регистрация
Вы здесь: Главная / Форум / Главный форум по Asterisk / Конфигурация и настройка / Изменение номеров, записаных в CDR

Изменение номеров, записаных в CDR

1 2>
Сообщений: 20

Изменение номеров, записаных в CDR

в диалплан вставил скрипт:
exten => _X.,1,AGI(chnum.agi)

Скрипт преобразует номера в приличный вид... (меняет CALLERID(num))
При звонке на телефон - этот номер преобразуется, в общем, все прекрасно...
Но вот в CDR записывает не преобразованные номера...
Есть ли возможность преобразовывать номера, которые будут записываться в CDR?
2009-09-15 12:52

Сообщений: 20

Re: Изменение номеров, записаных в CDR

Народ, я не понятно объяснил или никто не знает?(((
2009-09-17 22:32

Сообщений: 6521

Re: Изменение номеров, записаных в CDR

Vanga-mode on
try to connect to chnum.agi.....Failed!
rxgain=++
try to connect to chnum.agi one more time....^B^@^@<FF><FB><A0>^D3<80>^S<F6>h<D6>ESC A<D0>x<ED>^Z<F7>a<88>^Z^N1<99>e<AC>%^AIij,%<83> <F1>^F<CD><F2>m<AA>(<95>*6<FB>&<U+ABC8><D7><D9>D8n^Q9<83>#<AC>e^PB&m^S^Z<A9>Pn<D0><FA>%<8B><8D><CA><C7>i<F9><CA>W<CE><D4>ڕd<99>R<9C><A9>^R<A5>]<DA>^G!+TDd<<8E>^]<95>^Rh<D8>n/<97><91><AA><F5>...system crashed!
Vanga-mode off

Result = http://asterisk.ru/knowledgebase/Asterisk+func+cdr
2009-09-17 22:37

Сообщений: 20

Re: Изменение номеров, записаных в CDR

chnum.agi:
#!/usr/local/bin/php -q
<?php
require 'phpagi.php';
$agi = new AGI();
$res = $agi->get_var("CALLERID(num)");
$res="8".$res;
$agi->set_var("CALLERID(num)",$res);
$agi->set_var("CDR(src)",$res);
?>

[Sep 18 09:19:27] ERROR[760]: cdr.c:303 ast_cdr_setvar: Attempt to set the 'clid' read-only variable!.
[Sep 18 09:20:55] ERROR[760]: cdr.c:303 ast_cdr_setvar: Attempt to set the 'src' read-only variable!.

Где разрешить запись - пока не нашел... Продолжаю поиски...
2009-09-18 09:27

Сообщений: 20

Re: Изменение номеров, записаных в CDR

Definition at line 277 of file cdr.c.

{
struct ast_var_t *newvariable;
struct varshead *headp;
const char *read_only[] = { "clid", "src", "dst", "dcontext", "channel", "dstchannel",
"lastapp", "lastdata", "start", "answer", "end", "duration",
"billsec", "disposition", "amaflags", "accountcode", "uniqueid",
"userfield", NULL };
int x;

for(x = 0; read_only[x]; x++) {
if (!strcasecmp(name, read_only[x])) {
ast_log(LOG_ERROR, "Attempt to set a read-only variable!.\n");
return -1;
}
}

Вариант - поправить исходники и перекомпелить? А проще может можно?
2009-09-18 09:47

Откуда: Саратов
Сообщений: 414

Re: Изменение номеров, записаных в CDR

Создайте userfield и пишите туда всё, что захотите.
+7(925)140-7438
2009-09-18 09:48

Сообщений: 20

Re: Изменение номеров, записаных в CDR

Он создан... Туда нормально пишется, но это не решение проблемы, а уход от нее =)
2009-09-18 09:54

Откуда: Москва
Сообщений: 12

Re: Изменение номеров, записаных в CDR

а cdr в бд пишется?
если да -- вешайте триггер на insert или делайте вьюху для изменения при select
2009-09-23 17:24

Сообщений: 135

Re: Изменение номеров, записаных в CDR

userfield - издевательство над RDB.
В 1.6 хотя бы в этом с cdr стало получше - можно просто делать CDR(xnum)=...
и при условии того, что в таблице есть поле xnum значение там и окажется.
В 1.4 могу предложить патч для постгреса, который позволяет самому указывать что и как инсертить в базу. Для mylsq вроде как тоже был какой-то mysql-custom cdr-бекенд
2009-09-23 17:43

Avatara of Mar
Откуда: Izhevsk
Сообщений: 89

Re: Изменение номеров, записаных в CDR

ded а у тебя это http://asterisk.ru/knowledgebase/Asterisk+func+cdr у самого получилось? кроме userfield и accountcode остальные переменные тока на чтение, как и написано в http://www.voip-info.org/wiki/view/Asterisk+Detailed+Variable+List

If the channel has a cdr, that cdr record has it's own set of variables which
can be accessed just like channel variables. The following builtin variables
are available and, unless specified, read-only.

${CDR(clid)} Caller ID
${CDR(src)} Source
${CDR(dst)} Destination
${CDR(dcontext)} Destination context
${CDR(channel)} Channel name
${CDR(dstchannel)} Destination channel
${CDR(lastapp)} Last app executed
${CDR(lastdata)} Last app's arguments
${CDR(start)} Time the call started.
${CDR(answer)} Time the call was answered.
${CDR(end)} Time the call ended.
${CDR(duration)} Duration of the call.
${CDR(billsec)} Duration of the call once it was answered.
${CDR(disposition)} ANSWERED, NO ANSWER, BUSY
${CDR(amaflags)} DOCUMENTATION, BILL, IGNORE etc
${CDR(accountcode)} The channel's account code (read-write).
${CDR(uniqueid)} The channel's unique id.
${CDR(userfield)} The channels uses specified field (read-write).


In addition, you can set your own extra variables with a traditional
Set(CDR(var)=val) to anything you want.

Я проверял в 1.4
2009-09-24 10:02

1 2>
Добавить страницу в закладки:  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