Добрый день
Хочу поделиться скриптом, который я сделал к этому моду, а также хотел бы попросить помощи в реализации разграничения прав.
Для начала поделюсь своим скриптом для автоматического звонка астериском при клике на номер в asterisk-cdr-viewer. Создаём файл (я назвал его dialout.php) и кладём в корень asterisk-cdr-viewer'а с таким содержимым:
<?php
$filename = $_SERVER['REQUEST_TIME'] . '-' . $_GET['from'] . '-' . $_GET['to'] . '.call';
$temp_dn = "/var/spool/asterisk/outgoing_archive/";
$dn = "/var/spool/asterisk/outgoing/";
$fn = $temp_dn . $filename;
$dest_fn = $dn . $filename;
echo "Calling from SIP/" . $_GET["from"] . "\n";
echo "to " . $_GET["to"] . "\n";
echo '<br>';
$fp = fopen($fn,'wt');
$test = fwrite($fp,"Channel: SIP/" . $_GET["from"] . "
CallerID: \"Some Name\" <+380123456789>
MaxRetries : 2
RetryTime: 300
WaitTime: 45
Context: outgoing
Extension: " . $_GET["to"] . "
Priority: 1
Archive: Yes");
if ($test) echo 'File successfully writed';
else echo 'Write file error!';
echo '<br>';
$new_fn = $fn . '.bak';
$test = copy($fn,$new_fn);
if ($test) echo 'File successfully copied';
else echo 'Copy file error!';
echo '<br>';
$test = rename($fn,$dest_fn);
if ($test) echo 'File successfully moved';
else echo 'Move file error!';
?>
(Всякие выводы можно опустить, ни разу не сталкивался с тем, чтобы выдавались ошибки)
где
$temp_dn (/var/spool/asterisk/outgoing_archive/) - это папка, где будет создаваться файл и там будет храниться его копия для истории. Если история не нужна, то закомментируйте код $test = copy($fn,$new_fn);. У этой папки должны быть права o+rw.
Когда писал это заметил что у меня Archive было без "с". Сейчас проверить возможности нет, но может этот кусок кода вовсе не нужен с включенной опцией Archive: Yes$dn (/var/spool/asterisk/outgoing/) - папка астериска, в которую он смотрит постоянно и звонит когда там появляется файл звонка
CallerID, MaxRetries и т.п. подредактируйте в соответствии с настройками вашего сервера и вашими пожеланиями. Астериск вызовет сначала SIP/"from", а когда вы снимете трубку - попытается позвонить на номер "to" через экстеншн "outgoing".
В конфиге inc/config.inc.php нужно установить переменную:
$rev_lookup_url = '/dialout.php?from=' . $cdr_user_name . '&to=' . '%n';
И (не уверен, что нужно, но я на всякий случай сделал) перенести вот эти строки:
// Имя пользователя
$cdr_user_name = getenv('REMOTE_USER');
выше строки с $rev_lookup_url.
Также очень важно, чтобы ваше SIP имя совпадало с логином в asterisk-cdr-viewer (используется именно это имя)Если я где-то сделал косяк или что-то правильнее сделать по-другому - сообщайте.
__________________________________________________________
И теперь мой вопрос вам: как сделать чтобы одни могли прослушивать звонки, а другие - нет? Не реализовал ли кто ранее такое?