Курсы по использованию Asterisk

IP-телефония — технология будущего. Обучитесь работе с IP-АТС Asterisk для того чтобы внедрить и профессионально использовать при решении коммуникационных задач.

Работайте с Asterisk профессионально!

Многоуровневая защита IP-АТС Asterisk

Телефонные станции очень часто становятся объектами хакерских атак. Узнайте, каким образом необходимо строить многоуровневую защиту для Вашей IP-АТС.

Не оставьте хакерам шансов. Защитите свой Asterisk от атак.

Используйте Веб-Интерфейс для удобства настройки

Панель управление FreePBX позволяет легко и удобно управлять всей системой. Научитесь эффективно использовать FreePBX для решения своих задач.

Управление станцией и статистика в окне браузера.

Научитесь работать с Asterisk из консоли

Для понимания работы с Asterisk необходимо уметь настраивать его вручную с конфигурационными файлами и командной строкой CLI Asterisk.

Научитесь «тонкой» настройке Asterisk

Цель курсов - максимум практики.

Обучение нацелено на практическую работу с IP-оборудованием: платы потоков E1, VoIP-телефонные аппараты, голосовые шлюзы FXS и прочее.

Обучение на реальном оборудовании — залог успеха.

Интеграция Bitrix CRM с Asterisk средствами модуль коннектора ViStep с открытым исходным кодом

База знаний Интеграция с CRM

В рамках данной статьи будет рассмотрена интеграция Asterisk и Bitrix CRM средствами модуль коннектора Vistep с открытым исходным кодом, который не требует обязательного использования интернет обозревателя Google Chrome и обладает хорошим списком возможностей, а так же реализацией всевозможных кастомизаций интеграции при достаточном знании языка программирования «PHP»

Интеграция Bitrix CRM с Asterisk средствами модуль коннектора ViStep с открытым исходным кодом .

Описание:

Ранее мы рассмотрели три способа интеграции Asterisk и Bitrix CRM:

https://voxlink.ru/kb/asterisk-installation/integraciya-bitrix24-s-asterisk-ispolzuya-prilozhenie-prostye-zvonki/ - с использованием модуль коннектора «Простые звонки»

https://voxlink.ru/kb/asterisk-installation/integraciya-bitrix24-ispolzuya-prilozhenie-integraciya-s-asterisk/ - с использованием модуль коннектора BX24Asterisk старой версии.

https://voxlink.ru/kb/integraciya-s-crm/Integraciya-Bitrix-CRM-s-Asterisk-BX24Asterisk/ - с использованием модуль коннектора BX24Asterisk новой версии.

Недостатком данных двух методов являлось необходимость использования интернет обозревателя Google Chrome с предустановленным расширением(приложением) от разработчика модуль коннектора.

В рамках данной статьи будет рассмотрена интеграция Asterisk и Bitrix CRM средствами модуль коннектора Vistep с открытым исходным кодом, который не требует обязательного использования  интернет обозревателя Google Chrome и обладает хорошим списком возможностей, а так же реализацией всевозможных кастомизаций интеграции при достаточном знании языка программирования «PHP».

Возможности:

1.В момент вызова открывается карточка клиента
1.1. Основная информация о клиенте во время вызова и разговора
1.2. Быстрый переход к детальной информации и сделкам клиента
1.3. Быстрое создание сделки и счета клиенту
1.4. Комментарий к текущему разговору

Создание звонков в CRM. Для каждого разговора в CRM создается дело
2.1. Возможно прослушать запись разговора
2.2. Фиксируется длительность каждого разговора

Звонки прямо из CRM
3.1. Кликом по номеру телефона в карточке клиента(Click2Call)

Автоматическое создание лидов.
4.1. Автоматически создается лид для неизвестного номера
4.2. Возможно указать разные источники лидов исходя из того, на какой номер телефона к вам позвонили

Фиксация пропущенных звонков
5.1. Для неизвестных номеров автоматически создаются лиды
5.2. Для клиентов автоматически создаются события пропущенного звонка на ответственного сотрудника

Автоматическое соединение с ответственным специалистом

Возможность кастомизации интеграции

Все описанные действия в статье необходимо выполнять от имени суперпользователя (root). Установка и настройка производилась на предустановленной системе CentOS 6.8 + Asterisk 13.21.0 + FreePBX 13.

Инструкция:

1.Перейдем в интернет обозревателе на страницу Bitrix CRM и пройдем авторизацию под учетной записью с правами администратора

Авторизация на портале Bitrix CRM

Перейдем в Приложения→Вебхуки → Добавить вебхук → Входящий вебхук и выполним добавление вебхука в соответвии со скриншотом ниже:

Добавление входящего вебхука

Добавление входящего вебхука

После добавления входящего вебхука система отобразит URL для обращения к REST API CRM, который необходимо сохранить и скопировать для последующей настройки

REST API входящего вебхука

Для возможности осуществления исходящих звонков перейдем в Приложения→Вебхуки → Добавить вебхук → Исходящего вебхук и выполним добавление вебхука в соответвии со скриншотом ниже:

REST API исходящего вебхука

REST API исходящего вебхука

После добавления исходящего вебхука система отобразит код авторизации, который необходимо сохранить и скопировать для последующей настройки

Код авторизации

Выполним закрепление внутренних номеров за сотрудниками компании в CRM, для этого перейдем в меню Телефония→Пользователи→ Настроить в появившемся окне прописать параметр «Внутренний номер», выбрать в качестве «Номер для исходящего звонка» созданный нами ранее исходящий вебхук и нажать «Сохранить»

Закрепление внутреннего номера за сотрудником

Закрепление внутреннего номера за сотрудником

Для возможности осуществления исходящих звонков из CRM системы необходимо выполнить настройки форматирования номера, для этого перейдем в CRM→ Еще→ Настройки→ Другое→ Прочие настройки→ Форматирование и в поле «Формат вывода ссылок «callto»» необходимо выбрать «вызов через телефонию Битрикс24» и нажать «Применить»

Редактирование настроек форматирования номера

Редактирование настроек форматирования номера

Редактирование настроек форматирования номера

При использование коробочной версии Bitrix CRM, для корректного прохождения исходящих звонков необходимо добавить несколько строк в файл dbconn.php, для этого перейдем в панель Администратора→ Контент→ Файлы и папки→ Bitrix→ php_interface→ редактировать как PHP и в конец файла добавим следующие строки:

if($_REQUEST['COMMAND'] === 'startCallViaRest' || $_SERVER['REQUEST_URI'] === '/rest/voximplant.call.startViaRest.json') {
define('BITRIXREST_URL', 'IP_Asterisk:8077');
}

Редактирование dbconn.php

Редактирование dbconn.php

IP_Asterisk – IP адрес(доменное имя) сервера телефонии Asterisk

8077 – TCP порт виртуалхоста Apache, который будет настроен в последующих пунктах данной статьи

Прежде чем приступать к установке и конфигурированию модуль коннектора ViStep, необходимо создать AMI пользователя в Asterisk, для этого перейдём в WEB панель управления FreePBX через интернет обозреватель(Opera, Firefox, Google Chrome, Yandex Browser….) по ссылке вида: http://IP_адрес_сервера_Asterisk/ В примере ссылка имеет вид: http://192.168.170.163/

WEB панель FreePBX

Пройдём авторизацию во FreePBX, нажмём «FreePBX Administration», введем «username и password» и нажмём «Continue»

Авторизация во FreePBX

Перейдём к созданию AMI пользователя. Для этого перейдём в меню «Settings»→»Asterisk Manager Users»→ «Add Manager»→ «Submit»→ «Apply Config», где основные поля для заполнения:

Manager name — имя AMI пользователя(логин)
Manager secret — пароль AMI пользователя
Deny — запрещённые подсети для обращения по AMI
Permit — разрешенные подсети для обращения по AMI

Переход в меню «Settings»→»Asterisk Manager Users»

Добавление менеджера

Заполнение основных параметров AMI пользователя

Применение внесенных изменений

Установка слабого пароля для AMI пользователя и установка 0.0.0.0/0 подсети в качестве разрешенной может привести к несанкционированному доступу к серверу телефонии.

Выполним подключение по SSH к серверу IP АТС Asterisk для выполнения дальнейшей настройки. В зависимости от используемой системы(Windows, Linux, MacOS), подключение по SSH можно выполнить с использованием различного дополнительного программного обеспечения(Putty), либо системного терминала.

Подключение по SSH через Putty

Авторизация на сервере

Внимание, при авторизации на сервере, пароль в консоли не отображается.

SSH консоль подключения

Приступим к установке и конфигурированию модуль коннектора, для этого в SSH выполним пару команд вида:

# cd /var/www/html/

# git clone https://github.com/ViStepRU/callme.git

Скачивание исходников модуль коннектора

Отредактируем конфигурационный файл модуль коннектора:

# nano /var/www/html/callme/config.php

где ключевые парамметры для редактирования:

1) tech — технология по которой работает телефония(SIP, IAX, DAHDI, Local)
2) authToken – код авторизации полученный при создании исходящего вебхука пп.4-5
3) bitrixApiUrl — URL для доступа к REST API CRM, который был получен при создании входящего вебхука пп.2-3. Вконце URL обязательно должен быть символ «/»
4) extentions — список городских номеров подключенных к АТС. Номер должен быть указан строго в том формате, в котором он прописан в параметрах транка
5) context – контекст для осуществления исходящих вызовов
6) host – IP адрес сервера телефонии Asterisk. Если модуль коннектор располагается на том же сервере, что и Asterisk, то достаточно указать «127.0.0.1»
7) username — логин AMI пользователя созданного в п. 9 данной статьи
8) secret – пароль AMI  пользователя созданного в п. 9 данной статьи

Правка конфигурационного файла модуль коннектора

12. Для корректного обращения к записям разговоров необходимо внести некоторые правки в диалплан, для этого выполним команду вида

# nano /etc/asterisk/extensions_override_freepbx.conf

И внесем следующие изменения:

[macro-hangupcall]
include => macro-hangupcall-custom
exten => s,1,Set(CDR(userfield)=${CHANNEL(hangupsource)})
exten => s,n,Set(FullFname=
https://IP_Asterisk/callme/monitor/${YEAR}/${MONTH}/${DAY}/${CALLFILENAME}.mp3)
exten => s,n,Set(CallStart=${UNIQUEID})
exten => s,n,Set(CallStop=${STRFTIME(epoch,,%s)})
exten => s,n,Set(CallMeDURATION=${MATH(${CallStop}-${CallStart},int)})
exten => s,n,ExecIF(${ISNULL(${CallMeDISPOSITION})}?Set(CallMeDISPOSITION=${CDR(disposition)}):NoOP(=== CallMeDISPOSITION already was set ===))
exten => s,n,System(/usr/bin/lame -h -b 192 /var/spool/asterisk/monitor/${YEAR}/${MONTH}/${DAY}/${CALLFILENAME}.${MON_FMT} /var/spool/asterisk/monitor/${YEAR}/${MONTH}/${DAY}/${CALLFILENAME}.mp3)
exten => s,n,System(/bin/rm -rf /var/spool/asterisk/monitor/${YEAR}/${MONTH}/${DAY}/${CALLFILENAME}.${MON_FMT})
exten => s,n,Set(CDR(recordingfile)=${CALLFILENAME}.mp3)
exten => s,n,Hangup
exten => s,n,MacroExit()

Данные изменение по завершению звонка вносят значения в необходимые переменные(длительность звонка, статус звонка, ссылка на запись разговора), а так же выполняет конвертацию записи разговора в mp3

Правка диалплана

Для того чтобы модуль коннектор корректно получал ссылку на файл записи разговора необходимо внести небольшие изменения в регулярное выражения, для этого выполним команду вида:

# nano +94 /var/www/html/callme/CallMeIn.php

Изменим «/^http.+$/» на «/mp3/»

Редактирование регулярного выражения

Для логирования и работы модуль коннектора и корректного доступа к директории расположения, выполним ряд команд вида:

# mkdir /var/www/html/callme/logs

# touch /var/www/html/callme/logs/CallMe.log

# chown asterisk:asterisk /var/www/html/callme -R

# chmod +x /var/www/html/callme/CallMeIn.php

# chmod +x /var/www/html/callme/CallMeOut.php

Создание директории логирование и назначение прав

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

# yum install python-setuptools

# easy_install supervisor

Установка Supervisor

Создадим конфигурационный файл:

# echo_supervisord_conf > /etc/supervisord.conf

Создание службы запуска/остановки/перезапуска Supervisord:

# nano /etc/rc.d/init.d/supervisord

Добавим в файл следующие строки:

#!/bin/bash
. /etc/init.d/functions
DAEMON=/usr/bin/supervisord
PIDFILE=/var/run/supervisord.pid

 [ -x "$DAEMON" ] || exit 0
start() {
        echo -n "Starting supervisord: "
        if [ -f $PIDFILE ]; then
                PID=`cat $PIDFILE`

                echo supervisord already running: $PID

                exit 2;
        else
                daemon  $DAEMON --pidfile=$PIDFILE -c /etc/supervisord.conf             RETVAL=$?
                Echo
                [ $RETVAL -eq 0 ] && touch /var/lock/subsys/supervisord
                return $RETVAL
        fi
}
stop() {
        echo -n "Shutting down supervisord: "
        echo
        killproc -p $PIDFILE supervisord
        echo
        rm -f /var/lock/subsys/supervisord
        return 0
}
case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    status)
        status supervisord
        ;;
    restart)
        stop
        start
        ;;
    *)
        echo "Usage:  {start|stop|status|restart}"
        exit 1
        ;;
esac
exit $?

Создание файла службы

Дадим права на запуск:

# chmod +x /etc/rc.d/init.d/supervisord

Отредактируем файл конфигураций supervisord и добавим в самый конец файл несколько строк вида:

# nano /etc/supervisord.conf

[program:callme]
command=
/usr/bin/php /var/www/html/callme/CallMeIn.php
user=asterisk
autostart=true
autorestart=true
stderr_logfile=/var/www/html/callme/logs/CallMe.log
stdout_logfile=/var/www/html/callme/logs/CallMe.log

Редактирование конфигурационного файла Supervisor.

Выполним запуск Supervisor и проверим запустился ли модуль коннектор:

# service supervisord start

# ps aux | grep CallMeIn

Статус запуска модуль коннектора.

При использовании очередей во входящей маршрутизации рекомендуется перед внутренним номером агента очереди ставить знак «S», это необходимо для того чтобы при вызове агентов очереди в AMI событиях осуществлялся звонок в формате: «SIP/внутренний_номер». По умолчанию вызывается в формате: «Local/внутренний_номер»

Редактирование агентов очереди

Пример всплытия карточки клиента при поступлении входящего звонка:

Карточка клиента

asterisk, sip, установка, dahdi, настройка, инструкция, Подключение, Call-файл, FreePBX, IP-телефония, Channel, call, интеграция, centOS, GitHub, 1C