проверьте параметры подключения к ajam интерфейсу asterisk
Asterisk + Amocrm
AmoCRM популярное облачное решение с более-менее нормальным вижетом для Asterisk.
Само-подписанный SSl сертификат годится только для тестов,
для продакшена ОБЯЗАТЕЛЬНО требуется доверенный сертификат веб сервера выписанный на ваше доменное имя.
Данное руководство дает справочную информацию о настройке и тестировании интеграции Asterisk и AmoCRM и предполагает, что вы имеете базовые знания о Linux и Asterisk.
Настройку можно разделить на 4 основных этапа:
Скрипт amocrm.php должен быть доступен снаружи сети. Таким образом, если сервер Asterisk находится за nat, вам потребуется открыть веб сервер на asterisk, для доступа извне. Внешний адрес за которым находится Asterisk, должен быть указан как цель для используемого доменного имени.
Сертификат может быть выписан на доменное имя третьего уровня, например: asterisk.yourdomain.com.
Доменное имя должно быть назначено серверу Asterisk.
Несмотря на обширный текст, настройка данного решения довольно проста. Большая часть материала посвящена тонкой доводке и возможно не потребуется.
Настройка AMI и AJAM
Со стороны Asterisk требуется только включить AJAM: /etc/asterisk/manager.conf
и включить встроенный http сервер
Во FreePBX: FreePBX: Settings > advanced_settings
или в конфиге Asterisk: /etc/asterisk/http.conf
Тест AJAM интерфейса
Скрипт AmoCRM
AmoCRM получает данные от Asterisk через GET запросы к скрипту, который в свою очередь,
запрашивает данные у Астера через AJAM или AMI и SQL запросами к БД asteriskcdrdb.
Базовая конфигурация скрипта
Сначала вам потребуется задать параметры доступа к базе данных asteriskcdrdb,
префикс AJAM, а также путь к директории записей.
Рассмотрим обще-употребимый пример получения записей из FreePBX.
Записи по умолчанию расположены в директории: /var/spool/asterisk/monitor/Год/Месяц/День
Создадим в веб директории в которой расположен скрипт мягкую ссылку на директорию записей Asterisk:
В этом случае ссылка в скрипте amocrm будет выглядеть так:
https://ваше_доменное_имя/веб_директория_скрипта/monitor/%Y/%m/%d/#
Приведенные ниже рассуждения и примеры о получении записей относятся к версии php скрипта из этой статьи. Возможно, у вас есть более актуальная версия, но общие положения должны быть верны.
На этапе первоначальной установки и конфигурации можно пропустить.
Для отображения записей в AmoCRM, возможно, потребуется модифицировать SQL запросы в скрипте:
Получение имени файла из базы данных asteriskcdrdb производится по запросу:
где 1505491053.1619 UNIQUEID вызова.
Скрипт amocrm в свою очередь пытается получить имя файла из колонки recordingfile БД asteriskcdrdb и таблицы cdr следующим запросом:
SELECT calldate,recordingfile FROM cdr WHERE uniqueid= :uid
где uid это UNIQUEID из GET запроса.
Но по этому запросу БД может выдать несколько строк с совпадающим UNIQUEID и только в одной будет задано recordingfile Например, в случае, если запись включена в настройках екстеншена, а вызов поступает сначала в группу или очередь, а только потом на екстеншен. Ситуация описана для FreePBX.
Нажмите, чтобы отобразить
Нажмите, чтобы скрыть
В этом случае надо либо включить запись в настройках группы или очереди,
или, например, модифицировать зарос следующим образом, чтобы получать только одну, последнюю запись из БД.
SELECT calldate,recordingfile FROM cdr WHERE uniqueid= :uid order by calldate DESC limit 1
а искать будем не по колонке uniqueid, а по recordingfile:
По которому, в свою очередь, скрипт делает выборку из БД следующего вида:
По данной выборке в БД AmoCRM будут попадать все вызовы включая местные.
Если вы хотите избавиться, например, от внутренних вызовов, то можно модифицировать запрос следующим образом. В приведенном примере отфильтрованы вызовы с номеров 100-199.
добавив следующее условие AND src NOT RLIKE «^1xx»
И так далее по образу и подобию, по вашим условиям.
Инструменты пользователя
Инструменты сайта
Содержание
Настройка web сервера Asterisk
Настройка Asterisk Manager API
Во первых необходимо создать пользователя для управления asterisk. Для этого достаточно внести соответствующую запись в /etc/asterisk/manager.conf, в примере ниже добавлен пользователь 1cami с паролем PASSWORD1cami. Важно также в секцию general добавить опции указанные в примере.
Они актуальны для Asterisk 13.
Эта настройка крайне необходима.
Настройка AJAM HTTP
Если мы хотим опубликовать ajam интерфейс на порту 8088 в режиме http, файл /etc/asterisk/http.conf должен выглядеть примерно так:
Настройка AJAM HTTPS
Если мы хотим опубликовать ajam интерфейс на порту 4443 в режиме https, файл http.conf должен выглядеть примерно так:
Для астериск версии 1.6
Для астериск версии 1.8 и выше
Также для https режима необходимо сгенерировать сертификат, которым будут шифроваться передаваемые данные. Самый простой способ, это генерация самоподписанного сертификата на сервере Asterisk командой:
Настройка папки uploads
Механизм работы res_http_post описан подробно в блоге Игоря Гончаровского.
Проверка работы и дополнительные настройки
В консоли сервера где установлен Asterisk выполняем следующую команду:
Если все настроено правильно, то ответ будет примерно такой:
Проверка настроек AMI:
Проверка настроек менеджера Asterisk:
Если в качестве результата получим строку:
Значит со стороны Asterisk все настроено правильно.
Не забудьте открыть на фаерволе порт 4443 или 8088 чтобы интерфейс ajam был доступен из вне.
Например для iptables под управлением CENTOS это делается добавлением строчки в файл /etc/sysconfig/iptables
Инструменты пользователя
Инструменты сайта
Содержание
Настройка сервера Asterisk для работы с компонентой
Создание пользователя управляющего Asterisk по manager api
Во первых необходимо создать пользователя для управления asterisk. Для этого достаточно внести соответствующую запись в /etc/asterisk/manager.conf, в примере ниже добавлен пользователь 1cami с паролем PASSWORD1cami. Важно также в секцию general добавить опции указанные в примере.
Для публикации ajam интерфейса, через который и работает компонент, необходимо после настройки manager.conf, настроить файл /etc/asterisk/http.conf Существует 2 варианта публикации.
Настройка AJAM в режиме HTTP
Если мы хотим опубликовать ajam интерфейс на порту 8088 в режиме http, файл http.conf должен выглядеть примерно так:
Настройка AJAM в режиме HTTPS
Если мы хотим опубликовать ajam интерфейс на порту 4443 в режиме https, файл http.conf должен выглядеть примерно так:
Для астериск версии 1.6
Для астериск версии 1.8 и выше
Также для https режима необходимо сгенерировать сертификат, которым будут шифроваться передаваемые данные. Самый простой способ, это генерация самоподписанного сертификата на сервере Asterisk командой:
Настройка папки uploads
Механизм работы res_http_post описан подробно в блоге Игоря Гончаровского.
Проверка работы и дополнительные настройки
В консоли сервера где установлен Asterisk выполняем следующую команду:
Если все настроено правильно, то ответ будет примерно такой:
Если в качестве результата получим строку:
Значит со стороны Asterisk все настроено правильно.
Не забудьте открыть на фаерволе порт 4443 или 8088 чтобы интерфейс ajam был доступен из вне.
Например для iptables под управлением CENTOS это делается добавлением строчки в файл /etc/sysconfig/iptables
Инструменты пользователя
Инструменты сайта
Боковая панель
MikoPBX
Интеграция с 1С
Модули
Содержание
Системные настройки
В данном разделе производится настройка основных параметров системы. Данные параметры рекомендуется настраивать сразу после установки АТС.
Основные
Запись разговоров
Телефонные звонки сохраняются в формате mp3. Пример информации об итоговом файле записи разговора:
Переводы вызовов
Парковка (Удержание)
В MikoPBX возможно два варианта парковки вызова от клиента:
Диапазон номеров слота припаркованного вызова можно задать в разделе Переводы вызовов: Начальный парковочный слот и Конечный парковочный слот.
Переводы вызовов
MikoPBX предлагает два вида переводов: Условный и Безусловный (слепой).
При использовании условного перевода Вы можете поговорить с человеком прежде, чем переадресовать вызов. Вызывающий абонент находится в это время на удержании. После того как человек, который переадресовывает вызов, вешает трубку, переадресация успешно завершается.
Если вы переведете вызов, не поговорив предварительно с коллегой, то этот перевод Безусловный. Например, если вам поступает второй входящий звонок, а Вы уже разговариваете по телефону. Чтобы не прерывать текущий вызов, Вы переводите новый вызов на свободного коллегу.
Таймауты
Перехват (Pickup)
Session Initiation Protocol (SIP) является сигнальным протоколом, используемым большинством телефонов VoIP. Вы можете изменить SIP-порт(по умолчанию порт 5060) для повышения безопасности. Кроме того, некоторым SIP провайдерам необходимы дополнительные параметры, такие как Периоды регистрации (Время через которое регистрация будет сброшена). Некоторые брандмауэры закрывают порты после периода неактивности. Такое поведение может потребовать сократить время ожидания регистрации SIP провайдеров. Другой причиной может быть необходимость в различных тайм-аутах при регистрации некоторых SIP-провайдеров. Значения по умолчанию:
Аудио/видео кодеки
Настройка разрешенных кодеков для АТС в целом.
AMI&AJAM
SSH или Secure Shell — это зашифрованный протокол, который часто используется для взаимодействия и удаленного управления серверами. SSH сервер может выполнять аутентификацию пользователей с помощью различных алгоритмов. Самый популярный — это аутентификация по паролю. Он достаточно прост, но не очень безопасный. Пароли передаются по безопасному каналу, но они недостаточно сложны для противостояния попыткам перебора. Вычислительная мощность современных систем в сочетании со специальными скриптами делают перебор очень простым.
Существует более безопасный и надежный способ аутентификации — ключи SSHа. Каждая пара ключей состоит из открытого и закрытого ключа. Секретный ключ сохраняется на стороне клиента и не должен быть доступен кому-либо еще. Утечка ключа позволит злоумышленнику войти на сервер, если не была настроена дополнительная аутентификация по паролю.
Открытый ключ используется для шифрования сообщений, которые можно расшифровать только закрытым ключом. Это свойство и используется для аутентификации с помощью пары ключей. Открытый ключ загружается на удаленный сервер, к которому необходимо получить доступ. Его нужно добавить в специальный файл
Когда клиент попытается выполнить проверку подлинности через этот ключ, сервер отправит сообщение, зашифрованное с помощью открытого ключа, если клиент сможет его расшифровать и вернуть правильный ответ — аутентификация пройдена.
Web-интерфейс
В данном подразделе для повышения безопасности Вы можете изменить HTTP-порт (по умолчанию порт 80) или активировать режим HTTPS.
HTTPS (HyperText Transfer Protocol Secure) — расширение протокола HTTP для поддержки шифрования в целях повышения безопасности. Данные в протоколе HTTPS передаются поверх криптографических протоколов SSL или TLS. В отличие от HTTP с TCP-портом 80, для HTTPS по умолчанию используется TCP-порт 443.
Пароль администратора
В данном подразделе необходимо изменить Логин WEB-интерфейса и Пароль WEB-интерфейса.
Интеграция asterisk+freepbx c CRM-системой на примере amoCRM
В данной статье рассмотрим, как подключить AmoCRM к Asterisk c предустановленным FreePBX. Технические требования Настройка подключения Настройка cidlookup Карточка клиента Умная переадресация Настройка отдачи файлов разговоров Технические требования Серверная часть: Asterisk версии 1.8 и выше с поддержкой технологии AJAM или AMI Вебсервер, с поддержкой протокола https (если вебсервер или Asterisk находятся в локальной сети то потребуется настройка […]
В данной статье рассмотрим, как подключить AmoCRM к Asterisk c предустановленным FreePBX.
Технические требования
Т.к. AmoCRM представляет собой облачный сервер подключение, к которому осуществляется посредством браузера, то и требования заключаются только в нем.
Заявленные в официальных источниках поддерживаемые интернет обозреватели (список предоставлен с учетом поддержки начиная с указанной версии):
Дополнительных требований, таких как наличие JavaScript или установка расширений не требуется.
Настройка подключения
3. Далее настроим доступ к ajam интерфейсу по стандартному порту 8088, отредактируем файл: /etc/asterisk/http.conf
Bыполним в консоли CLI команду:
Или если есть доступ к web-интерфейсу выполнить комбинацию submit+apply config. Это безопасно позволит обновить всю конфигурацию из файлов настроек. Затем для проверки статуса в той же консоли выполним:
Если все правильно, результат будет примерно следующий
Для окончательной проверки в адресной строке браузера выполним переход по адресу:
Если вы используете внутрений ip Asterisk необходимо добавить разрешение на свой ip в manager.conf. И если получаем:
Следовательно со стороны астериска все настроено правильно и ajam интерфейс работает корректно.
4. Сертификат и ключ можно размещать в любой директории, но впоследствии необходимо прописать полный путь в файле: /etc/httpd/conf.d/ssl.conf, например, как это показано на скриншоте:
Для проверки правильности в адресной строке вашего браузера заменяем ip-адрес, на доменное имя. После проверки аутентификации откроется стандартный web-интерфейс.
5. На этом шаге можно приступать к настройке виджета AmoCRM. В личном кабинете переходим в Интеграции->Asterisk. Скачиваем скрипт по предоставленной ссылке и распаковываем в корневую директорию apache или аналогов и делаем его доступным извне. После чего возвращаемся к настройке виджета:
6. Отредактируем исходный код скрипта: /var/www/html/amocrm.php. Для того чтобы не создавать своего пользователя базы данных, воспользуемся уже существующим.
7. Логин+пароль смотрим в файле: /etc/freepbx.conf.
Тут же нужно проверить подключение и доступ к внутренней базе Asterisk, выполнив ряд запросов:
Возвращает результат пробного соединения с CDR таблицей.
проверка записи в mysql
Возвращает результат текущего состояния соединения с базой.
Возвращает несколько последних записей из таблицы.
Для настройки cidlookup нам нужно во FreePBX в разделе Admin — CallerID Lookup Sources добавить источник откуда мы будем брать имя звонящего:
При использовании в качестве логина длинных email адресов возможно потребуется изменить размерность (длину) колонки в таблице, используемой для хранения ссылки из настроек выше, т.к. по умолчанию она может содержать не более 100 символов и этого не всегда достаточно для хранения всей ссылки. Для этого необходимо выполнить запрос:
Теперь нам нужно переписать диалплан, для этого идем в /etc/asterisk/extensions_additional.conf и находим там контекст [cidlookup]. Он будет выглядеть примерно так же как и ниже, для нас главное exten => cidlookup_1, если это так(если нет то меням cidlookup_1 на тот что указан у вас в контексте) то копируем контекст указанный ниже и вставляем его в /etc/asterisk/extensions_override_freepbx.conf и делаем
Где USER_HASH – это Ваш уникальный API ключ предоставляемый в личном кабинете AmoCRM –> настройки –> API.
Прежде чем проверять callerid lookup (например забить в amocrm свой мобильный и звонить на ваш did) нужно проверить, отдает ли amocrm имя звонящего, для этого нужно выполнить запрос в браузере (предварительно быть залогиненным в системе amocrm):
Если все правильно, должны увидеть имя клиента
Далее желательно проверить отдачу имени абонента через консоль севрера, для этого нужно выполнить фактически тот же запрос, но с небольшими изменениями: необходимо будет экранировать символ &
Запрос из консоли будет выглядеть примерно так
Карточка клиента
Теперь можно убедиться во всплытии карточки клиента. Для этого необходимо быть залогиненым в личном кабинете AmoCRM, находится в одной из вкладок контакты или сделки и совершить входящий вызов на внешний номер, который маршрутизируется хотя бы на один из внутренних номеров добавленных в виджет. При этом стоит учитывать, что задержка всплытия может достигать до 5 секунд.
Если карточка не всплывает нужно проверить следующие пункты:
Если это не дало результата, можно включить в браузере «режим разработчика», чтобы видеть события и логи ошибок: нажимаем F12 и переходим во вкладку Networks.
Умная переадресация
Умная переадресация позволяет перевести вызов на ответственного менеджера
Для этого нам нужно создать специальный контекст, назовем его amocrmtransfer
; 151 виртуальный добавочный
; DEFEXT добавочный по умолчанию.
; логин в amocrm
; API ключ amocrm
; ваш аккаунт в amocrm
Зарегистрируйте виртуальный Extension (меню Application>Extensions). (допустим 151)
Теперь все звонки, переведённые на номер 151, будут переведены на ответственного менеджера или номер по умолчанию.
Настройка отдачи файлов разговоров
Для того что бы в amoCRM мы могли слушать и скачивать записи разговоров нам нужно сделать следующее:
Если у вас FreePBX версии 2.9 и ниже, то в CDR БД поля recordingfile не будет, и его нужно будет добавить вручную:
После чего нужно будет внести изменения в контекст записи разговоров. Для FreePBX это [macro-record-enable]. Скопируйте его из extensions_additional.conf в extensions_override_freepbx.conf, и после назначения переменной имени файла записи добавьте следующую строку:
Если вы хотите что бы статистика отображалась корректно, а также что бы записи исходящих вызовов тоже отображались в CDR необходимо выполнить следующее:
Если через какое то время вы стали наблюдать долгое выполнение диалплана в астериске, то вам необходимо в amocrm.php использовать не ajam а ami, для этого укажите порт 5038 и закомментируйте define(‘AC_PREFIX’,’/asterisk/’) используя знак # в начале данной строки
Если http show status отображает не все URI’s, то необходимо проверить следующие пункты: