По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Распределенная архитектура IP – АТС Asterisk привлекательна своей локальной отказоустойчивостью по сравнению с централизованной. Например, если у вас установлен единичный экземпляр АТС в центральном офисе, а филиалы подключены через VPN, то при отказе без связи останутся все. С другой стороны, если в каждой филиале имеется собственная IP – АТС Asterisk, при отказе филиальной АТС без связи остается только филиал. У администраторов возникает вполне логичный вопрос – как объединить между собой все экземпляры IP – АТС в единую корпоративную систему связи? У нас есть ответ. О том, как объединить несколько IP – АТС Asterisk по протоколу IAX расскажем в статье. Конфигурация будет произведена с помощью графического интерфейса FreePBX 13. Пошаговое видео Сценарий Представим, что вы честный системный администратор в компании, занимающейся производством мебели. У компании есть центральный офис в Москве и производство в Новосибирске. На уровне L3 сетевая связность между локальными сетями офисов обеспечена технологией VPN. В Московском офисе мы используем нумерацию 1XX (100-199), а в Новосибирске 2XX (200-299). Для корректной настройки от нас потребуется создать 2 IAX транка на каждом из филиалов и создать соответствующие маршрута. IP – адресация на нашем стенде следующая: Москва - 192.168.1.67 Новосибирск - 192.168.1.68 Настройки Московского филиала Приступаем к настройке Московского филиала. Переходим в раздел Connectivity → Trunks и добавляем новый IAX транк нажатием +Add Trunk → Add IAX2 Trunk. В поле Trunk Name вкладки Outgoing вводим novosib, а в сегменте PERR Details вносим следующие настройки: username=novosib host=192.168.1.68 type=peer secret=wikimerion qualify=yes context=from-trunk disallow=all allow=alaw После настройки исходящих параметров, приступаем к настройке входящих для Московского филиала. Открываем вкладку Incoming. В поле User Context укажите moscow, а в разделе следующие настройки: host=192.168.1.68 type=user secret=wikimerion qualify=yes context=from-internal disallow=all allow=alaw Нажимаем Submit. Переходим к настройке исходящего маршрута в Московском филиале. Нам нужно будет осуществлять звонки с 1XX на 2XX номера, следовательно, в шаблоне набора мы укажем IP – АТС Asterisk отправлять все вызовы, в которых пользователи набрали трехзначный номер начинающийся с двойки в транк до Новосибирска. Переходим в раздел Connectivity → Outbound Routes и нажимаем + Add Outbound Route: После указания настроек нажимаем Submit и Apply Config Настройки Новосибирского филиала Теперь произведем необходимые настройки для филиала в Новосибирске. Переходим по пути Connectivity → Trunks → +Add Trunk → Add IAX2 Trunk. В Outgoing секции указываем имя moscow и следующие параметры: username=moscow host=192.168.1.67 type=peer secret=wikimerion qualify=yes context=from-trunk disallow=all allow=alaw Теперь в секции Incoming указываем контекст novosib и следующие опции конфигурации: host=192.168.1.67 type=user secret=wikimerion qualify=yes context=from-internal disallow=all allow=alaw Делаем исходящий маршрут для звонков в Москву. Переходим в Connectivity → Outbound Routes и нажимаем + Add Outbound Route: Нажимаем Submit и Apply Config Проверка Для проверки наших настроек, в каждом из филиалов дадим команду iax2 show peers. Как видим, наши транки в статусе OK Теперь, при звонках с московских внутренних номеров, которые зарегистрированы на московской IP – АТС Asterisk в сторону новосибирского филиала на номера вида 2XX, мы сможем дозвониться, и, что самое главное, на телефонах принимающей стороны будет виден внутренний номер звонящего.
img
Ищешь бесплатное решение по реализации исходящих звонков из CRM Битрикс24 в связке с Asterisk? Поздравляем, нашел. Можешь закрыть все остальные вкладки и оставить только эту – пошаговое руководство по интеграции Б24 и Астериска в статье :) Как это работает? Легко (на этом можно было бы закончить). Мы создаем исходящий вебхук в Битрикс, он дергает php - скрипт на Asterisk каждый раз, когда мы будем нажимать на номер телефона в лиде, сделке, контакте – где угодно. Поехали. Попробовать Битрикс24 Подготовка Создадим AMI (Asterisk Manager Interface)– юзера, через которого будем инициировать вызовы. Откроем файл настройки: vim /etc/asterisk/manager.conf Обращаем внимание на секцию [general] - параметр enabled должен быть в значении yes: [general] enabled = yes // вот этот параметр :) port = 5038 bindaddr = 0.0.0.0 Проверьте, чтобы в самом конце файла manager.conf были следующие строки (если их нет, добавьте): #include manager_custom.conf Проверили. А теперь открываем файл /etc/asterisk/manager_custom.conf (если его нет – создайте и дайте права) и добавляем туда: [имя] secret = пароль deny=0.0.0.0/0.0.0.0 permit=127.0.0.1/255.255.255.0 permit=ip_адрес_Asterisk/маска read = all,system,call,log,verbose,command,agent,user,config,originate write = all,system,call,log,verbose,command,agent,user,config,originate имя - придумайте имя для юзера; пароль - создайте устойчивый к взломам пароль, с помощью сервисов онлайн генерации, например; ip_адрес_Asterisk/маска - укажите вашу подсеть. В указанной подсети должен находится IP – адрес, с которого скрипт будет обращаться к AMI. Пример записи - 192.168.1.0/255.255.255.0; Переходим в Битрикс24 и создаем вебхуки. Вебхуки Первый вебхук мы сделаем входящим – по нему наш скрипт будет получать внутренний номер сотрудника по его идентификатору. Переходим в раздел Приложения → Вебхуки. Нажимаем кнопку Добавить вебхук и выбираем Входящий вебхук. Делаем вот что: Название - любое название, как вам удобно; Описание - нужный момент, чтобы не запутаться в вебхуках; Права доступа - отметьте галочкой Пользователи (user); Нажимаем сохранить. Должно получиться примерно вот так: Обратите внимание: на скриншоте, красной линией подчеркнут URL параметра Пример URL для вызова REST. Скопируйте его ровно до последней части /profile/. Например, у нас получилось: https://merionet.bitrix24.ru/rest/2/1a2b3c4d5e6f7g8h Сохраните этот URL – он нам еще пригодится :) Перед тем, как мы сделаем исходящий вебхук, давайте обсудим будущий URL нашего скрипта. Так как он будет располагаться в веб директории, мы предлагаем вам сгенерировать последовательно 3 директории, в которых будет лежать скрипт. И вот о чем мы: представим, что ваш домен выглядит вот так: http://ilovemerionet.ru/ Гуд. Давайте последовательно сгенерируем 3 уникальных названия директорий, например: IpVy7ul85sz1Doi C49BNGJW3Yf30eo qBN0NBC56lj07yh После чего, в директории /var/www/html/ создадим три вложенных папки, чтобы наш файл в конечно итоге размещался в директории: /var/www/html/IpVy7ul85sz1Doi/C49BNGJW3Yf30eo/qBN0NBC56lj07yh/ Сам файл скрипта, который мы сгенерируем, будет называться index.php, тем самым, вебхук со стороны Битрикс24 будет обращаться по следующему URL: http://ilovemerionet.ru/IpVy7ul85sz1Doi/C49BNGJW3Yf30eo/qBN0NBC56lj07yh/ Кажется, разобрались :) Теперь создаем исходящий вебхук – прыгаем в раздел Приложения → Вебхуки. Нажимаем кнопку Добавить вебхук и выбираем Исходящий вебхук. Делаем вот что: Код авторизации - это наш проверочный код, который мы используем в скрипте; Адрес обработчика - как мы привели пример выше, тут будет http://ilovemerionet.ru/IpVy7ul85sz1Doi/C49BNGJW3Yf30eo/qBN0NBC56lj07yh/ - у вас, само собой, свой URL :); Название - явное название, чтобы не запутаться. Сделайте Asterisk Calls, например?; Комментарий - можете оставить комментарий для себя, чтобы было проще разобраться; Тип события - выбираем Инициация звонка через приложение (ONEXTERNALCALLSTART); Великолепно. Мы выходим на финишную прямую. Скрипт для Asterisk Ловите скрипт, который будет принимать вебхуки от Битрикс24. Комментарии к самым важным строкам, как всегда, присутствуют: <?php $check_token = "Код_авторизации"; // это значение будет прилетать нам в вебхуке. А мы будем его сравнивать, чтобы быть уверенными, что это Битрикс; $user_hook_url = "Часть_входящего_вебхука"; // нужно, для получения внутреннего номера пользователя, которые инициирует звонок; $ami_login = "ami_логин"; // логин к AMI, который мы создавали ранее; $ami_password = "пароль"; // пароль к AMI, который мы создавали ранее; $strhost = "IP_адрес"; // IP - адрес вашего Asterisk; if (strcmp($_POST['auth']['application_token'], $check_token) === 0) { function writeToLog($data, $title = '') { $log = " ------------------------ "; $log .= date("Y.m.d G:i:s") . " "; $log .= (strlen($title) > 0 ? $title : 'DEBUG') . " "; $log .= print_r($data, 1); $log .= " ------------------------ "; file_put_contents(getcwd() . '/hook.log', $log, FILE_APPEND); return true; } writeToLog($_REQUEST, 'incoming'); $UID = $_POST['data']['USER_ID']; $bitrix_contact_url = "$user_hook_url/user.get.json?ID=$UID"; $btc = curl_init(); curl_setopt ($btc, CURLOPT_URL,$bitrix_contact_url); curl_setopt ($btc, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6"); curl_setopt ($btc, CURLOPT_TIMEOUT, 60); curl_setopt ($btc, CURLOPT_FOLLOWLOCATION, 1); curl_setopt ($btc, CURLOPT_RETURNTRANSFER, 1); $bitrix_contact = curl_exec ($btc); curl_close($btc); $bitrix_contact_o = json_decode($bitrix_contact, true); $cid = $bitrix_contact_o['result'][0]['UF_PHONE_INNER']; $strport = "5038"; $timeout = "5"; $num = str_replace("+","",$_POST['data']['PHONE_NUMBER_INTERNATIONAL']); $callid = $_POST['data']['CALL_ID']; $c="from-internal"; $p="1"; $errno=0 ; $errstr=0 ; $sconn = fsockopen($strhost, $strport, &$errno, &$errstr, $timeout) or die("Connection to $strhost:$strport failed"); if (!$sconn) { echo "$errstr ($errno) "; } else { $sconn1 = fsockopen($strhost, $strport, &$errno, &$errstr, $timeout) or die("Connection to $strhost:$strport failed"); if (!$sconn1) { echo "$errstr ($errno) "; } else { fputs($sconn1, "Action: login "); fputs($sconn1, "Username: $ami_login "); fputs($sconn1, "Secret: $ami_password "); fputs($sconn1, "Events: off "); usleep(500); fputs($sconn1, "Action: Setvar "); fputs($sconn1, "Variable: B24ID "); fputs($sconn1, "Value: $callid/$cid "); fputs($sconn1, "Action: Logoff "); usleep(500); $wrets1=fgets($sconn1,128); fclose($sconn1);} fputs($sconn, "Action: login "); fputs($sconn, "Username: $ami_login "); fputs($sconn, "Secret: $ami_password "); fputs($sconn, "Events: off "); usleep(500); fputs($sconn, "Action: Originate "); fputs($sconn, "Channel: SIP/$cid "); fputs($sconn, "Callerid: $cid "); fputs($sconn, "Timeout: 20000 "); fputs($sconn, "Context: $c "); fputs($sconn, "Exten: $num "); fputs($sconn, "Priority: $p "); fputs($sconn, "Async: yes " ); usleep(500); $wrets=fgets($sconn,128); fclose($sconn); exit; }} else { exit; }; ?> Скачать скрипт интеграции После загрузки файла, сохраните его с расширением .php В нем вам нужно поменять 5 переменных: $check_token - код авторизации, который вы получили на этапе создания исходящего вебхука; $user_hook_url - та часть входящего вебхука, которая подчеркнута на скриншоте до слов /profile/; $ami_login - логин в AMI, создавали ранее; $ami_password - пароль в AMI; $strhost - IP - адрес вашего Asterisk; Чтобы скрипт заработал, нужно, как мы говорили ранее, загрузить его в директорию /var/www/html/IpVy7ul85sz1Doi/C49BNGJW3Yf30eo/qBN0NBC56lj07yh/ (после генерации директорий у вас будет свой путь!) и дать следующие команды: dos2unix /var/www/html/IpVy7ul85sz1Doi/C49BNGJW3Yf30eo/qBN0NBC56lj07yh/index.php chown asterisk:asterisk /var/www/html/IpVy7ul85sz1Doi/C49BNGJW3Yf30eo/qBN0NBC56lj07yh/index.php chmod 775 /var/www/html/IpVy7ul85sz1Doi/C49BNGJW3Yf30eo/qBN0NBC56lj07yh/index.php Кстати, профит этого скрипта в том, что он ведет логирование в файле hook.log, который будет располагаться в той же директории. Если кто – то из ваших менеджеров скажет, что не смог позвонить клиенту – это будет легко проверить :) Почти готово. Остался только один штрих. Снова открываем CRM Битрикс24, переходим в сегмент Телефония → Настройки и в параметре Настройка номеров по-умолчанию выбираем созданный нами вебхук (у нас он называется Приложения: Asterisk Calls: А вот теперь готово. Звоним Звонит :) Но! Не закрывает карточку и не добавляет отметку об исходящем звонке в сущность CRM (запись разговора). Внимательные пользователи обратят внимание – в AMI сегменте скрипта, который обсуждали ранее, мы кинули команду Setvar (присвоение переменной) к B24ID = $callid. Тем самым, на всем протяжении звонка у нас будет идентификатор этой телефонной транзакции. Фактически, чтобы получить отметку о звонке, запись разговора и прочее, по факту окончания разговора нужно методом telephony.externalcall.finish кинуть массив данных, где будет отметка об идентификаторе вызова (которую передаем через диалплан), телефон инициатора вызова, длительность и ссылка на запись разговора. Если данная статья вызовет интерес, мы покажем, как это сделать. Удачи с настройкой :)
img
Данная тема наиболее важная из всех пред идущих, в ней пойдет речь об управлении пакетами. Установка, удаление, обновление пакетов. Поиск пакетов и их зависимостей. Получение полной информации о пакетах. Dpkg утилита управления пакетами в Debian системах и во всех операционных системах которые от нее пошли это mint, Ubuntu и другие. Утилита достаточно большая и работать с ней не очень удобно, поэтому обычно предпочитают использовать более распространённый пакетный менеджер apt. Сама утилита имеет большое количество ключей, в добавок значение ключей зависит от регистра ключа. Заглавная буква в ключе или прописная, имеют разный функционал. Основные ключи: -I перечень пакетов в системе; -L перечень файлов в пакетах; -s информация о статусе пакета; -S поиск пакета, содержащего данный файл; -i установка пакета; -I информация о пакете в файле *.deb; -r простое удаление пакета; -P удаление пакета вместе с конфигурационными файлами. Dpkg-reconfigure переконфигурация пакета. Можно сказать, что это мастер настройки пакета. Полезная утилита. Теперь посмотрим, как это работает вводим dpkg --help: Dpkg сложная низкоуровневая утилита, имеет кучу настроек, на скриншоте приведен вывод справки по ней. Если мы просмотрим внимательно то, в конце справки мы увидим рекомендацию использовать менеджер управления пакетами apt или aptitude. Утилита dpkg используется для каких-то очень тонких настроек пакетов. Можно посмотреть список установленных пакетов в системе dpkg -l . В системе их установлено их достаточно много, поэтому для поиска нужного использовать grep. dpkg -s mc посмотрим статус пакета midnight commander. И видим, что пакет mc, он установлен, размер его, архитектуру (разрядность), зависимости. Используя, ключ S, мы можем посмотреть в какой пакет входит данная программа. Программа mc входит во множество пакетов. А вот, например, /bin/ls входит в базовые утилиты ядра, о чем вы можете убедится, набрав команду с ключом S, т.е в базовый состав любого дистрибутива Ubuntu. Можем посмотреть более подробно работу с пакетом, для этого можно скачать какой-нибудь пакет, например, webmin небольшая графическая утилита для управления unix сервером. Скачиваем и кладем, например, в /opt. Переходим в директорию, где находится наш пакет cd /opt, далее мы можем посмотреть информацию по данному пакету dpkg I /opt/ webmin_1.955_all.deb. Мы можем увидеть версию пакета и краткое описание, в котором говорится, что при установке будет установлен вебсервер и мы получим через него управление к базовым сервисам. Установим пакет dpkg i /opt/ webmin_1.955_all.deb. dpkg не умеет ставить зависимости именно этим он плох. Есть ключи, которые позволяют ставить зависимости, но по умолчанию он не умеет. При установке система выдала ошибки, на то что необходимые зависимости не установлены, но набирая информацию о пакете можно увидеть, что пакет webmin уже установлен. Но он не будет работать т. к. зависимости необходимые для работы не установились, но сам dpkg его установил. Можно его удалить командой dpkg r webmin, т. к. мы конфигураций не писали и ничего с данным пакетом не делали, если бы мы уже поработали необходимо было бы удалять через ключ p. После этой команды если посмотреть статус пакета, то мы увидим deinstall т.е удален. Еще можно посмотреть команду dpkg-reconfigure. Используется для переконфигурирования пакетов. Например, можно реконфигурировать временную зону dpkg-reconfigure tzdata. Таким образом открывается удобный мастер и мы можем прям налету изменить параметры пакета. Еще надо сказать, что у dpkg , есть свой конфигурационный файл. Располагается он /etc/dpkg/dpkg.cfg APT APT Advance Packaging Tool Программа для работы с пакетами в Debian системах. Продвинутый пакетный менеджер, причем иногда используется в дистрибутивах, основанных на Mandriva. В основном используется несколько утилит: apt-get - утилита для скачивания и установки пакетов; apt-cache утилита для поиска пакетов; aptitude - утилита полного управления пакетами с опцией псевдографики; Для работы с пакетным менеджером нам так же понадобится понятие репозитория. /etc/apt/source.list - список репозиториев. Вот так у нас выглядит файл справки по apt-get --help. У программы, как видно есть свои ключи. Теперь попробуем сделать apt-get update данная команда обновляет список всех репозиториев, команда проверяет, какие новые места появились откуда можно скачать обновления, т.е. просто обновляется информация об источниках обновлений. Если мы хотим поискать обновление пакетов и их установить, то мы используем команду apt-get upgrade. Данная команда проверяет все установленное ПО на наличие обновлений и, если находит предлагает установить обновление. Данную процедуру рекомендуется делать, сразу после установки свежей Операционной системы. В дальнейшем перед данной операции обязательно сделайте Резервную копию данных! Для установки любого дополнительного программного обеспечения мы можем воспользоваться apt-get install gmail-notify. Для удаления мы можем использовать ключ remove. При инсталляции программного обеспечения зачастую ставится куча зависимостей, которые необходимы для корректной работы основного программного пакета, а при удалении с ключом remove данные зависимости остаются. Для того чтобы очистить систему от неиспользуемых зависимостей рекомендуется использовать ключ apt-get autoremove. Теперь мы можем посмотреть apt-cache, как работает. Для начала справку. apt-get help Это инструмент для поиска информации в двоичных файлах, у него тоже есть куча настроек и ключей. Попробуем воспользоваться поиском. apt-cache search gmail ищем все пакеты, где может встречаться "gmail". Мы можем посмотреть информацию по какому-либо пакету например: apt-cache show gnome-gmail. Утилита показывает размер, название, кто произвел, архитектура и краткое описание пакета. С помощью команды и ключа apt-cache depends gnome-gmail мы можем посмотреть от каких зависимостей зависит пакет. Т.е. без каких пакетов программное обеспечение работать не будет. Мы можем посмотреть обратные зависимости apt-cache rdepends gnome-gmail т.е. кто зависит от данного программного обеспечения. Далее посмотрим утилиту aptitude. Данная утилита по умолчанию не идет и ее необходимо установить apt-get install aptitude. Посмотрим справку по данной утилите aptitude help. Так же мы можем увидеть, что это такая же программа по управлению пакетами как apt-get и apt-cache. Те же самые команды и ключи, за исключением того, что здесь есть графика и мы можем написать aptitude и попасть в графическую оболочку. Можно зайти, например, в не установленные пакеты и установить, что необходимо. Для этого необходимо встать на интересующий пакет и нажать знак плюса и нажимаем g, для произведения действия. Для выхода из графического режима используем q. Теперь рассмотрим репозитории, то место, где хранится вся информация о пакетах, которые мы можем использовать скачивать обновления и сами пакеты. Это как в windows есть центральный узел обновления windows update, так и в Linux есть узлы , как родные , так и сторонние для обновлений. Смотрим cat /etc/apt/sources.list Вот в таком виде хранятся репозитории в Ubuntu, которые подключены. Хранилища пакетов. У нас есть 2 вида указателей. Deb файлы исходники и deb-src файлы исходники. Далее у каждой строчки указателе есть ссылка в интернете и далее описание дистрибутива. Далее есть несколько видов репозиториев. Main - это основной репозиторий. Не требует установки дополнительных пакетов и является официально поддерживаемым от производителей Ubuntu. Есть пакеты, которые помечены restricted это пакеты, которые содержат частично свободное программное обеспечение, т.е. не полностью свободное программное обеспечение. Есть еще universe это дистрибутивы Ubuntu управляемые сообществом официально не поддерживаются, но есть куча энтузиастов. Есть пакеты multiverse - это пакеты, которые не соответствуют политики свободно распространяемого программного обеспечения. Ничего не мешает нам дописать свои репозитории. Это можно сделать через специальную команду из консоли или просто отредактировав файл. Это необходимо делать, когда у нас есть, какое-либо программное обеспечение, которое не обновляется в составе операционной системы. Если мы добавили репозиторий самостоятельно, то обязательно необходимо сделать apt-get update. Для того, чтобы операционная система перечитала список репозиториев.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59