Подключение Asterisk к Microsoft SQL Server с помощью ODBC Driver for SQL Server
В статье ранее был описан способ подключения Asterisk к MS SQL с помощью открытого драйвера FreeTDS, помимо этого решения есть ещё ODBC-драйвер, разработанный самой компанией Microsoft — ODBC Driver for SQL Server. В этой статье будет описана установка в CentOS 6 всех основных версий этого драйвера и настройка ODBC-подключения в Asterisk.
Установка ODBC Driver for SQL Server версий 13 и 17
Эти версии драйвера есть в репозитории, предоставляемом Microsoft, просто добавляйте репозиторий и устанавливайте драйвер.
wget -O /etc/yum.repos.d/mssql-release.repo https://packages.microsoft.com/config/rhel/6/prod.repo
# Установка ODBC Driver 17 for SQL Server
yum install msodbcsql17 unixODBC unixODBC-devel
# Установка ODBC Driver 13 for SQL Server
yum install msodbcsql unixODBC unixODBC-devel
Из репозитория Microsoft будет установлена более новая версия unixODBC, чем та, что доступна в репозиториях CentOS 6, обязательно пересоберите Asterisk, чтобы модуль res_odbc.so был собран с включением только что установленной версии unixODBC.
Установка ODBC Driver for SQL Server версии 11
ODBC Driver 11 for SQL Server ставится немного сложнее, в репозитории его нет. Если он понадобится Вам по какой-либо причине, скачивайте архив для RedHat 6 здесь.
ODBC Driver 11 for SQL Server требует unixODBC версии 2.3.0, но с версией 2.3.1, доступной из репозитория Microsoft, тоже работает нормально, поэтому вместо сборки из исходников unixODBC 2.3.0, можно просто установить из репозитория unixODBC 2.3.1 (дополнительный плюс — не возникнет проблем с зависимостями пакетов, использующих unixODBC, например можно будет без проблем установить MySQL Community ODBC Connector из его официального репозитория).
wget -O /etc/yum.repos.d/mssql-release.repo https://packages.microsoft.com/config/rhel/6/prod.repo
yum install unixODBC unixODBC-devel
Распаковываем скаченный ранее архив и устанавливаем ODBC-драйвер с помощью вложенного скрипта install.sh. Скрипт проверяет наличие в системе unixODBC именно версии 2.3.0, поэтому нужно использовать опцию —force, чтобы скрипт установил драйвер.
tar xf msodbcsql-11.0.2270.0.tar.gz
cd msodbcsql-11.0.2270.0
./install.sh install —force —accept-license
Опять-таки Asterisk нужно будет пересобрать после установки более нового пакета unixODBC.
Настройка ODBC-подключения в Asterisk
Создание ODBC DSN
Сперва нужно добавить DSN в файл /etc/odbc.ini. Формат DSN:
[<имя_DSN>]
Driver = <имя_драйвера_из_файла_/etc/odbcinst.ini>
Server = <адрес_сервера>
Port = <номер_порта>
Database = <имя_базы_данных>
Пример DSN:
[MS_SQL_ASTERISK]
Driver = ODBC Driver 17 for SQL Server
Server = sql.example.com
Port = 1433
Database = asterisk
Поле Driver для других версий драйвера — «ODBC Driver 11 for SQL Server» и «ODBC Driver 13 for SQL Server» (можно установить все три версии и они все будут описаны в файле /etc/odbcinst.ini).
Протестировать DSN можно следующей командой:
isql MS_SQL_ASTERISK <имя_пользователя> <пароль>
Если с подключением возникают проблемы, можно временно добавить следующие параметры:
Trace = Yes
TraceFile = /tmp/MS_SQL_ASTERISK_ODBC.log
В файл /tmp/MS_SQL_ASTERISK_ODBC.log будет записан лог подключения.
Создание ODBC-подключения в настройках Asterisk
ODBC-подключение нужно описать в файле /etc/asterisk/res_odbc.conf (если используете не совсем старый FreePBX — тогда в файле /etc/asterisk/res_odbc_custom.conf). Формат описания ODBC-подключения:
[<имя_ODBC-подключения>]
enabled => yes
dsn => <имя_DSN_из_файла_/etc/odbc.ini>
username => <имя_пользователя>
password => <пароль>
pre-connect => yes
max_connections => <максимальное_количество_одновременных_подключений> ; для Asterisk 12+
pooling => <максимальное_количество_одновременных_подключений> ; для Asterisk 11
MS SQL Server поддерживает одновременно только один запрос через одно соединение, поэтому можно указать более одного соединения, если планируется большая интенсивность запросов к БД.
Пример ODBC-подключения:
[ms_sql]
enabled => yes
dsn => MS_SQL_ASTERISK
username => db_user
password => db_secret
pre-connect => yes
max_connections => 3
Для применения настроек модуля res_odbc.so, нужно выполнить в CLI Asterisk команду
module reload res_odbc.so
или
module load res_odbc.so
если модуль ещё не был загружен.
Остались вопросы?
Я - Виталий Шелест, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.
категории
- DECT
- Linux
- Вспомогательный софт при работе с Asterisk
- Интеграция с CRM и другими системами
- Интеграция с другими АТС
- Использование Elastix
- Использование FreePBX
- Книга
- Мониторинг и траблшутинг
- Настройка Asterisk
- Настройка IP-телефонов
- Настройка VoIP-оборудования
- Новости и Статьи
- Подключение операторов связи
- Разработка под Asterisk
- Установка Asterisk
VoIP оборудование
ближайшие курсы
Новые статьи
10 доводов в пользу Asterisk
Распространяется бесплатно.
Asterisk – программное обеспечение с открытым исходным кодом, распространяется по лицензии GPL. Следовательно, установив один раз Asterisk вам не придется дополнительно платить за новых абонентов, подключение новых транков, расширение функционала и прочие лицензии. Это приближает стоимость владения станцией к нулю.
Безопасен в использовании.
Любое программное обеспечение может стать объектом интереса злоумышленников, в том числе телефонная станция. Однако, сам Asterisk, а также операционная система, на которой он работает, дают множество инструментов защиты от любых атак. При грамотной настройке безопасности у злоумышленников нет никаких шансов попасть на станцию.
Надежен в эксплуатации.
Время работы серверов некоторых наших клиентов исчисляется годами. Это значит, что Asterisk работает несколько лет, ему не требуются никакие перезагрузки или принудительные отключения. А еще это говорит о том, что в районе отличная ситуация с электроэнергией, но это уже не заслуга Asterisk.
Гибкий в настройке.
Зачастую возможности Asterisk ограничивает только фантазия пользователя. Ни один конструктор шаблонов не сравнится с Asterisk по гибкости настройки. Это позволяет решать с помощью Asterisk любые бизнес задачи, даже те, в которых выбор в его пользу не кажется изначально очевидным.
Имеет огромный функционал.
Во многом именно Asterisk показал какой должна быть современная телефонная станция. За многие годы развития функциональность Asterisk расширилась, а все основные возможности по-прежнему доступны бесплатно сразу после установки.
Интегрируется с любыми системами.
То, что Asterisk не умеет сам, он позволяет реализовать за счет интеграции. Это могут быть интеграции с коммерческими телефонными станциями, CRM, ERP системами, биллингом, сервисами колл-трекинга, колл-бэка и модулями статистики и аналитики.
Позволяет телефонизировать офис за считанные часы.
В нашей практике были проекты, реализованные за один рабочий день. Это значит, что утром к нам обращался клиент, а уже через несколько часов он пользовался новой IP-АТС. Безусловно, такая скорость редкость, ведь АТС – инструмент зарабатывания денег для многих компаний и спешка во внедрении не уместна. Но в случае острой необходимости Asterisk готов к быстрому старту.
Отличная масштабируемость.
Очень утомительно постоянно возвращаться к одному и тому же вопросу. Такое часто бывает в случае некачественного исполнения работ или выбора заведомо неподходящего бизнес-решения. С Asterisk точно не будет такой проблемы! Телефонная станция, построенная на Asterisk может быть масштабируема до немыслимых размеров. Главное – правильно подобрать оборудование.
Повышает управляемость бизнеса.
Asterisk дает не просто набор полезных функций, он повышает управляемость организации, качества и комфортности управления, а также увеличивает прозрачность бизнеса для руководства. Достичь этого можно, например, за счет автоматизации отчетов, подключения бота в Telegram, санкционированного доступа к станции из любой точки мира.
Снижает расходы на связь.
Связь между внутренними абонентами IP-АТС бесплатна всегда, независимо от их географического расположения. Также к Asterisk можно подключить любых операторов телефонии, в том числе GSM сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.
При разработке других приложений мы сталкивались с тем что при работе с MSSQL через unixODBC и драйвер от Microsoft существенно медленнее происходит чтение из БД. При использовании Realtime или func_odbc это может вызвать существенные задержки и дополнительную нагрузку.