Инструменты пользователя

Инструменты сайта


doc:1cajam:astcastomize_v6

Настройка web сервера Asterisk

Настройка Asterisk Manager API

Во первых необходимо создать пользователя для управления asterisk. Для этого достаточно внести соответствующую запись в /etc/asterisk/manager.conf, в примере ниже добавлен пользователь 1cami с паролем PASSWORD1cami. Важно также в секцию general добавить опции указанные в примере.

manager.conf
[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,cdr,user,config
write = call,originate,reporting

;;; Дополнительные опции для ASTERISK 11+ ;;; Начало ;;;;
eventfilter=!Event: Newexten
eventfilter=!Event: DeviceStateChange
eventfilter=!Event: NewConnectedLine
eventfilter=!Event: Newchannel
eventfilter=!Event: SoftHangupRequest
eventfilter=!Event: HangupRequest
eventfilter=!Event: BridgeDestroy
eventfilter=!Event: BridgeCreate
eventfilter=!Event: BridgeMerge
eventfilter=!Event: MusicOnHoldStop
eventfilter=!Event: MusicOnHoldStart
eventfilter=!Event: NewCallerid
eventfilter=!Event: LocalBridge
eventfilter=!Event: Unhold
eventfilter=!Event: Hold
eventfilter=!Event: AttendedTransfer
;;; Дополнительные опции для ASTERISK 11+ ;;; Конец ;;;;

Обратите внимание на строки фильтра:

eventfilter=!Event: Newexten

Они актуальны для Asterisk 13.
Эта настройка крайне необходима!!!

Настройка AJAM HTTP

Если мы хотим опубликовать ajam интерфейс на порту 8088 в режиме http, файл /etc/asterisk/http.conf должен выглядеть примерно так:

http.conf
[general]
enabled=yes
enablestatic=yes
bindaddr=0.0.0.0
bindport=8088
prefix=asterisk

Настройка AJAM HTTPS

Настройка HTTPS не является обязательным условием. Этот раздел можно пропустить.

Если мы хотим опубликовать ajam интерфейс на порту 4443 в режиме https, файл http.conf должен выглядеть примерно так:

Для астериск версии 1.6

http.conf
[general]
enabled=yes
bindaddr=0.0.0.0
bindport=8088
prefix=asterisk
enablestatic=yes

sslenable=yes
sslbindaddr=0.0.0.0
sslbindport=4443 
sslcert = /etc/asterisk/ssl/ajam.pem

Для астериск версии 1.8 и выше

http.conf
[general]
enabled=yes
bindaddr=0.0.0.0
bindport=8088
prefix=asterisk
enablestatic=yes

tlsenable=yes
tlsbindaddr=0.0.0.0:4443
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

Настройка папки uploads

Если есть необходимость передавать на астериск какие-то файлы, например мы хотим обеспечить печать и отправку факсимильных сообщений, нужно настроить папку для приема таких файлов. В 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

Проверка работы и дополнительные настройки

В консоли сервера где установлен 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:4443

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.

Проверка настроек AMI:

manager show settings 

Вывод команды

Global Settings:
----------------
  Manager (AMI):             Yes            
  Web Manager (AMI/HTTP):    Yes            
  TCP Bindaddress:           0.0.0.0:5038   
  HTTP Timeout (minutes):    60             
  TLS Enable:                No             
  TLS Bindaddress:           Disabled       
  TLS Certfile:              asterisk.pem   
  TLS Privatekey:                           
  TLS Cipher:                               
  Allow multiple login:      Yes            
  Display connects:          Yes            
  Timestamp events:          No             
  Channel vars:                             
  Debug:                     No             
  Block sockets:             No 

Проверка настроек менеджера Asterisk:

sip*CLI> manager show user 1cami 

       username: 1cami
         secret: <Set>
            acl: yes
      read perm: call,user,cdr,all
     write perm: call,reporting,originate,all
displayconnects: yes

Окончательная проверка: Идем в браузере по адресу http://ipadress_asteriska:8088/asterisk/rawman?action=login&username=1cami&secret=PASSWORD1cami

Если в качестве результата получим строку:

Response: Success
Message: Authentication accepted

Значит со стороны 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

Полезные ссылки

Комментарии

doc/1cajam/astcastomize_v6.txt · Последние изменения: 2019/05/23 14:24 — imal