По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Мы продолжаем постигать основы важнейшего протокола, использующегося в IP телефонии и в сегодняшней статье рассмотрим основные сценарии установления соединения, а также работу основных компонентов протокола SIP. Протокол SIP имеет 3 стандартных сценария установления соединения, которые отличаются наличием и участием тех или и иных устройств. Пример №1 Установление соединения между User Agent’ами, когда в сети отсутствуют всякого рода серверы. Простейшим примером является сеанс связи, в котором принимают участие только два пользователя. Терминальное оконечное оборудование называется UA (User Agent), когда одновременно совмещает в себе функции UAС (User Agent Client) - клиента и UAS (User Agent Server) - сервера. В данном случае сценарий установления соединения будет выглядеть так: . Абонент A снимает телефонную трубку и набирает номер Абонента B, тем самым генерируя запрос INVITE , который содержит описание сеанса связи. Устройство абонента B отвечает сообщением 100 Trying , которое означает, что запрос находится в обработке. После обработки запроса устройство абонента B уведомляет его о входящем вызове, а в сторону абонента A отвечает сообщением 180 Ringing, что соответствует контролю посылки вызова. Абонент B снимает телефонную трубку, отвечая сообщением 200 OK, означающее успешную обработку запроса. Устройство абонента A прекращает прием контроля посылки вызова и посылает подтверждение ACK, означающее прием ответа на запрос INVITE. Между абонентами устанавливается разговорная фаза. Происходит передача голосового трафика по протоколу RTP (Real-Time Transfer Protocol). Важно отметить, что SIP не участвует в непосредственной передаче голоса, а лишь предоставляет условия и способы согласования открытия неких каналов обмена на основе других протоколов, в данном случае - RTP. Абонент A кладет телефонную трубку, тем самым инициируя завершение передачи голосового потока. Устройство абонента A генерирует запрос Bye, в сторону устройства абонента B. Устройство абонента B отвечает сообщением 200 OK, означающем успешную обработку запроса Bye. Терминальное оконечное оборудование абонентов A и B возвращается в исходное состояние. Однако, данный сценарий установления соединения является самым примитивным, можно даже сказать частным. Обычно в сети присутствует SIP прокси сервер, который принимает и обрабатывает запросы от пользователей и выполняет, соответствующие этим запросам, действия. Пример №2 Рассмотрим сценарий установления соединения между двумя пользователями. В данном случае задачу поиска и приглашения абонента выполняет Прокси сервер, вызывающему пользователю необходимо знать только постоянный номер вызываемого абонента. Отметим, что функции прокси сервера выполняет офисная телефонная станция Как видно из рисунка, процесс установления и разъединения соединения происходит аналогично первому сценарию, только в качестве посредника при передаче сообщений протокола SIP выступает SIP Proxy. Пример №3 Допустим, что в сети имеется множество пользователей, число которых постоянно пополняется. Они могут менять свое фактическое положение, ставить переадресацию (redirection) на другой номер, проводить конференц – звонки и др. Для предоставления подобных сервисов требуется наличие в сети соответствующих серверов, поддерживающих ту или иную функцию. Сервер регистрации (Registration Server) для аутентификации и авторизации пользователей. Сервер определения местоположения (Allocation Server) для определения реального местонахождения пользователей. Сервер переадресации (Redirect Server) для перенаправления звонков на другие номера, в случае если пользователь настроил данную функцию. Сервер регистрации это логический элемент и обычно его функции выполняет SIP Proxy, такие совмещенные сервера называют Registar. SIP Proxy может также выполнять функции серверов определения местоположения и переадресации, такое совмещение полезно в плане масштабируемости сети. Приведем пример, когда сеть содержит некий комбинированный SIP Proxy, который поддерживает все функции, описанные выше. Допустим, что новый, еще не зарегистрированный пользователь A,вызывает пользователя B, который уже прошел процедуру авторизации. Новый User Agent A посылает серверу сообщение REGISTER , которое инициирует процесс регистрации. Т.к User Agent A ещё не зарегистрирован, то сервер Registar отвечает сообщением 401 Unauthorized Тогда User Agent A посылает серверу сообщение REGISTER + login, содержащее логин и пароль. Сервер Registar отвечает сообщением 200 OK, на этом процесс регистрации закончен. Теперь пользователь А авторизован на сервере и может совершать звонки. User Agent A инициирует установление связи с пользователем B сообщением INVITE. На данном этапе включаются функции серверов определения местоположения и переадресации, сервер отвечает сообщением 302 Moved Temporarily, означающее, что вызываемый абонент временно сменил местоположение и содержащее его новые данные для установления соединения. User Agent A отвечает сообщением ACK, которое означает прием ответа от Redirect сервера на запрос INVITE. Далее User Agent A инициирует новое установление соединения напрямую к пользователю B, в соответствии с полученными данными. Как видно из рисунка дальнейший процесс соединения происходит аналогично сценарию 1. В следующей статье мы подробно рассмотрим основные модификации протокола SIP для взаимодействия с традиционными телефонными сетями, использующими сигнализацию ОКС-7.
img
В статье речь пойдет о логах в Астериск. Существует встроенный модуль для FreePBX - Asterisk Logfiles Module, который позволяет просмотреть самые недавние события. Просмотр логов с помощью FreePBX Модуль можно найти по следующему пути: Reports – Asterisk Logfiles. Однако, данный модуль мало полезен, если требуется проверить не только недавние логи, но и недельной, а то и месячной давности. Если появилась такая нужда, требуется подключится к вашей АТС по SSH, например, используя терминальный клиент PuTTy. Кроме того, если есть физический доступ к серверу, можно использовать и его. Почему проще использовать терминальный клиент? Ответ прост – PuTTy поддерживает операции копироватьвставить, что многократно упрощает работу. Просмотр логов через консоль Итак, порядок действий для доступа к логам Астериск: Вход на АТС, используя рутовый логин и пароль. После успешного входа вводится команда cd /var/log/asterisk Для вывода списка лог-файлов нужно ввести команду ls –l Обычно, все файлы называются «full-DATE», где DATE – дата логирования. Если требуется посмотреть и отсеять сегодняшний лог-файлы, нужно ввести nano full . Данная команда откроет лог-файл с помощью текстового редактора nano. Nano сразу же продемонстрирует список команд для управлением текстовым редактором Для просмотра можно использовать клавиши Page Up и Page Down, CTRL-W для поиска и CTRL-X для выхода. Соответственно, для открытия конкретного файла, нужно написать nano full-20160629 Если вы случайно внесли изменения и пересохранили лог-файл, то Астериск прекратит логирование сегодняшнего дня. Для исправления данной проблемы необходимо запустить следующую команду amportal restart . Данная команда будет ждать 120 секунд для завершения текущих вызовов, и по прошествии 120 секунд все вызовы будут принудительно завершены. Так же возможно использовать команду Linux grep, к примеру для вывода в текущем лог-файле всех событий связанных с недоступным транком - grep “is now” full Если результатов слишком много, есть возможность скопировать их в новый файл - grep "is now" full > newlogfile Для его просмотра можно использовать уже знакомый редактор nano - nano newlogfile Удалить данный файл можно командой - rm tempfile Так же есть возможность просматривать логи в реальном времени - asterisk –r Для выхода используется команда - exit И ещё один способ просмотра лог-файлов в реальном времени – tail.Делает это так: cd /var/log/asterisk tail –f full Для выхода нужно нажать CTRL-C.
img
Сегодня подробно расскажем как найти практическое применение знаниям, полученным в статье про структуру asteriskcdrdb, а именно, как сделать ежедневные отчеты о входящих звонках на почту. Создание скрипта Чтобы наш .php скрипт смог подключиться к базе данных, необходимо создать пользователя, с правами, которые буду позволять ему извлекать необходимую информацию. Для этого, подключимся к нашему серверу по SSH [root@asterisk]# mysql mysql>CREATE USER ' user'@'localhost' IDENTIFIED BY 'P@ssw0rd'; На данном этапе мы создали пользователя user с паролем P@ssw0rd. Далее дадим ему необходимые права: mysql> GRANT SELECT ON asteriskcdrdb.cdr TO 'user' Создадим файл с расширением .php, в котором мы отразим подключение к нашей базе данных. Запишем эту конструкцию так: $hostname = "localhost"; //адрес хоста. Скрипт мы будем запускать на той же машине, на которой находится БД asteriskcdrdb; $username = "user"; //отражаем пользователя $password = "P@ssw0rd"; //пароль для созданного нами пользователя $dbName = "asteriskcdrdb"; //база данных, в которой хранятся необходимые нам данные $today = date('y-m-d'); // сегодняшняя дата в формате 2016-03-25 $counter = 1; // счетчик mysql_connect($hostname,$username,$password) OR DIE("Не могу создать соединение "); // соединиться к БД mysql_select_db($dbName) or die(mysql_error()); //выбрать базу данных. Если произойдет ошибка - вывести ее $headers = "; charset=windows-1251 "; //заголовок для письма $headers .= "From: Мерион Нетворкс <info@merionet.ru> "; $headers .= "Reply-To: info@merionet.ru "; Предположим, что все входящие звонки приходят на номер секретаря – 100. Так же мы знаем, что при звонке из города, мы видим номер звонящего, который содержит в себе больше 3 символов (пусть у нас используется трехзначная внутренняя нумерация). Наша задача сводится к формулировке запроса к таблице cdr. Добавляем к нашему .php файлу: $query = "SELECT `dst` , `src` , `duration` , `dstchannel` , `calldate` , `disposition` FROM `cdr` WHERE `calldate` >='$today 00:00:00' AND `calldate` <='$today 23:59:59' AND LENGTH( `src` ) >3 AND `dst` = '100';" ; $res=mysql_query($query) or die(mysql_error()); // Выполнить запрос. Если произойдет ошибка - вывести ее. $number = mysql_num_rows($res); // Как много нашлось строк У нас почти все готово. Осталось только обработать данные на выходе. Для этого, нам понадобится следующая конструкция: //формируем шапку нашей таблицы со значениями $mes .= ' table style="max-width: 575px;border-bottom:none; margin: 0 auto;border-spacing: inherit;"> thead> tr style="border-bottom: 2px solid #05477c;"> th style="padding:10px; color: #fff; max-width: 150px;background:#05477c;">Порядковый номер</th> th style="padding:10px; color: #fff; max-width: 150px;background:#05477c;">Дата</th> th style="padding:10px; color: #fff; max-width: 100px;background:#05477c;">От кого</th> th style="padding:10px; color: #fff; max-width: 45px;background:#05477c;">Кому</th> th style="padding:10px; color: #fff; max-width: 45px;background:#05477c;">Статус звонка</th> /tr> /thead>'; //перебираем значения ассоциативного массива. Число элементов данного массива равно числу строк на выходе sql запроса while ($row=mysql_fetch_array($res)) { $mes .= ' tbody> tr style="width: 100px;"> td style="padding:10px; border-bottom: 1px solid #eee; text-align:center;">'.$counter.'</td> td style="padding:10px; border-bottom: 1px solid #eee; text-align:center;min-width: 100px;">'. $row['calldate'].'</td> td style="padding:10px; border-bottom: 1px solid #eee; text-align:center;min-width: 100px;">'. $row['src'].'</td> td style="padding:10px; border-bottom: 1px solid #eee; text-align:center;">'.$row['dst'].'</td> td style="padding:10px; text-align:center; border-bottom: 1px solid #eee; min-width: 120px; ">'.$row['disposition'].'</td> /tr>'; $counter = $counter + 1; } Теперь, мы храним в переменной $mes html таблицу, которая готова к отправке на почту. Добавим в конец скрипта: mail("info@merionet.ru", 'Все входящие за '.$today.'', $mes, $headers); ВАЖНО! Если вы используете кириллические символы, установите кодировку .php файла на Кириллицу (windows-1251) Итак, готово. Давайте посмотрим что приходит нам на почту: Работает. Давайте сделаем ежедневное задание на отработку этого скрипта через cron. Сделаем, например, ежедневно, в 17:30, когда рабочий день подходит к концу: 30 17 * * * php /home/admin/mail_report.php Не забудьте в начала скрипта поставить открывающий тэг php, а в конце скрипта закрывающий.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59