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

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


сервис_asterisk

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
сервис_asterisk [2019/02/12 12:32]
val [Asterisk realtime]
сервис_asterisk [2019/05/24 17:08] (текущий)
val [WebRTC]
Строка 29: Строка 29:
 ==== Настройка CHAN_SIP каналов ==== ==== Настройка CHAN_SIP каналов ====
  
 +  * [[https://​asterisk-pbx.ru/​wiki/​asterisk/​cf/​chan_sip|Настройка SIP в Asterisk - sip.conf]]
   * [[http://​www.voip-info.org/​wiki/​view/​Asterisk+config+sip.conf|Asterisk config sip.conf]]   * [[http://​www.voip-info.org/​wiki/​view/​Asterisk+config+sip.conf|Asterisk config sip.conf]]
   * [[http://​www.voip-info.org/​wiki/​view/​Asterisk+sip+type|Matching incoming calls to users and peers]]   * [[http://​www.voip-info.org/​wiki/​view/​Asterisk+sip+type|Matching incoming calls to users and peers]]
Строка 63: Строка 64:
 type=friend type=friend
 host=dynamic host=dynamic
 +;​allowsubscribe=no
 ;​setvar=MY-USER-ID=user2@corpX.un ​      ;in channel type=user ​ ;​setvar=MY-USER-ID=user2@corpX.un ​      ;in channel type=user ​
 ;​callerid=Petrov Petr Petrovitch<​402>​ ;​callerid=Petrov Petr Petrovitch<​402>​
Строка 127: Строка 129:
 protocol=udp protocol=udp
 bind=0.0.0.0:​5060 bind=0.0.0.0:​5060
 +;​local_net=192.168.X.0/​255.255.255.0
 +;​external_media_address=172.16.1.X
 +;​external_signaling_address=172.16.1.X
 +
  
 [401] [401]
Строка 135: Строка 141:
 allow=alaw allow=alaw
 aors=401 aors=401
-auth=auth401 +auth=401 
-;​callerid=Ivanov I I <401>+;​callerid=Ivanov I I<​401>​
 ;​set_var=MY-USER-ID=user1@corpX.un ;​set_var=MY-USER-ID=user1@corpX.un
 ;​rtp_symmetric=yes ;​rtp_symmetric=yes
Строка 148: Строка 154:
 remove_existing=yes remove_existing=yes
  
-[auth401]+[401]
 type=auth type=auth
 auth_type=userpass auth_type=userpass
Строка 157: Строка 163:
 type=registration type=registration
 transport=udp-transport-1 transport=udp-transport-1
-outbound_auth=voip1_00000X_auth+outbound_auth=voip1_00000X
 server_uri=sip:​voip1.un server_uri=sip:​voip1.un
 client_uri=sip:​00000X@voip1.un client_uri=sip:​00000X@voip1.un
Строка 164: Строка 170:
 contact_user=voip1_00000X contact_user=voip1_00000X
  
-[voip1_00000X_auth]+[voip1_00000X]
 type=auth type=auth
 auth_type=userpass auth_type=userpass
Строка 173: Строка 179:
 type=aor type=aor
 contact=sip:​voip1.un:​5060 contact=sip:​voip1.un:​5060
 +;​qualify_frequency=60
  
 [voip1_00000X] [voip1_00000X]
Строка 180: Строка 187:
 disallow=all disallow=all
 allow=alaw allow=alaw
-outbound_auth=voip1_00000X_auth+outbound_auth=voip1_00000X
 aors=voip1_00000X aors=voip1_00000X
 from_user=00000X from_user=00000X
 from_domain=voip1.un from_domain=voip1.un
-direct_media=no+;direct_media=no 
 +;​rtp_symmetric=yes 
 +;​force_rport=yes 
 +;​rewrite_contact=yes
  
 [voip1_00000X] [voip1_00000X]
Строка 523: Строка 533:
 server.corpX.un#​ cat extensions.conf server.corpX.un#​ cat extensions.conf
 </​code><​code>​ </​code><​code>​
-... 
 [default] [default]
 ... ...
Строка 656: Строка 665:
 </​code>​ </​code>​
  
-=== Настройка asterisk на запись CDR в СУБД ===+=== Настройка записи в БД ===
  
-  * [[http://​www.voip-info.org/​wiki/​view/​Asterisk+config+cdr_mysql.conf|Asterisk config cdr_mysql.conf]] 
-  * [[#Asterisk MySQL CDR]] 
   * [[#Asterisk ODBC CDR]]   * [[#Asterisk ODBC CDR]]
- 
-<​code>​ 
-MariaDB [asterisk]>​ select * from cdr; 
-</​code>​ 
- 
  
 === Просмотра статистики CDR и прослушивание записей === === Просмотра статистики CDR и прослушивание записей ===
  
   * [[https://​code.google.com/​p/​asterisk-cdr-viewer/​wiki/​ReadMe]]   * [[https://​code.google.com/​p/​asterisk-cdr-viewer/​wiki/​ReadMe]]
 +  * [[http://​prog-it.github.io/​Asterisk-CDR-Viewer-Mod/​|Web-интерфейс для просмотра и прослушивания записей звонков Asterisk]]
   * [[https://​asterisk-pbx.ru/​wiki/​artikle/​cdr_viewer|Прекрасное приложение,​ для просмотра статистики и прослушивания записей]]   * [[https://​asterisk-pbx.ru/​wiki/​artikle/​cdr_viewer|Прекрасное приложение,​ для просмотра статистики и прослушивания записей]]
   * [[Сервис HTTP#​Установка и запуск сервера Apache]]   * [[Сервис HTTP#​Установка и запуск сервера Apache]]
Строка 707: Строка 710:
 </​code>​ </​code>​
  
-  * http://​server.corpX.un/​asterisk-cdr-viewer/​ +<​code>​ 
 +http://​server.corpX.un/​asterisk-cdr-viewer/​ 
 +</​code>​
 ===== Asterisk realtime ===== ===== Asterisk realtime =====
  
Строка 821: Строка 825:
  
 MariaDB [asterisk]>​ delete from sipfriends; MariaDB [asterisk]>​ delete from sipfriends;
- 
-MariaDB [asterisk]>​ insert into sipfriends(name,​ secret, host, type, callbackextension) values ('​403',​ '​tpassword403',​ '​dynamic',​ '​friend',​ '​403'​);​ 
-MariaDB [asterisk]>​ insert into sipfriends(name,​ secret, host, type, callbackextension) values ('​404',​ '​tpassword404',​ '​dynamic',​ '​friend',​ '​404'​);​ 
  
 insert into sipfriends(name,​ secret, host, type) values ('​403',​ '​tpassword403',​ '​dynamic',​ '​friend'​);​ insert into sipfriends(name,​ secret, host, type) values ('​403',​ '​tpassword403',​ '​dynamic',​ '​friend'​);​
Строка 961: Строка 962:
   * !!! Не совместим с пакетом asterisk-mysql   * !!! Не совместим с пакетом asterisk-mysql
 <​code>​ <​code>​
-# apt purge asterisk-mysql 
- 
-# service asterisk restart 
- 
 # cat res_odbc.conf # cat res_odbc.conf
 </​code><​code>​ </​code><​code>​
-... 
 [asterisk] [asterisk]
-... 
 enabled => yes enabled => yes
-... 
 dsn => asterisk_dsn dsn => asterisk_dsn
-...+pre-connect => yes
 </​code><​code>​ </​code><​code>​
 server*CLI>​ core reload server*CLI>​ core reload
Строка 1313: Строка 1307:
  
 ===== Голосовая почта ===== ===== Голосовая почта =====
- 
- 
- 
- 
- 
  
 <​code>​ <​code>​
Строка 1328: Строка 1317:
 ;​imapserver=mail.isp.un ;​imapserver=mail.isp.un
 ;​imapfolder=INBOX ;​imapfolder=INBOX
 +;​charset=UTF-8
 ... ...
 [corpX] [corpX]
 ;401 => ,, ;401 => ,,
 ;402 => 2222,, ;402 => 2222,,
-;403 => ,Sidorov Sidor Sidorovitch,​userX@isp.un,,​attache=yes|delete=yes +;403 => ,Ваше Имя Отчество Фамилия,​userX@isp.un,,​attache=yes|delete=yes 
-;404 => 4444,Koshkin Vasiliy Myrkovitch,,,​imapuser=userX|imappassword=passwordX+;404 => 4444,Ваше Имя Отчество Фамилия,,,​imapuser=userX|imappassword=passwordX
 </​code><​code>​ </​code><​code>​
 server*CLI>​ voicemail reload server*CLI>​ voicemail reload
Строка 1366: Строка 1356:
 ... ...
 [401] [401]
 +;​allowsubscribe=no
 mailbox=401@corpX mailbox=401@corpX
 ... ...
Строка 1522: Строка 1513:
 ; exten => 4,​1,​Dial(SIP/​404) ; exten => 4,​1,​Dial(SIP/​404)
 ; exten => _X,​1,​Dial(SIP/​40${EXTEN}) ; exten => _X,​1,​Dial(SIP/​40${EXTEN})
 +
 exten => _X,​1,​Goto(default,​40${EXTEN},​1) exten => _X,​1,​Goto(default,​40${EXTEN},​1)
  
Строка 1904: Строка 1896:
 === Регистрация агентов === === Регистрация агентов ===
  
-Необходимо перезапустить asterisk 
 <​code>​ <​code>​
-asterisk11# cat agents.conf +asterisk# agents.conf
-</​code><​code>​ +
-[general] +
-persistentagents=yes +
- +
-[agents] +
-agent => 01,​1111,​Ivanov Ivan Ivanovitch +
-agent => 02,​2222,​Petrov Petr Petrovitch +
-agent => 03,​3333,​Sidorov Sidor Sidorovitch +
-agent => 04,​4444,​Koshkin Vasiliy Myrkovitch  +
-</​code><​code>​ +
-asterisk13# agents.conf+
 </​code><​code>​ </​code><​code>​
 [general] [general]
  
 [01] [01]
-fullname=Ivanov ​Ivan Ivanovitch+fullname=Ivan Ivanovitch ​Ivanov
 [02] [02]
-fullname=Petrov ​Petr Petrovitch+fullname=Petr Petrovitch ​Petrov
 [03] [03]
-fullname=Sidorov Sidor Sidorovitch+fullname=Your name
 </​code><​code>​ </​code><​code>​
-asterisk11# cat extensions.conf +asterisk# cat extensions.conf
-</​code><​code>​ +
-[default] +
-... +
-exten => 395,​1,​AgentLogin() +
-... +
-</​code><​code>​ +
-asterisk13# cat extensions.conf+
 </​code><​code>​ </​code><​code>​
 [default] [default]
Строка 1948: Строка 1921:
 === Использование агентов в очередях === === Использование агентов в очередях ===
 <​code>​ <​code>​
-asterisk11# cat queues.conf +asterisk# cat queues.conf
-</​code><​code>​ +
-[general] +
-persistentmembers = yes +
- +
-[queue1] +
-strategy=rrmemory +
-member => Agent/01 +
-member => Agent/02 +
-member => Agent/03 +
-member => Agent/04 +
-</​code><​code>​ +
-asterisk13# cat queues.conf+
 </​code><​code>​ </​code><​code>​
 [general] [general]
Строка 2115: Строка 2076:
  
 Action: Originate Action: Originate
-Channel: sip/402+Channel: sip/403
 Context: default Context: default
 Exten: 301 Exten: 301
Строка 2129: Строка 2090:
   * [[https://​wiki.asterisk.org/​wiki/​display/​AST/​Asterisk+12+ARI|Complete reference of the API]]   * [[https://​wiki.asterisk.org/​wiki/​display/​AST/​Asterisk+12+ARI|Complete reference of the API]]
   * [[http://​subnets.ru/​blog/?​p=5416|В Asterisk появился REST Interface (ARI)]]   * [[http://​subnets.ru/​blog/?​p=5416|В Asterisk появился REST Interface (ARI)]]
-  * [[http://​ari.asterisk.org/​|Asterisk REST API Browser]] 
  
 +
 +=== Настройка доступа к ARI ===
 <​code>​ <​code>​
 # cat /​etc/​asterisk/​http.conf # cat /​etc/​asterisk/​http.conf
Строка 2146: Строка 2108:
 pretty = yes pretty = yes
 ;​allowed_origins = http://​ari.asterisk.org ;​allowed_origins = http://​ari.asterisk.org
 +;​allowed_origins = chrome-extension://​hlnmjkbpmnbgeondjeceaomhafdacmlj
  
 [asterisk] [asterisk]
Строка 2151: Строка 2114:
 read_only = no read_only = no
 password = asterisk password = asterisk
-</​code><​code>​+</​code>​ 
 + 
 +=== Управление Asterisk через ARI === 
 + 
 +  * [[http://​ari.asterisk.org/​|Asterisk REST API Browser]] 
 + 
 +<​code>​
 # curl -v -X GET "​http://​localhost:​8088/​ari/​endpoints?​api_key=asterisk:​asterisk"​ # curl -v -X GET "​http://​localhost:​8088/​ari/​endpoints?​api_key=asterisk:​asterisk"​
-</​code><​code>​+</​code>​ 
 + 
 +=== Мониторинг Asterisk через ARI === 
 + 
 +  * [[https://​stackoverflow.com/​questions/​28064526/​how-to-get-all-dialer-events-from-asterisk-rest-api-ari|How to get all dialer events from Asterisk REST API (ARI)?]] 
 + 
 +<​code>​
 # curl -sL https://​deb.nodesource.com/​setup_9.x | sudo -E bash - # curl -sL https://​deb.nodesource.com/​setup_9.x | sudo -E bash -
  
Строка 2162: Строка 2137:
 # wscat -c "​ws://​localhost:​8088/​ari/​events?​api_key=asterisk:​asterisk&​app=my-first-app" ​ # wscat -c "​ws://​localhost:​8088/​ari/​events?​api_key=asterisk:​asterisk&​app=my-first-app" ​
 </​code><​code>​ </​code><​code>​
 +*CLI> ari show apps
 +
 +# curl -v -u asterisk:​asterisk -X POST "​http://​localhost:​8088/​ari/​applications/​my-first-app/​subscription?​eventSource=endpoint%3ASIP"​
 +
 +*CLI> ari show app my-first-app
 +</​code>​
 +
 +=== ARI Stasis ===
 +<​code>​
 exten => 307,​1,​Answer() exten => 307,​1,​Answer()
 exten => 307,​n,​Stasis(my-first-app) exten => 307,​n,​Stasis(my-first-app)
Строка 2178: Строка 2162:
 # curl -v -u asterisk:​asterisk -X POST "​http://​localhost:​8088/​ari/​channels/​$ID/​redirect?​endpoint=SIP%2F403"​ # curl -v -u asterisk:​asterisk -X POST "​http://​localhost:​8088/​ari/​channels/​$ID/​redirect?​endpoint=SIP%2F403"​
 </​code>​ </​code>​
 +
 ==== XMPP ==== ==== XMPP ====
  
Строка 2366: Строка 2351:
 404 tpassword404 server.corpX.un BCC34221709A KX-HDVXXX 404 tpassword404 server.corpX.un BCC34221709A KX-HDVXXX
 ... ...
-403 tpassword403 server.corp1.un 000E08C190BB SPA3102 +403 tpassword403 server.corp8.un 000E08C190A2 SPA3102
-403 tpassword403 server.corp2.un BCC3422170AA KX-HDVXXX +
-403 tpassword403 server.corp3.un 080023F67118 KX-HDVXXX +
-403 tpassword403 server.corp5.un 000E08C190A2 SPA3102+
 403 tpassword403 server.corp6.un BCC34221709A KX-HDVXXX 403 tpassword403 server.corp6.un BCC34221709A KX-HDVXXX
 +403 tpassword403 server.corp3.un 080023F67118 KX-HDVXXX
 +403 tpassword403 server.corp1.un 000E08C190A8 SPA3102
 +403 tpassword403 server.corp4.un 000E08C190B6 SPA3102
 +403 tpassword403 server.corp2.un BCC3422170AA KX-HDVXXX
 403 tpassword403 server.corp7.un 080023E421CD KX-HDVXXX 403 tpassword403 server.corp7.un 080023E421CD KX-HDVXXX
 +403 tpassword403 server.corp5.un 000E08C190C2 SPA3102
 +403 tpassword403 server.corp9.un 000E08C38F1D SPA3102
 +403 tpassword403 server.corp10.un 080023BF61CD KX-HDVXXX
 +403 tpassword403 server.corp11.un 000E08C389BF SPA3102
 +403 tpassword403 server.corp12.un 080023BF61CC KX-HDVXXX
 </​code><​code>​ </​code><​code>​
 # cat create_prov_phones_conf.sh # cat create_prov_phones_conf.sh
Строка 2498: Строка 2489:
   * [[http://​voipapplication.blogspot.com/​2009/​01/​120000-phone-bill-voip-hacked-small.html|"​Voip hackers runs up a phone bill worth $120,​000"​.]]   * [[http://​voipapplication.blogspot.com/​2009/​01/​120000-phone-bill-voip-hacked-small.html|"​Voip hackers runs up a phone bill worth $120,​000"​.]]
  
 +===== WebRTC =====
 +
 +  * [[http://​vinogradov.iptel.od.ua/​ustanovka-webrtc-klienta-na-asterisk-na-primere-sipml5/​|Установка WebRTC клиента на Asterisk на примере SipML5]]
 +  * [[https://​github.com/​paneru-rajan/​asterisk-sipml5|Sipml5 with Asterisk]]
 +
 +  * !!! Заработало в Firefox
 +
 +==== Настройка сервера ====
 +
 +  * [[Пакет OpenSSL#​Создание само подписанного сертификата]] для системы server.corpX.un
 +
 +<​code>​
 +# cat server.crt server.key > /​etc/​asterisk/​server.crtkey
 +
 +# cat /​etc/​asterisk/​http.conf
 +</​code><​code>​
 +[general]
 +enabled=yes
 +bindaddr=0.0.0.0
 +bindport=8088
 +tlsenable=yes
 +tlsbindaddr=0.0.0.0:​8089
 +tlscertfile=/​etc/​asterisk/​server.crtkey
 +</​code><​code>​
 +# cat /​etc/​asterisk/​sip.conf
 +</​code><​code>​
 +[general]
 +transport=udp,​wss
 +...
 +
 +[webrtc](!)
 +avpf = yes
 +force_avp = yes
 +icesupport = yes
 +encryption = yes
 +dtlsenable = yes
 +dtlsverify = no
 +dtlssetup = actpass
 +dtlscertfile = /​etc/​asterisk/​server.crtkey
 +
 +[401](webrtc)
 +...
 +</​code>​
 +!!! Проверить и принять сертификат
 +<​code>​
 +https://​server.corpX.un:​8089/​ws
 +</​code>​
 +==== Настройка клиента sipml5 ====
 +
 +  * [[https://​www.doubango.org/​sipml5/​|World'​s first HTML5 SIP client]]
 +
 +<​code>​
 +Display Name: 401
 +Private Identity*: 401
 +Public Identity*: sip:​401@server.corpX.un
 +Password: tpassword401
 +Realm*: server.corpX.un
 +WebSocket Server URL: wss://​server.corpX.un:​8089/​ws
 +ICE Servers: []
 +</​code>​
 +
 +==== Установка клиента sipml5 ====
 +
 +  * [[Пакет OpenSSL#​Создание самоподписанного сертификата]] для системы server.corpX.un
 +  * [[Сервис HTTP#​Поддержка протокола HTTPS]]
 +
 +<​code>​
 +# cd /​var/​www/​html/​
 +
 +# wget http://​val.bmstu.ru/​unix/​voip/​sipml5-master.zip
 +
 +# unzip sipml5-master.zip
 +
 +https://​server.corpX.un/​sipml5-master/​call.htm
 +</​code>​
 ===== Дополнительные материалы ===== ===== Дополнительные материалы =====
  
Строка 2615: Строка 2681:
 ==== Сборка asterisk из исходных текстов ==== ==== Сборка asterisk из исходных текстов ====
  
-Добавление поддержки imap хранилища голосовой почты+  * [[https://​www.tecmint.com/​install-asterisk-on-centos-7/​|How to Install Asterisk on CentOS 7]]
  
-[[http://​blogs.reucon.com/​srt/​2007/​02/​20/​1171932900000.html]]+  * [[Управление ПО в Linux#​Работа с исходными текстами]]
  
-[[http://​www.asteriskdocs.org/​html/​ch14s05.html]]+=== Версия 16 ===
  
-[[http://etel.wiki.oreilly.com/wiki/index.php/Storing_Voicemail_on_an_IMAP_server]]+  * [[https://wiki.asterisk.org/wiki/display/AST/Installing+Asterisk+From+Source|Installing Asterisk From Source]]
  
-=== Ubuntu === 
 <​code>​ <​code>​
-root@server:​~#​ apt-get install ​build-essential ​libncurses5-dev libssl-dev libxml2-dev+# apt install libedit-dev uuid-dev libxml2-dev libsqlite3-dev 
 + 
 +# wget https://​downloads.asterisk.org/​pub/​telephony/​asterisk/​asterisk-16-current.tar.gz 
 + 
 +# cd /​usr/​local/​src 
 + 
 +# tar -xvzf /​root/​asterisk-16-current.tar.gz 
 + 
 +# cd asterisk-16.3.0/​ 
 + 
 +# ./configure --with-jansson-bundled 
 + 
 +# cd contrib/​scripts 
 + 
 +# ./​install_prereq install 
 + 
 +# ./​install_prereq install-unpackaged 
 + 
 +# cd - 
 + 
 +# make menuselect 
 + 
 +# make 
 + 
 +# make install 
 + 
 +# make samples 
 + 
 +# asterisk 
 + 
 +# asterisk -rvvv 
 +</​code>​ 
 + 
 +=== Версия 1.8 === 
 + 
 +**Задача:​ Добавление поддержки imap хранилища голосовой почты** 
 + 
 +  * [[http://​blogs.reucon.com/​srt/​2007/​02/​20/​1171932900000.html]] 
 +  * [[http://​www.asteriskdocs.org/​html/​ch14s05.html]] 
 +  * [[http://​etel.wiki.oreilly.com/​wiki/​index.php/​Storing_Voicemail_on_an_IMAP_server]] 
 + 
 +**Ubuntu** 
 +<​code>​ 
 +root@server:​~#​ apt-get install libncurses5-dev libssl-dev libxml2-dev
 root@server:​~#​ cd /usr/src root@server:​~#​ cd /usr/src
  
Строка 2632: Строка 2740:
 </​code>​ </​code>​
  
-=== FreeBSD ​===+**FreeBSD**
 <​code>​ <​code>​
 [server:~] # pkg install perl5 bison m4 gmake gcc libtool libltdl libxml2 speex unixODBC gsm  [server:~] # pkg install perl5 bison m4 gmake gcc libtool libltdl libxml2 speex unixODBC gsm 
Строка 2641: Строка 2749:
 </​code>​ </​code>​
  
-=== Ubuntu/​FreeBSD ​===+**Ubuntu/​FreeBSD**
 <​code>​ <​code>​
 server:/​usr/​src#​ gunzip imap.tar.Z server:/​usr/​src#​ gunzip imap.tar.Z
Строка 2666: Строка 2774:
 server:~# /​usr/​local/​asterisk/​sbin/​asterisk -rvvvvvv server:~# /​usr/​local/​asterisk/​sbin/​asterisk -rvvvvvv
 </​code>​ </​code>​
- 
 ==== Преобразование mp3 файлов в формат Asterisk ==== ==== Преобразование mp3 файлов в формат Asterisk ====
 <​code>​ <​code>​
сервис_asterisk.1549963948.txt.gz · Последние изменения: 2019/02/12 12:32 — val