Показаны сообщения с ярлыком asterisk. Показать все сообщения
Показаны сообщения с ярлыком asterisk. Показать все сообщения

Asterisk: защита от подбора паролей к SIP аккаунтам

Заметил, что у некоторых клиентов в Asterisk, который расположен за роутером и не имеет проброшенных к нему портов снаружи, стучатся боты пытаясь подобрать пароли к SIP аккаунтам. Как это происходит при отсутствии dnat, тема отдельной статьи. Тут мы разберем простые методы, которыми можно этому противостоять.

Asterisk: отслеживаем события AMI и отправляем POST запрос в CRM (Python)


Поступила задача связать Asterisk c неизвестной CRM системой. Среди прочего требовалось отправлять POST запрос в формате JSON в момент ответа оператором на входящий звонок. В момент, когда оператор поднимает трубку - необходимо в CRM открывать для него карточку клиента/заказа.

Bitrix24: поиск номера телефона по ID, php скрипт для Asterisk

Потребовалось получить номер телефона клиента из Bitrix24 по ID записи. Нужно это для соединения сотрудников с клиентами без предоставления им реального номера телефона (номер телефона скрыт для группы пользователей). То есть, сотрудник зная id клиента сможет дозвониться до него не имея прямого доступа к номеру телефона. В целом необходимость данного решения - вопрос спорный. Мы же рассмотрим лишь техническую реализацию. Возможно механизм решения кому-то пригодится для быстрой интеграции, хотя возможно удобнее будет использование AGI и, например, PAMI.

Asterisk: кто ответил клиенту в очереди

Нам нужно получить номер оператора, который ответил клиенту в очереди. В случае, если мы используем Asterisk CDR Viewer Mod, то в поле Куда звонили нам нужно отображать номер оператора принявшего звонок. На данный момент в случае работы очереди, там отображается "s" (триггер по умолчанию также отображал неверный номер при использовании очереди).
Сначала добавим новое поле в mysql базу, потом научим астериск писать туда номер ответившего сотрудника, далее напишем mysql триггер, который будет перезаписывать поле dst нужным номером в случае попадания в очередь (из диалплана dst доступен только для чтения, поэтому мы будем подменять его триггером).

Asterisk: отправить сообщение при ожидании клиента в очереди более 3 минут

Потребовалось реализовать следующее: если клиент ожидает в очереди ответа более 3 минут - необходимо отправить сообщение в Telegram с именем (CallerID) и номером телефона клиента. Здесь мы рассмотрим как реализовать это самым простым способом, напрямую из диалплана.

Итак, клиент заходит в очередь, ему проигрывается сообщение автоинформатора и начинает играть фоновая музыка пока оператор не ответит на его звонок. Если клиенту не отвечают в течение 21 минуты, мы выходим из очереди и выполняем с ним дальнейшие действия (например, кладем трубку).

Соединение двух серверов Asterisk по протоколу IAX2

Имеем 2 офиса в разных городах, в каждом свой сервер Asterisk. Нужно связать серверы между собой для совершения звонков между сотрудниками из разных офисов по внутренней связи.

Для начала соединим сервера в одну сеть используя VPN. После этого мы настроим связь между серверами используя протокол IAX2 (The Inter-Asterisk eXchange protocol, version 2). Это собственный протокол Asterisk, для работы он использует всего один порт 4569 и с ним удобнее работать через NAT.

Asterisk не отвечает на INVITE, проблемы с NAT? SIP ALG

Случилась у одного клиента такая ситуация: звонки с транка (Билайн подключенный по SIP) не приходят на астериск. Судя по tcpdump-у запросы INVITE приходят, но с каким-то левым destination port и в дебаге астериска их не видно. При этом исходящие соединения проходят без проблем. Билайн уверяет, что проблема на нашей стороне. Что делать, если все проверили и не может разобраться в чем дело? В моём случае оказалось, что на роутере Zyxel Keenetic Giga был включен SIP ALG по умолчанию.

Рассмотрим несколько решений проблемы с ответом сервера, когда ваш Astertisk находится за NAT:

PHP авторизация LDAP через Active Directory для Asterisk CDR Viewer

В этой статье мы прикрутим авторизацию через Active Directory к Asterisk CDR Viewer используя PHP скрипт. Это решение актуально для авторизации корпоративных пользователей, которым нужно предоставить доступ к какому-то web ресурсу внутри сети на основе присутствия пользователя в группе в домене AD. Вы можете легко переделать скрипт под свои нужны и использовать для доступа к подобным сервисам или страничкам.

Для использования нужных функций нам понадобится установить модуль php-ldap.
Далее мы создадим группу в AD с именем Статистика Asterisk и включим в неё всех пользователей, которым необходим доступ.

Asterisk 16: работаем с AstDB, используем встроенную базу данных

Итак, Asterisk имеет простую встроенную базу данных AstDB, которая позволяет хранить данные в формате "Группа => ключ => значение". Используя встроенную БД можно реализовать настройку переадресации звонка пользователем, создание черного списка, привязки абонента к конкретному оператору и т.п. Для доступа к этой базе данных мы будем использовать следующие функции:

Asterisk: SQL запросы, время ожидания в очереди, переменные в dialplan из файла

К моим клиентам в call центр иногда поступает большой поток звонков. Одни их них придумали свой нестандартный способ переключения режима фоновой музыки (автоинформатора) в очереди астериска в зависимости от нагрузки на операторов, который не реализуется штатными средствами.  Мы будем анализировать логи очередей и по заданным условиям менять настройки диалплана. Условия были озвучены следующие:
1. Если за последний час в очереди было не менее 4х клиентов ожидающих ответа более 4 минут, то менять режим сообщений информатора очереди на усиленный (3852-hard).
2. Если за последний час в очереди было менее 4х клиентов ожидающих ответа более 6 минут, то возвращаем режим сообщений информатора очереди на обычный (3852-soft).

Asterisk: подключение и использование транка от zadarma.com, Билайн и Ростелеком


Часто  для совершения междугородних и международных звонков удобно и дешево использовать сервис zadarma.com. После регистрации вы можете установить в качестве исходящего номера свой (потребуется подтвердить владение), что делает использование сервиса прозрачным для клиентов. Опишем как быстро подключить номер к вашему Asterisk.

Кнопка звонка в Miranda NG через Asterisk AMI

В нашей компании используется связка Openfire (сервер) + Miranda (клиенты). Поскольку телефония у нас на базе Asterisk, появилась необходимость сделать кнопку "Позвонить" в меню контакта в Миранде. По этой кнопке мы будем инициировать звонок через Asterisk Management Interface (AMI). Это более правильный подход, чем использование call-файлов.

Когда сотрудников в компании больше 150, это довольно удобно - не искать каждый раз номер телефона человека.

Установка Asterisk 16 на Ubuntu 18 LTS Server из исходников

Статья рассчитана для новичков в установке астериск из исходников. В этом нет ничего трудного, как может показаться.

Итак, имеем установленную Ubuntu 18 LTS Server и цель установить Asterisk 16.X.X Communications Framework:
cd /usr/src/
sudo wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-16-current.tar.gz
sudo tar zxvf asterisk-16-current.tar.gz
cd asterisk-16*/

Asterisk AMI: получить список свободных операторов, php скрипт

Задача: обратившись к Asterisk получить список активных не занятых операторов. Нужно это было для того, чтобы отправить им сообщение из другой программы не отвлекая от разговора всплывающим окном, если оператор занят.

Как выяснилось, такую тривиальную задачу мне было трудно реализовать сходу. Пробовал разные команды AMI/AGI, пытался передавать данные из дайлплана, но все это не работало так как нужно.

Asterisk и Openfire/Jabber: XMPP сообщение о входящем звонке с именем и отделом из Active Directory

Нужно, чтобы Asterisk при входящем звонке сотруднику, отправлял ему в Jabber сообщение о том кто звонит. В случае, если это наш сотрудник заведенный в AD, помимо номера в сообщении будет его ФИО, должность и название отдела (если эти данные введены). Стоит заметить, что астериск сам умеет слать сообщения используя JabberSend, но по некоторым причинам мне этот способ не подошел, к тому же пришлось бы все равно использовать внешний скрипт для связи с AD.

Asterisk: простая очередь вызовов с голосовым меню

Мы приобрели виртуальный номер 8-800. Потребовалось настроить следующую логику работы: звонок поступает на asterisk, проигрывается приветственное сообщение, далее звонок передается операторам. В случае занятости операторов абонент удерживается на линии 60 секунд, после чего, если ему все еще не ответили - предлагаем нажать 1 для того, чтобы оставить голосовое сообщение со своим вопросом и номером для обратного звонка. При звонке в нерабочее время - проигрываем сообщение о времени работы операторов, после этого кладем трубку.

Asterisk: быстрая настройка для небольшого офиса

В этот статье я опишу простую настройку IP телефонии в небольшом офисе. Мы объединим несколько отделов в одну сеть, сделаем доступной статистику разговоров через web-интерфейс, а также организуем запись внешних звонков. Надеюсь, эта статья поможет администраторам, начинающему работать с Asterisk Communications Framework. В сети вроде бы полно подобных статей, но я не встретил подробного описания рабочего решения.

Нам понадобится сервер с Ubuntu, IP телефоны (или софтофоны) на рабочих местах и данные от провайдера для подключения к внешним линиям (транкам).

Asterisk: определить оператора по набираемому номеру для выбора линии

Имеем настроенный сервер телефонии Asterisk и несколько GSM шлюзов с сим-картами разных операторов. Тарифы включают безлимитные звонки внутри своей сети.
Для экономии денег на исходящей связи мы будем определять сотового оператора по набираемому номеру и совершать вызов через симку зарегистрированную на него же.

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

Падает регистрация транков на Asterisk

На днях обнаружил, что на сервере телефонии падает регистрация одного из транков провайдера. Поднимается он только после перезапуска SIP модуля астериска.

Телефоны не звонят, сотрудники нервничают. Так как проблему нужно решить незамедлительно и времени анализировать логи не было, пришлось выкрутиться следующим временным решением (вместо username нужно подставить имя вашего sip канала).

Интеграция AmoCRM и сервера телефонии на базе Asterisk

Интеграция Asterisk с Amocrm
Итак, наш отдел продаж пересел на очередную CRM. На этот раз выбор пал на AmoCRM.

Соответственно, поступила задача настроить интеграцию с сервером телефонии, чтобы из CRM можно было набирать номер, видеть карточку клиента при входящем звонке, прослушивать записи разговоров и видеть статистику по звонкам.

На сайте Amocrm можно активировать виджет для интеграции с Asterisk. В его настройках есть ссылка на инструкцию и на скрипт для взаимодействия через API обеих систем.

Некоторые важные моменты в инструкции отсутствуют, поэтому я решил описать свой процесс настройки взаимодействия этих двух систем.