По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Привет, дорогой читатель! На этапе траблшутинга системные администраторы прибегают к просмотру и анализу лог – файлов Asterisk. В статье поговорим про причины отбоя вызова (hangupcause) в Asterisk, как их найти в лог – файле и что они означают. Поиск Hangupcause Подключаемся к нашему серверу IP – АТС по SSH. Открываем консоль и вводим следующую команду: [root@asterisk ~]# grep -e '[CALLID].*HANGUPCAUSE' /var/log/asterisk/full Здесь CALLID - это идентификатор вызова. Найти его очень просто. В лог – файле введите номер звонящего/вызываемого абонента и найдете примерно вот такую запись (в примере поиск осуществляется по номеру 89123456789): [2017-02-08 18:58:03] VERBOSE[18823][C-00000009] pbx.c: Executing [recordcheck@sub-record-check:11] Goto("Local/89123456789@from-internal-00000007;2", "startrec") in new stack Находим запись выше. Здесь, [C-00000009] - является идентификатором вызова. После того, как Вы нашли hangupcause, его необходимо понять. Переходим к следующему шагу – интерпретация. Все причины отбоя вызова в Asterisk Ниже, в таблице, мы составили причины отбоя вызова и соответствующие для них коды SIP ответов с небольшим описанием: Код отбоя (hangupcause) Полученный SIP - ответ Описание 1 410 Unallocated (unassigned) - неназначенный номер. Данная ошибка указывает, что вызываемый номер назначения не может быть вызван, по причине отсутствия маршрута до него. Как правило, данную ошибку возвращает провайдер телефонных услуг. Например, при звонка зарубеж, данная ошибка может возвращаться из-за отсутствия маршрута к номеру назначения. 2 500 No route to specified transit network - ошибка индицирует о том, что оборудование, сгенерировавшее данную ошибку получило запрос запрос на маршрутизацию вызова через неизвестную ей транзитную сеть. Вполне возможно, что данная сеть в целом не существует. 3 404 No route to destination - чисто "сетевая" ошибка. Обозначает отсутствие коннективити (маршрутизации) между сетями инициатора вызова и вызываемого абонента. 4 500 Send special information tone - вызываемый абонент не может быть вызван по причинам "долгосрочного характера", и звонящий должен получить специальный звуковой тон. 5 500 Misdialled trunk prefix - сигнализирует о том, что к вызываемому номеру был подставлен ошибочный телефонный префикс. 6 500 Channel unacceptable - проблемы на канале связи. Как правило это сетевая проблема. 7 500 Call awarded and being delivered in an established channel - индикация того, что пользователь получил входящий вызов и что пользователь уже имеет аналогичный вызов 8 500 Prefix 0 dialed but not allowed - префикс в начале номер "0" не разрешен 9 500 Prefix 1 dialed but not allowed - префикс в начале номер "1" не разрешен 10 — Prefix 1 not dialed but required - префикс "1" подставлен в начало номера, но не является требованием 11 — More digits received than allowed, call is proceeding - в вызываемом номере передано больше цифр, чем позволено на оборудовании передающим данный код отбоя 16 BYE Normal call clearing - вызов был закончен естественным образом (кто - то из абонентов положил трубку) 17 486 User busy - индицирует, что вызываемый абонент не может принять вызов, так как находится в состоянии "Занят" (есть активный разговор) 18 480 No user responding - вызываемый абонент не ответил на сообщение о вызове (инициации) в течение определенного времени 19 480 T.301 expired: – User Alerted, No answer from user - аппарат вызываемого абонента звонил, но он не ответил на звонок 21 603 Call rejected - вызов отклонен 22 480 Number changed to number in diagnostic field - индицирует о том, что вызываемый номер более не существует. В сообщение так же может быть включен новый номер вызываемого абонента 23 — Reverse charging rejected - вариант, когда за звонок платит принимающая вызов сторона. Данное сообщение обозначает отклонение такого вызова. 24 — Call suspended - оборудование получило запрос на приостановку вызова 25 — Call resumed - вызов возобновлен (продолжение 24 отбоя) 26 500 Non-selected user clearing - пользователю не был назначен входящий вызов 27 404 Destination out of order - данное сообщение индицирует о том, что телефонная сигнализация не может быть доставлена через выбранный NIC (сетевой интерфейс). В данном случае, проблема скорее всего кроется на L1 или на L2 уровне (физический или канальный) 28 484 Invalid number format or incomplete address - неправильный формат вызываемого номера или номер указан не полностью 29 501 EKTS facility rejected by network - проблема на уровне платы - устройство отклонено на уровне сети 30 500 Response to STATUS ENQUIRY - сообщение ответ на запрос о состоянии 31 404 Normal, unspecified - эта причина отбоя используется в случае, если другие причины (более конкретные) не были применены 33 — Circuit out of order - построенный канал связи вышел из строя 34 503 No circuit/channel available - нет доступного для установления соединения канала связи 35 500 Destination unattainable - нет возможности доставить сообщение до получателя 36 500 Out of order - объект функционирует не корректно 37 500 Degraded service - уведомление о том, что сервис находится в некорректном состоянии 38 503 Network out of order - сетевое соединение функционирует не корректно (вероятная проблема на уровне L3) 39 500 Transit delay range cannot be achieved - требуемый диапазон задержки (время обработки, передачи) не может быть достигнут 40 500 Throughput range cannot be achieved - требуемый диапазон пропускной способности (передача сообщения) не может быть достигнута 41 503 Temporary failure - временная неработоспособность сервиса. "Временная" означает то, что пользователь может попробовать еще раз через некоторое время 42 503 Switching equipment congestion - в настоящее время, оборудование коммутации испытывает пиковые значения нагрузки и не может обработать запрос 43 500 Access information discarded - данная причина индицирует о том, что по запросу сеть (L3) не может доставить информацию о доступе к удаленному пользователю 44 503 Requested circuit channel not available - запрошенный канал связи недоступен 45 500 Preempted - данная причина указывает на то, что вызов был прерван 46 500 Precedence call blocked - означает, что вызываемый пользователь занят вызовов с более высоким приоритетом 47 503 Resource unavailable, unspecified - причина, отправляемая в том случае, если ни одна другая не была отправлена 49 500 Quality of service unavailable - использование QoS требование не доступно 50 500 Requested facility not subscribed - пользователь запросил услугу, которую он не может получить по причине отсутствия доступа к ней 51 — Reverse charging not allowed - вариант, когда за звонок платит принимающая вызов сторона не разрешен для данного пользователя 52 — Outgoing calls barred - исходящий вызов запрещен для абонента 53 500 Outgoing calls barred within CUG - данная причина означает, что несмотря то, что пользователь является членом закрытой группы юзеров (CUG - Closed User Groups) для совершения исходящего вызова, ему данная итерация запрещена 54 — Incoming calls barred - входящий вызов запрещен для абонента 55 603 Incoming calls barred within CUG - данная причина означает, что несмотря то, что пользователь является членом закрытой группы юзеров (CUG - Closed User Groups) для приема входящего вызова, ему данная итерация запрещена 56 — Call waiting not subscribed - пользователь не имеет права (не подписан) на услугу "Ожидание вызова" 57 501 Bearer capability not authorized - пользователь запросил расширение пропускной способности канала до оборудования, но не имеет права на подобные итерации 58 501 Bearer capability not presently available - пользователь запросил расширение пропускной способности канала до оборудования, но в данный момент данная функция не доступна 63 503 Service or option not available, unspecified - сообщение сообщает о недоступности услуги в том случае, если другие причины (более конкретные) не были отправлены пользователю 65 501 Bearer service not implemented - служба передачи (переноса) информации не реализована 66 500 Channel type not implemented - устройство, посылающее данную причину не поддерживает указанный типа канала связи 67 — Transit network selection not implemented - не удалось совершить выбор транзитной сети 68 — Message not implemented - данное сообщение не реализовано 69 500 Requested facility not implemented - эта причина указывает на то, что устройство, отсылающее эту причину не поддерживает запрашиваемые дополнительные услуги 70 500 Only restricted digital information bearer capability is available - данное сообщение указывает на то, что пользователь запросил неограниченный доступ к пропускной способности канала связи, но устройство поддерживает только с ограничениями 79 501 Service or option not implemented, unspecified - услуга или опция не реализована (когда другие причины не были отправлены) 81 500 Invalid call reference value - эта причина указывает на то, что устройство, отсылающее эту причину, получило сообщение с идентификатором вызова, который в настоящее время не используется на интерфейсе сети пользователя 82 500 Identified channel does not exist - эта причина указывает на то, что устройство, отсылающее эту причину, получило запрос на использование канала, который не активизирован на сетевом интерфейсе. Например, если пользователь использует в потоке Е1 (PRI) тайм – слоты с 1 по 12, а запросил использовать с 3 по 24 – будет сгенерирована данная причина 83 500 A suspended call exists, but this call identity does not - вызов существует, но отсутствуют идентификаторы для него 84 500 Call identity in use - оборудование получило запрос на приостановление вызова, содержащий идентификатор вызова, под которым вызов уже значится приостановленным 85 500 No call suspended - получен запрос на возобновление вызова с идентификатором звонка, который не числится в списке приостановленных 86 500 Call having the requested call identity has been cleared - получен запрос на возобновление вызова с идентификатором звонка, который был прерван в результате тайм - аута 87 603 Called user not member of CUG - вызываемый абонент не является членом закрытой группы юзеров (CUG - Closed User Groups) 88 404 Incompatible destination - система получила запрос на установление соединения с параметрами, которые не могут быть обслужены 89 — Non-existent abbreviated address entry - не существующий адрес 90 500 Destination address missing, and direct call not subscribed - адрес назначения не указан, а опция директивного вызова недоступна для пользователя 91 500 Invalid transit network selection (national use) - получен индикатор транзитной сети, который имеет неверный формат (в рамках рекомендации Q.931) 92 — Invalid facility parameter 93 Mandatory information element is missing - обязательный элемент информационного сообщения отсутствует 93 500 Message type non-existent or not implemented - получено устройством сообщение не может быть интерпретировано на оборудовании 95 404 Invalid message, unspecified - неправильное сообщение. Используется только тогда, когда другие (более конкретные сообщения) не были отправлены 96 500 Mandatory information element is missing - в полученном оборудованием сообщение отсутствует важное для его обработки поле 97 500 Message type non-existent or not implemented - тоже самое что и 93 код 98 500 Message not compatible with call state or message type non-existent or not implemented - сообщение не совместимо с текущим состоянием звонка или не может быть интерпретировано оборудованием 99 500 Information element nonexistent or not implemented - информационный элемент не существует или не может быть интерпретирован оборудованием 100 500 Invalid information element contents - элемент не может быть интерпретирован. Помимо этого, одно или более полей сообщения были закодировано алгоритмом, который не поддерживает оборудованием. 101 500 Message not compatible with call state - полученное сообщение не соответствует состоянию вызова 102 408 Recovery on timer expiry - процедура восстановления по причине тайм - аута параллельно с алгоритмами обработки ошибок 103 500 Parameter non-existent or not implemented – passed on - параметр не существует или не реализован на оборудовании 111 404 Protocol error, unspecified - ошибка, которая отправляется в случае, если более детальное сообщение не было отправлено 127 500 Internetworking, unspecified - на этапе установления соединения произошел сбой
img
В данной статье пойдет речь о голосовых уведомлениях (Announcements) Модуль уведомлений используется для проигрывания голосовых записей абонентам и после проигрыша маршрутизации звонка на нужное направление. Важно не путать модуль Announcements (Голосовые уведомления) и System Recordings (Системные записи) . Модуль системных записей – это приложение в котором происходит загрузка или запись самих голосовых сообщений. Модуль Announcements просто позволяет проиграть одну из этих записей. Важно: для использования этого модуля предварительно записи нужно загрузить или создать с помощью модуля System Recordings. Модуль Announcements в FreePBX 13 находится по следующему пути: Applications – Announcements Для создания уведомления нужно нажать на кнопку «Add», что приведет к открытию интерфейса создания сообщений Далее опишем каждое поле в данном интерфейсе: Description – названиеописание самого уведомления, проще всегда писать какое-то название, которое описывает назначение голосового сообщения. Recording – необходимо выбрать запись, созданную с помощью интерфейса System Recordings Repeat – количество повторений данного голосового уведомления при нажатии на кнопку, важный момент: если необходима пауза между повторениями, требуется добавить паузу в саму запись Allow Skip – возможность пропускать уведомление с помощью нажатия на кнопку (полезно, если абонент очень часто звонит на данный номер) Return to IVR – возврат звонка на IVR, игнорируя выбранное направление звонка с помощью опции ниже. Звонок вернется на последний IVR в цепочке звонков. Don’t answer Channel – по дефолту значение стоит «No», т.е ответ на звонок и проигрывание сообщения. Если стоит «Yes», то голосовое уведомление будет отправлено абоненту как «Early Media», но многие провайдеры не поддерживают данную опцию. Destination after Playback – направление звонка после проигрыша сообщения. В данном конкретном примере указана ринг-группа, однако вариантов направлений масса На этом все, придумывайте собственные сценарии использования уведомлений, ведь спектр крайне широк!
img
Одной из основных составляющих IP – PBX на базе Asterisk являются SIP – транки в сторону провайдера и оконечные телефонные аппараты, или как их принято называть «пиры» (peers). Сегодня мы расскажем о способе автоматизации мониторинга состояния транков и пиров, с отправлением на почту системного администратора. Мониторинг пиров Итак, начнем с мониторинга состояния пиров. Для этого мы напишем небольшой bash – скрипт. Предположим, что у нас есть 3 площадки, А, B и C. АТС Asterisk находится на площадке A. Предварительно, перед началом работы, создадим 2 файлы: первый – для логов нашего скрипта, а второй, будет служебным, и будет использоваться только в рамках исполнения скрипта. Внутри каждого скрипта, мы будем писать комментарии к каждой из его строк. Скачать скрипт мониторинга пиров вы можете по ссылке ниже: Скачать скрипт мониторинга пиров [root@asteriskpbx]# touch /home/admin/log_mail.txt [root@asteriskpbx]# touch /home/admin/message.txt Далее, создаем переменные для нашего скрипта: #!/bin/sh LOGSIZE=`ls -l /home/admin/log_mail.txt | awk '{ print $5 }'` //проверяем размер файла с логами problempeers=`/usr/sbin/asterisk -rx 'sip show peers' | grep UNKNOWN` //выводим командой 'sip show peers' через консоль Asterisk, и затем, с помощью команды grep UNKNOWN фильтруем пиры, чтобы отобразить только те, состояние которых является UNKNOWN GWB=`ping -c4 11.22.33.44 | grep 'received' | awk -F',' '{ print $2}' | awk '{ print $1}'` //по протоколу ICMP, пингуем IP – адрес шлюза на удаленной площадке четырьмя пакетами. Если все ОК, и шлюз доступен, до значение переменной будет равно 4. В противном случае, оно будет равно 0. GWC=`ping -c4 44.33.22.11 | grep 'received' | awk -F',' '{ print $2}' | awk '{ print $1}'` //аналогичным образом пингуем шлюз на площадке C ResultB="" //служебная переменная ResultC="" //служебная переменная FILENAME=/home/admin/message.txt //записываем в переменную путь к лог- файлам LOGFILE=/home/admin/log_mail.txt DATE="`date +%d.%m.%Y" "%H:%M:%S`" //выводим текущую дату и время в формате дд.мм.гггг чч:мм:сс echo "$problempeers" > /home/admin/message.txt //записываем содержимое переменной problempeers в служебный файл. В этой переменной содержится результат вывода команды по статусу пиров. FILESIZE=$(stat -c%s "$FILENAME") //проверяем размер служебного файла message.txt. Если в нем есть какая-либо информация, значит есть проблемы с пирами (имеются в статусе UNKNOWN), если он пустой, то все ОК. На этом этапе, мы сформировали все необходимые переменные и у нас имеются все необходимые для формирования письма (если надо) на email системному администратору. Перейдем к исполнительной части скрипта: if [ $GWB -eq 0 ]; then //если число ответов шлюза на площадке B на пинг равно 0, то запускаем процесс формирования письма ResultB ="на площадке B НЕ ДОСТУПЕН!" //формируем часть текста. Мы ее включим в заголовок письма else ResultB ="" //если все таки шлюз ответил на пинг, то оставляем переменную пустой fi if [ $GWС -eq 0 ]; then //если число ответов шлюза на площадке С на пинг равно 0, то запускаем процесс формирования письма ResultС="на площадке С НЕ ДОСТУПЕН!" //по аналогии. Указываем в заголовок, что роутер C недоступен else ResultС ="" //если все ОК, то оставляем переменную пустой fi if [ $FILESIZE -ne 1 ]; then //если наш служебный файл message.txt не пустой, то проверяем следующее условие if [ $GWB -eq 0 ] || [ $GWC -eq 0 ]; then //если хотябы один из роутеров недоступен по пинг, то переходим к следующему пункту скрипта echo "$problempeers"| mailx -s "Проблемы с SIP пирами | Роутер $ResultB $ResultC!" -r "info@merionet.ru" youremail@some.ru </home/admin/message.txt && //отправляем на почту письмо, где указываем, что у нас есть проблемы с пирами, и, если какой-то из роутеров не доступен, указываем это. В теле письма мы отправляем вывод недоступных пиров. echo "FAIL :: $DATE :: Some problems with phones" >> "$LOGFILE" //параллельно с отправкой письма, записываем в лог файл запись, что у нас есть проблемы с пирами (в вывод так же можно добавить с какими именно) else echo "$problempeers"| mailx -s "Проблемы с SIP пирами | Роутеры ДОСТУПНЫ!" -r "info@merionet.ru" youremail@some.ru < /home/admin/message.txt && //если оба наших роутера доступны, то мы просто формируем письмо, в котором указываем перечень недоступных пиров. echo "FAIL :: $DATE :: Some problems with phones" >> "$LOGFILE" //аналогично вносим запись в лог – файл. fi else echo "OK :: $DATE :: all phones are OK" >> "$LOGFILE" //если служебный файл пустой, то мы вносим запись в лог – файл что все хорошо и проверка успешно прошла. fi if [ $LOGSIZE -ge 150000 ]; then //елси размер нашего лог – файла больше или равен 150 КБ, то мы очищаем этого (можете подкрутить эту величину, как вам угодно.) cat /dev/null > /home/admin/log_mail.txt fi cat /dev/null > /home/admin/message.txt //на выходе чисти служебный файл message.txt, для последующего использования Теперь давайте проверим, что приходит нам на почту в случае, если несколько пиров стали недоступны, но все роутеры доступны: Мониторинг транков Отлично, перейдем к формированию скрипта по мониторингу транков. Здесь все несколько проще, и мы просто будем сравнивать общее количество транков, и количество зарегистрированных транков: Скачать сам скрипт можете ниже: Скачать скрипт мониторинга транков #!/bin/bash ALLTRUNKSMINIMUM="`/usr/sbin/asterisk -rx "sip show registry"`" //выводим регистрации по протоколу SIP ALLTRUNKS=`echo "$ALLTRUNKSMINIMUM" |grep "SIP registrations" |awk '{print $1}'` //численное обозначение всех имеющихся транков REGTRUNKS=`/usr/sbin/asterisk -rx "sip show registry" |grep Registered |wc -l` //численное обозначение всех зарегистрированных транков DATE="`date +%d.%m.%Y" "%H:%M:%S`" //формируем текущую дату, для логов LOGFILE=/home/admin/log_mail.txt //для лог – файла, указываем тот же файл, что и для скрипта по мониторингу пиров if [ "$REGTRUNKS" -lt "$ALLTRUNKS" ]; then //если число зарегистрированных транков меньше чем число всех транков sleep 5 //ждем 5 секунд echo `/usr/sbin/asterisk -rx "sip reload"` \ перезагружаем модуль SIP, в целях перерегистрации. Эта команда автоматически перерегистрирует транк на оборудовании провайдера, после чего, он, зачастую, начинает работать. sleep 5 //ждем еще 5 секунд VAR=`/usr/sbin/asterisk -rx "sip show registry"` //после перезагрузки SIP модуля, снова смотрим SIP –регистрации. Если данная команда не дала своих результатов, то в переменной VAR будет записаны не работающие транки. Если она помогла, то на email админу придет рабочий вывод всех зарегистрированных транков. Это весьма удобно. echo "$VAR"| mailx -s "Мониторинг транков" -r "info@merionet.ru" youremail@some.ru // отправляем письмо на почту системного администратора, с выводом SIP регистраций после перезагрузки модуля else echo "OK :: $DATE :: all trunks are OK" >> "$LOGFILE" //если число зарегистрированных транков, равно общему числу, то записываем в лога файл соответствующую запись. fi Теперь, когда мы автоматизировали процессы мониторинга состояния на Asterisk, сделаем выполнение этих скриптов регулярным. Сохраним наши скрипты в формате .sh, можно сделать это, например, в Notepad ++. Сделаем выполнение мониторинг транков раз в 2 минуты, а выполнение мониторинга пиров раз в 10 минут. Перед загрузкой скриптов на сервер, дадим им необходимые права и, что очень важно, преобразуем скрипт в Linux формат: [root@asteriskpbx]# dos2unix peer.sh //преобразуем скрипт для мониторинга пиров [root@asteriskpbx]# dos2unix trunk.sh //преобразуем скрипт для мониторинга транков [root@asteriskpbx]# chmod 777 peer.sh //дадим необходимые права обоим скриптам [root@asteriskpbx]# chmod 777 trunk.sh [root@asteriskpbx]# crontab -e В открывшемся cron, задаем задачи для выполнения наших скриптов: */10 * * * * /bin/bash /home/peer.sh >/dev/null //исполнять файл раз в 10 минут */2 * * * * /bin/bash /home/trunk.sh >/dev/null //исполнять файл раз в 2 минуты Вот и все. Теперь мы имеет достаточно простой, но порой очень нужный и эффективный мониторинг состояния транков и пиров на нашем Asterisk
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59