Рейтинг
0.00

Asterisk

5 читателей, 34 топика

Не проходят вызовы или голос в asterisk?

  • Asterisk
Очень распространенная проблема с голосом по IP, когда нужно передать в другую сеть, то не слышно вас или собеседника. Сам бился много раз. Нашел в сети полезную схему как диагностировать проблему. Может кому пригодится в решении проблемы.



И еще одна схема дальше →

Установка OpenSIPS 1.6.1 на CentOS5 x64

X telekom может помочь вам на любом этапе внедрения VoIP технологий — от установки CentOS на сервере до установки и настройки OpenSIPS и Asterisk.
Если вы хотите сделать все самостоятельно, вот инструкция, которая должна помочь. Установка OpenSIPS v1.6.1 на CentOS 5 64-бита очень проста. Все зависимости можно установить с помощью YUM. Необходимые для OpenSIPS пакеты подтянутся автоматически. В данной инструкции OpenSIPS должен быть установлен с поддержкой MySQL.
До установки необходимо установить пакеты zlib, openssl, mysql.

Читать дальше →

Установка Asterisk на Debian. Часть 1.

Давно хотелось себе домой Asterisk для опытов. Есть задумка подключить городскую линию через Asterisk, но какой для этого использовать «сервер»? Из домашнего железа для этих целей подходят роутер и файлопомойка WD MyBook Live. У WD больше оперативной памяти, поэтому на нем и буду ставить опыты. Для подсоединения к городской линии мне еще потребуется sip шлюз с fxo интерфейсом, которого пока нет. Поэтому статью разобью на 3 части. 1 — установка и первичная настройка asterisk, 2 — подключение шлюза с fxs + fxo интерфейсами, 3 — стык с sip провайдером и настройка голосовой почты.

Часть 1. Установка и первичная настройка Asterisk

Для начала нужно включить SSH для доступа к консоли, для этого откроем httр://wd/UI/ssh и поставим галку «Доступ SSH: Включить». Логин\пароль по умолчанию root\welc0me. Заходим по SSH на LiveBook (например с помощью putty) и вводим
/opt/bin/ipkg install asterisk
Чтобы добавить звуки, поставим дополнительный пакет
ipkg -force-overwrite install asterisk-sounds

Читать дальше →

Asterisk на службе армии США

Армия США выбрала Asterisk для обеспечения связи с родиной для военнослужащий в Ираке. Решение позволяет осуществлять 10000 одновременных вызовов.

Американские военные начали поиск экономически эффективных и надежных методов для личного общения, так как обычная спутниковая телефония стоит дорого. Подрядчики, использовав функции Asterisk, построили в Иракском датацентре распределенную систему состоящую из 20 блейд серверов. 10 серверов отвечают за Asterisk, остальные база данных на mysql, биллинг и маршрутизация звонков. Тестирование показало, что каждый сервер обеспечивает до 1000 одновременных звонков. При этом возможно наращивание производительности системы с помощью добавления дополнительных серверов. Для подключения к сети в США используется спутниковые каналы. За надежность каналов отвечает специально доработанный Nagios.

Хотя военные и не сразу почувствовали все преимущества новой системы, ее нагрузка составляет тысячи звонков.
Читать дальше →

IP телефония в офисе

  • Asterisk
Что такое IP телефония в понятии обычного офисного служащего или начальника, принимающего решение о установке АТС в офисе. Как показала практика общения с потенциальными заказчиками, большинство где-то слышало, что с помощью IP телефонии можно сэкономить на междугородних звонках и в тоже время совершенно ничего не слышали, что такое IP АТС и что ее можно установить вместо традиционной АТС. Даже скорее не так — у большинства нет другого понятия АТС, кроме как традиционная. Как только заводишь речь об IP, начинают говорить, что это дорого, это ненадежно, что качество у IP телефонии хуже. Но как показывает практика, это все не правда.

Читать дальше →

Elastix съедает всю память

Есть у Elastix особенность, периодически память заканчивается и asterisk начинает тормозить. Для очистки памяти добавьте в cron задание:
echo 3 > /proc/sys/vm/drop_caches

Периодичность в зависимости от скорости заполнения памяти

chan_h323.c:2317 answer_call

Добрый день! мучает меня такая ошибка " chan_h323.c:2317 answer_call: Dropping call because extensions '2', 's' and 'i' doesn't exists in context [default] " Астериск работает с АСТ Panasonic TDE-100. Эта ошибка возникает при наборе в префиксе «2» все номера 5и значные (12345) на «1» префикс звонит без проблем а когда набираешь «2» (23456) то астериск выдает ошибку и идут короткие гудки.

extensions.conf

exten => _XXXXX,1,NoOp()
exten => _XXXXX,n,Set(CALLERID(name)=*******)
exten => _XXXXX,n,Dial(IAX2/***************/${EXTEN},35)
exten => _XXXXX,n,Set(CHANNEL(language)=ru)
exten => _XXXXX,n,Playback(vm-nobodyavail)
exten => _XXXXX,n,Hangup()

Индикация работы режима DnD на BLF клавише в Asterisk

  • Asterisk
DnD достаточно востребованная функция, но обычно режим включается на самом телефоне, не уведомляя об этом Asterisk, отчего тот будет обращаться к телефону пользователя, думая, что тот на месте и готов ответить на звонок. Как нам включить режим DnD на самом Asterisk и чтобы кнопка включения при активированном DnD моргала красным цветом?
Для этого нам потребуется телефон с BLF кнопками и пара макросов.
Читать дальше →

Ошибка chan_unistim.c

народ! подскажите ставлю asterisk18-1.8.15.0 на freebsd 8.2 выдает chan_unistim.c: Your OS does not support IP_PKTINFO, you must set public_ip и func_callerid.c: CALLERPRES is deprecated. Use CALLERID(name-pres) or CALLERID(num-pres) instead. не могу понять где это искать. порты обновлял и make clean тож делал))

Начальная установка Asterisk и AsteriskGUI

Скорее заметка чтоб не забыть) Авось и кому еще полезно будет)
Все действия производились на FreeBSD 9 i386/amd64 — в смысле справедливо для обоих архитектур.
Кроме указанных ниже действий, потребуется установить bash хотя можно и без него.
Из портов устанавливаем Asterisk:

 #cd /usr/ports/net/asterisk 
 # make install clean

Затем ставим Dahdi

 # cd /usr/ports/misc/dahdi-kmod
 # make install clean

В rc.conf добавляем:

 asterisk_enable="YES"
 dahdi_enable="YES"

Читать дальше →

Установка и настройка Asterisk 1.6 на Debian

Перевод статьи с howtoforge.com по установке и настройке Asterisk 1.6 на Debian.

Для установки Asterisk нужна чистая Debian/Lenny система. Для начала пересоберем ядро с дополнительными параметрами, чтобы Asterisk работал оптимальнее.
apt-get install kernel-package libncurses5-dev fakeroot wgеt bzip2 build-essential
cd /usr/src

Скачиваем исходники ядра, например 2.6.26:
wgеt http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.26.8.tar.gz
tar xfv linux-2.6.26.8.tar.gz
ln -s /usr/src/linux-2.6.26.8 /usr/src/linux
cd /usr/src/linux
make clean && make mrproper
cp /boot/config-`uname -r` ./.config
make menuconfig

Полная версия

Снять дамп разговора asterisk

Если нужно записать трафик, сделать полный дамп разговора для дальнейшего анализа например в wireshark, самый простой способ это tcpdump
tcpdump -i eth0 udp port 5060 or udp portrange 10000-20000 -s 0 -w shiffer.cap

Если нужен только sip траффик, можно так
tcpdump -i eth0 udp port 5060 -s 0 -w shiffer.cap

FreePBX / Elastix / Asterisk проблема при исходящих звонках

  • Asterisk
Проблема при большом количестве правил в исходящей маршрутизации, больше 100 правил в outbound routes, и появляется ошибка в логах ошибка:
Auto fallthrough, channel 'SIP/300-00000007' status is UNKNOWN
Maximum PBX stack exceeded

По умолчанию AST_PBX_MAX_STACK выставлен в 128, но можно его увеличить и пересобрать asterisk. Находим параметр в файлах:
./include/asterisk/extconf.h
./include/asterisk/pbx.h

Делаем
make
make install

Уведомления о пропущенных вызовах FreePBX 13

  • Asterisk
В интернете есть много примеров как сделать уведомления о пропущенных вызовах, но только для внешних вызовов и только для очередей. Мне же потребовалось сделать это для всех вызовов, только я убрал звонки юзер-юзер, только группы и очереди, внутренние или внешние без разницы. Так же без разницы кто положил трубку.
[macro-hangupcall]
include => macro-hangupcall-custom
exten => s,1(start),NoOp("------------------------")
exten => s,n,Set(chan=${CUT(CHANNEL,/,1)})
exten => s,n,NoOp(${chan})
exten => s,n,GotoIf($["${NODEST}" = ""]?nosip)
exten => s,n,GotoIf($[${chan} != SIP]?nosip)
exten => s,n,ExecIf($["${CDR(disposition)}"="NO ANSWER"]?System(/usr/bin/php -q /var/lib/asterisk/agi-bin/sendemail.php "Пропущен звонок q${NODEST} от ${CALLERID(name)}  Время ${CDR(billsec)}" ))
exten => s,n(nosip),GotoIf($["${USE_CONFIRMATION}"="" | "${RINGGROUP_INDEX}"="" | "${CHANNEL}"!="${UNIQCHAN}"]?theend)

exten => s,n(delrgi),Noop(Deleting: RG/${RINGGROUP_INDEX}/${CHANNEL} ${DB_DELETE(RG/${RINGGROUP_INDEX}/${CHANNEL})})
exten => s,n(theend),ExecIf($["${ONETOUCH_RECFILE}"!="" & "${CDR(recordingfile)}"=""]?Set(CDR(recordingfile)=${ONETOUCH_RECFILE}))
exten => s,n,Hangup
exten => s,n,MacroExit()

Asterisk/FreePBX возврат при переводе вызова

  • Asterisk
Часто требуется функция возврата звонка при переводе, если абонент не взял трубку.

globals_custom.conf:
TRANSFER_CONTEXT = custom-test_transfer

extensions_custom.conf:
[custom-test_transfer]
exten => _X.,1,NoOp(Entering custom-test_transfer)
exten => _X.,n,Set(timeoutd=25) ; set timeout in seconds
exten => _X.,n,Set(extLeng=${LEN(${EXTEN})})
exten => _X.,n,NoOp(The extenlength is ${extLeng})
exten => _X.,n,Dial(Local/${EXTEN}@from-internal,${timeoutd})
exten => _X.,n,Set(CALLERID(name)=RB:${CALLERID(name)})
exten => _X.,n,Dial(Local/${BLINDTRANSFER:4:${extLeng}}@from-internal)
exten => _X.,n,Hangup()

Адресная книга для телефонов Grandstream из FreePBX 13

Адресная книга удобная опция, которую часто спрашивают заказчики, поэтому разберемся как прописать ее для телефонов Grandstream

Сначала нам нужен скрипт который выгрузит номера и их Caller ID (он же поле «Имя») из настроек внутренних номеров FreePBX. Я делал на версии FreePBX 13, возможно будет работать и на более ранних.
<?php
$config = include("db/config.php");

$db = new PDO($config["db"], $config["username"], $config["password"], $config["options"]);

$sql = "SELECT extension, name from users";   // Делаем выборку записей книги
$q = $db->prepare($sql);
$q->execute();
$rows = $q->fetchAll();

unlink($config["pb_file_gs"]);  // Удалим старый файл

$fp = fopen($config["pb_file_gs"],"w+");
fputs($fp, '<?xml version="1.0" encoding="UTF-8"?><AddressBook>');

foreach($rows as $row) {         // Пробежим по всем записям, подготовив XML файл нужного вида
    	fputs($fp, '<Contact>
                        <FirstName>'.$row['name'].'</FirstName>
                        <LastName></LastName>
                        <Phone>
                                   <phonenumber>'.$row['extension'].'</phonenumber>
                                   <accountindex>1</accountindex>
                                   <downloaded>1</downloaded>
                        </Phone>
                        <Groups>
                                   <groupid>4</groupid>
                        </Groups>
            </Contact>
	'); 
}
fputs($fp, '<Group id="4">Server</Group> </AddressBook>');
fclose($fp);
?>


Файл «db/config.php»
<?php
return array(
    "db" => "mysql:host=localhost;dbname=asterisk",
    "pb_file_gs" => "/var/www/html/phonebook/phonebook.xml",
    "username" => "freepbxuser",     //Mysql login
    "password" => "123456", //Mysql password
    "options" => array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8')
);


Потом заходим в телефон «Phonebook -> Phonebook Management»

Enable Phonebook XML Download -> Enabled, HTTP
Phonebook XML Server Path -> http://serverpbx/phonebook/
Phonebook -> Phonebook Management
Phonebook Download Interval -> 60
Remove Manually-edited Entries on Download -> No

В крон прописываем запуск скрипта, который будет выгружать книгу. Для проверки можно посмотреть логи httpd, чтобы удостовериться, что телефон загружает нужный файл. Чтобы не ждать, можно телефон перегрузить, тогда он при загрузке подтянет телефонную книгу.

FreePBX 13 не применяет изменения в конфигурации

FreePBX 13 в Centos 7 выдал ошибку:
Unable to connect to remote asterisk (does /var/run/asterisk/asterisk.ctl exist?)
Exception: Unable to connect to Asterisk through the CLI in file /var/lib/asterisk/bin/retrieve_conf on line 30
Stack trace:
1. Exception->() /var/lib/asterisk/bin/retrieve_conf:30

А дело в том, что изменились права на какой-то папке и нужно обновить права, запустим для этого скрипт
/usr/sbin/fwconsole start

Можете добавить его в запуск при загрузке в файл /etc/rc.d/rc.local

Asterisk GUI

Начал писать свой веб-интерфейс для asterisk, на php + js + html + ajax
Проект opensource. Пока еще на начальной стадии, но уже кое что умеет.
Из того, чего не видел у других — отображение очередей с статусами агентов и с кем они разговаривают (с привязкой к очереди), видно не отвеченные вызовы и нагрузку на очереди. Да, похожее есть в FOP2, но во-первых платно, во-вторых не совсем так.

Ссылка на github.com

Прошу попинать и высказать фидбек или хотелки, может по разработке подскажете что полезное.

Скриншот

Как добавить в очередь внешнего абонента

  • Asterisk
Нашел на форумах, возможно пригодится:

Вы можете добавить в очередь любой канал, в том числе внешний номер:

member => Local/12345@default

Где [default] наш контекст.

И так же можно использовать такую конструкцию:
member => SIP/12345@yourprovider