Это старая версия документа!
Во первых необходимо создать пользователя для управления asterisk. Для этого достаточно внести соответствующую запись в /etc/asterisk/manager.conf.
В примере ниже добавлен пользователь 1cami с паролем PASSWORD1cami. Важно также в секцию general добавить опции указанные в примере.
[general] enabled = yes port = 5038 bindaddr = 0.0.0.0 allowmultiplelogin = yes webenabled = yes httptimeout = 60 [1cami] secret = PASSWORD1cami deny=0.0.0.0/0.0.0.0 permit=0.0.0.0/0.0.0.0 read = call,user,cdr write = call,reporting,originate
Следует проверить настройки manager API
CLI> manager show settings Global Settings: ---------------- Manager (AMI): Yes Web Manager (AMI/HTTP): Yes TCP Bindaddress: 0.0.0.0:5038 HTTP Timeout (minutes): 60
(тут отображена только часть вывода команды…)
Контроль настройки менеджера 1cami
CLI> manager show user 1cami username: 1cami secret: <Set> ACL: yes read perm: call,user,cdr write perm: call,reporting,originate displayconnects: no Variables:
Если мы хотим опубликовать ajam интерфейс на порту 8088 в режиме http, файл http.conf должен выглядеть примерно так:
[general] enabled=yes enablestatic=yes bindaddr=0.0.0.0 bindport=8088 prefix=asterisk
Если мы хотим опубликовать ajam интерфейс на порту 4443 в режиме https, файл http.conf должен выглядеть примерно так:
Для астериск версии 1.6
[general] enabled=yes bindaddr=0.0.0.0 bindport=8088 prefix=asterisk enablestatic=yes sslenable=yes sslbindaddr=0.0.0.0 sslbindport=8089 sslcert = /etc/asterisk/ssl/ajam.pem
Для астериск версии 1.8 и выше
[general] enabled=yes bindaddr=0.0.0.0 bindport=8088 prefix=asterisk enablestatic=yes tlsenable=yes tlsbindaddr=0.0.0.0:8089 tlscertfile= /etc/asterisk/ssl/ajam.pem tlsprivatekey= /etc/asterisk/ssl/ajam.pem
Также для https режима необходимо сгенерировать сертификат, которым будут шифроваться передаваемые данные. Самый простой способ, это генерация самоподписанного сертификата на сервере Asterisk командой:
cd /tmp openssl req -new -x509 -days 365 -nodes -out /tmp/foo.pem -keyout /tmp/foo.pem mkdir /etc/asterisk/ssl mv /tmp/foo.pem /etc/asterisk/ssl/ajam.pem
Если есть необходимость передавать на астериск какие-то файлы, например мы хотим обеспечить печать и отправку факсимильных сообщений, нужно настроить папку для приема таких файлов. В Asterisk есть специальный модуль который отвечает за прием файлов через AJAM интерфейс - res_http_post.so. Этот модуль не всегда устанавливается вместе с Asterisk по умолчанию, т.к. требует установленных пакетов GMIME и GMIME-DEVEL. После установки модуля необходимо настроить секцию post_mappings в файле http.conf
Механизм работы res_http_post описан подробно в блоге Игоря Гончаровского.
[post_mappings] ; ; In this example, if the prefix option is set to "asterisk", then using the ; POST URL: /asterisk/uploads will put files in /var/lib/asterisk/uploads/. uploads = /var/lib/asterisk/uploads
при использовании этого способа загрузки файла на АТС, пользователю manager API следует добавить право config на запись. Пример для пользователя 1cami:
[1cami] ;**** read = call,cdr,user,config ;****
PT1C_UPLOAD_DIR=/var/lib/asterisk/uploads - этот важный параметр будет в дальнейшем использоваться в dialplan. У пользователя Asterisk должны быть права на чтение и запись в эту директорию!
Не забудьте открыть на фаерволе порт 4443 или 8088 чтобы интерфейс ajam был доступен из вне.
Например для iptables под управлением CENTOS это делается добавлением строчки в файл /etc/sysconfig/iptables
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 8088 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 4443 -j ACCEPT
В консоли сервера где установлен Asterisk выполняем следующую команду:
sudo asterisk -rx "http show status"
Если все настроено правильно, то ответ будет примерно такой:
HTTP Server Status: Prefix: /asterisk Server Enabled and Bound to 0.0.0.0:8088 HTTPS Server Enabled and Bound to 0.0.0.0:4433 Enabled URI's: /asterisk/httpstatus => Asterisk HTTP General Status /asterisk/phoneprov/... => Asterisk HTTP Phone Provisioning Tool /asterisk/amanager => HTML Manager Event Interface w/Digest authentication /asterisk/uploads => HTTP POST mapping /asterisk/arawman => Raw HTTP Manager Event Interface w/Digest authentication /asterisk/manager => HTML Manager Event Interface /asterisk/rawman => Raw HTTP Manager Event Interface /asterisk/static/... => Asterisk HTTP Static Delivery /asterisk/amxml => XML Manager Event Interface w/Digest authentication /asterisk/mxml => XML Manager Event Interface Enabled Redirects: None.
Окончательная проверка: Идем в браузере по адресу http://ipadress_asteriska:8088/asterisk/rawman?action=login&username=1cami&secret=PASSWORD1cami
Если в качестве результата получим строку:
Response: Success Message: Authentication accepted
Значит со стороны Asterisk все настроено правильно.
Часть оповещений для 1С отправляются средствами приложения UserEvent, необходимо, чтобы этот модуль был подгружен:
CLI> module show like app_userevent.so Module Description Use Count app_userevent.so Custom User Event Application 0 1 modules loaded
В качестве Backend рекомендуем использовать MySQL через ODBC.
Отличная инструкция по настройке -
Installing and Configuring ODBC
Пример настроек **MySQL через ODBC**
Логирование должно быть разрешено. Файл cdr.conf
[general] ; Значение по уполчанию "yes" ;enable=yes
Для сокращения количества обращений к серверу Asterisk, мы также рекомендуем добавить оповещение о добавлении CDR записи через AJAM интерфейс. Для этого необходимо включить опцию в файле настроек.
; ; Asterisk Call Management CDR ; [general] enabled = yes
Таким образом после запроса записей за период, все новые записи о звонках будут добавляться динамически в историю при поступлении соответствующего эвента.
Логирование должно быть разрешено.
[general] enable=yes apps=ALL events=ALL