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

CDR при первом звонке

Проблемы Asterisk без вэб-оболочек и их решения

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

Ответить
slavaka_z
Сообщения: 34
Зарегистрирован: 18 дек 2011, 16:55

CDR при первом звонке

Сообщение slavaka_z »

Здравствуйте!

Есть сервер, он же корпоративный портал. У каждого пользователя есть своя страничка. Рядом стоит сервер с Астериск. Астериск принимает звонки и логит их в mysql базу первого сервера. Первый сервер, по идее, должен видеть, что в базе появилась новая строчка и выдавать всем пользователям информацию о входящем звонке.

Но вот какая проблема - CDR заносит запись в базу только после окончания звонка. Как сделать так, чтобы строчка в базе появлялась сразу же при первом звонке? Порылся в конфигах, ничего подходящего не нашел.
ys1797
Сообщения: 240
Зарегистрирован: 28 июн 2011, 17:59

Re: CDR при первом звонке

Сообщение ys1797 »

>CDR заносит запись в базу только после окончания звонка
Что исходит из его названия.
Интересно, как же будет указана там продолжительность звонка, если он еще не кончился? :)

Use AMI
slavaka_z
Сообщения: 34
Зарегистрирован: 18 дек 2011, 16:55

Re: CDR при первом звонке

Сообщение slavaka_z »

Что-то типа:

Код: Выделить всё

<?php
require "AsteriskManager.php";
$params = array('server' => '127.0.0.1', 'port' => '5038');
$ast = new Net_AsteriskManager($params);
try {
    $ast->connect();
} catch (PEAR_Exception $e) {
    echo $e;
}
try {
    $ast->login('admin', 'secret5');
} catch(PEAR_Exception $e) {
    echo $e;
}
try {
    $incall = $ast->getQueues();
} catch(PEAR_Exception $e) {
    echo $e;
}

echo $incall;
?>
И затем парсить $incall на предмет Event: NewCallerID ?
slavaka_z
Сообщения: 34
Зарегистрирован: 18 дек 2011, 16:55

Re: CDR при первом звонке

Сообщение slavaka_z »

А можно вот так?

Код: Выделить всё

exten => s,n,System(mysql -uroot -p123 'INSERT INTO CDR `src`=${CALLERID(num)} and `remark`="Incoming Call")
Vlad1983
Сообщения: 4251
Зарегистрирован: 09 авг 2011, 11:51

Re: CDR при первом звонке

Сообщение Vlad1983 »

можно
тока именно так работать не будет
ЛС: @rostel
slavaka_z
Сообщения: 34
Зарегистрирован: 18 дек 2011, 16:55

Re: CDR при первом звонке

Сообщение slavaka_z »

Так?

Код: Выделить всё

exten => s,1,MYSQL(Connect connid localhost dbuser dbpass dbname)
exten => s,2,MYSQL(Query resultid ${connid} INSERT\ INTO\ CDR\ `src`=\${CALLERID(num)}\ and\ `remark`=\"Incoming Call"\)
exten => s,3,MYSQL(Disconnect ${connid})
Только в этом случае не будут ли большие задержи, чтобы каждый раз коннетиться и дисконектиться к базе, особенно если она на другом сервере?
Vlad1983
Сообщения: 4251
Зарегистрирован: 09 авг 2011, 11:51

Re: CDR при первом звонке

Сообщение Vlad1983 »

изучите сначала синтаксис INSERT
ЛС: @rostel
slavaka_z
Сообщения: 34
Зарегистрирован: 18 дек 2011, 16:55

Re: CDR при первом звонке

Сообщение slavaka_z »

боже! извините... исправил (не считая экранирования):

Код: Выделить всё

exten => s,1,MYSQL(Connect connid localhost dbuser dbpass dbname)
exten => s,2,MYSQL(Query resultid ${connid} INSERT INTO CDR (`src`,`remark`) VALUES (${CALLERID(num)}, "Incoming Call"))
exten => s,3,MYSQL(Disconnect ${connid})
Но тогда вопрос: Если в crd_mysql уже настроен и "cdr mysql status" показывает, что соединение есть, можно ли строчки номер 1 и 3 исключить из экстеншенов, чтобы не тратить на это время?
Vlad1983
Сообщения: 4251
Зарегистрирован: 09 авг 2011, 11:51

Re: CDR при первом звонке

Сообщение Vlad1983 »

1. MYSQL никакого отношения к "cdr mysql status" не имеет
2. настроенный ровными руками mysql-сервер даже при удаленном коннекте привносит мизерную задержку (у вас же не сотни одновременно устанавливаемых соединений).
ЛС: @rostel
Vlad1983
Сообщения: 4251
Зарегистрирован: 09 авг 2011, 11:51

Re: CDR при первом звонке

Сообщение Vlad1983 »

тоже рабочий вариант и не последний

вобщем, путей несколько
какой выбрать - дело ваше
ЛС: @rostel
Ответить
© 2008 — 2024 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH