This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
сервис_asterisk [2021/09/15 14:05] val [Настройка RES_PJSIP каналов] |
сервис_asterisk [2022/08/26 18:27] val [Отладка работы Asterisk] |
||
---|---|---|---|
Line 93: | Line 93: | ||
==== Использование шаблонов в именах CHAN_SIP каналов ==== | ==== Использование шаблонов в именах CHAN_SIP каналов ==== | ||
<code> | <code> | ||
- | root@server# cat /etc/asterisk/sip.conf | + | server# cat /etc/asterisk/sip.conf |
</code><code> | </code><code> | ||
... | ... | ||
- | ;[office](!) | + | [office](!) |
- | ;type=friend | + | type=friend |
- | ;host=dynamic | + | host=dynamic |
- | ;deny=0.0.0.0/0.0.0.0 | + | deny=0.0.0.0/0.0.0.0 |
- | ;permit=192.168.X.0/255.255.255.0 | + | permit=192.168.X.0/255.255.255.0 |
- | ;[403](office) | + | [internet](!) |
- | ;secret=tpassword403 | + | type=friend |
+ | host=dynamic | ||
+ | permit=0.0.0.0/0.0.0.0 | ||
+ | nat=force_rport,comedia | ||
+ | qualify=yes | ||
+ | directmedia=no | ||
+ | ;call-limit=1 | ||
+ | |||
+ | [401](office) | ||
+ | secret=tpassword401 | ||
+ | |||
+ | [402](internet) | ||
+ | secret=tpassword402 | ||
+ | |||
+ | [403](office) | ||
+ | secret=tpassword403 | ||
- | ;[404](office) | + | [404](office) |
- | ;secret=tpassword404 | + | secret=tpassword404 |
... | ... | ||
</code> | </code> | ||
Line 131: | Line 146: | ||
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 | ||
</code> | </code> | ||
Line 227: | Line 239: | ||
</code><code> | </code><code> | ||
... | ... | ||
- | ; voip1.un и server.corp.un одна и та же система | + | ; voip1.un и server.corp.un (курс CGP) одна и та же система |
; приходится подключаться к ней с разных портов :) | ; приходится подключаться к ней с разных портов :) | ||
Line 234: | Line 246: | ||
protocol=udp | protocol=udp | ||
bind=0.0.0.0:5062 | bind=0.0.0.0:5062 | ||
+ | ;local_net=192.168.1.0/255.255.255.0 | ||
+ | ;local_net=192.168.X.0/255.255.255.0 | ||
+ | ;external_media_address=172.16.1.X | ||
+ | ;external_signaling_address=172.16.1.X | ||
[voip1_00000X] | [voip1_00000X] | ||
Line 352: | Line 368: | ||
==== Отладка работы Asterisk ==== | ==== Отладка работы Asterisk ==== | ||
+ | |||
+ | * [[https://community.asterisk.org/t/help-new-installation-full-of-errors/46614|HELP - New Installation Full of Errors]] | ||
=== Сервисные сообщения === | === Сервисные сообщения === | ||
Line 389: | Line 407: | ||
==== TimeBased контексты ==== | ==== TimeBased контексты ==== | ||
+ | |||
+ | * [[https://wiki.asterisk.org/wiki/display/AST/Contexts%2C+Extensions%2C+and+Priorities#Contexts,Extensions,andPriorities-Dialplansearchorder|Dialplan search order]] | ||
* [[https://www.voip-info.org/asterisk-tips-openhours/|How to include contexts based on time and date]] | * [[https://www.voip-info.org/asterisk-tips-openhours/|How to include contexts based on time and date]] | ||
Line 653: | Line 673: | ||
server*CLI> channel request hangup SIP/<TAB> | server*CLI> channel request hangup SIP/<TAB> | ||
+ | |||
+ | # watch -d "asterisk -x 'cdr show active'" | ||
# curl -v -X GET "http://localhost:8088/ari/channels?api_key=asterisk:asterisk" | # curl -v -X GET "http://localhost:8088/ari/channels?api_key=asterisk:asterisk" | ||
Line 819: | Line 841: | ||
<code> | <code> | ||
http://172.16.1.X/asterisk-cdr-viewer/ | http://172.16.1.X/asterisk-cdr-viewer/ | ||
+ | </code> | ||
+ | |||
+ | * Спасибо Комлеву Александру Павловичу! | ||
+ | |||
+ | <code> | ||
+ | Чтобы запись разговора воспроизводилась прямо на странице CDR Viewer, нужно в файле | ||
+ | /var/www/html/asterisk-cdr-viewer/include/functions.inc.php | ||
+ | заменить строку: | ||
+ | |||
+ | echo " <td class=\"record_col\"><a href=\"download.php?audio=$recorded_file.$system_audio_format\" title=\"Listen to call recording\"><img src=\"templates/images/sound.png\" alt=\"Call recording\" /></a></td>\n"; | ||
+ | |||
+ | на такую: | ||
+ | |||
+ | echo " <td class=\"record_col\"><a href=\"download.php?audio=$recorded_file.$system_audio_format\" title=\"Listen to call recording\"><img src=\"templates/images/sound.png\" alt=\"Call recording\" /></a><audio controls><source src=\"download.php?audio=$recorded_file.$system_audio_format\"></audio></td>\n"; | ||
</code> | </code> | ||
===== Asterisk realtime ===== | ===== Asterisk realtime ===== | ||
Line 1589: | Line 1625: | ||
exten => voip1_00000X,1,Dial(SIP/401,10,t) | exten => voip1_00000X,1,Dial(SIP/401,10,t) | ||
exten => voip1_00000X,n,Dial(SIP/401&SIP/402&SIP/403,,t) | exten => voip1_00000X,n,Dial(SIP/401&SIP/402&SIP/403,,t) | ||
- | |||
- | ;Перехват вызова | ||
- | ;exten => voip1_00000X,1,Dial(SIP/401,,t) | ||
</code><code> | </code><code> | ||
server*CLI> core reload | server*CLI> core reload | ||
Line 1643: | Line 1676: | ||
</code> | </code> | ||
==== Перехват вызова ==== | ==== Перехват вызова ==== | ||
+ | |||
+ | * [[https://wiki.asterisk.org/wiki/display/AST/Call+Pickup|Call Pickup]] | ||
<code> | <code> | ||
Line 1651: | Line 1686: | ||
callgroup=1 | callgroup=1 | ||
pickupgroup=1 | pickupgroup=1 | ||
+ | ;namedcallgroup=gr1,gr2,gr3 | ||
+ | ;namedpickupgroup=gr2,gr3,gr4 | ||
... | ... | ||
[403] | [403] | ||
Line 1688: | Line 1725: | ||
include => parkedcalls | include => parkedcalls | ||
+ | ... | ||
+ | exten => _8XXXXXXXXXX,1,Dial(SIP/voip1_00000X/${EXTEN},,T) | ||
+ | ... | ||
+ | exten => voip1_00000X,1,Dial(SIP/401,,t) | ||
... | ... | ||
</code> | </code> | ||
Line 1762: | Line 1803: | ||
... | ... | ||
- | ;For IMAP/SMTP | + | ;;;For IMAP/SMTP |
;charset=UTF-8 | ;charset=UTF-8 | ||
;locale=ru_RU.UTF-8 | ;locale=ru_RU.UTF-8 | ||
Line 1771: | Line 1812: | ||
... | ... | ||
- | ;For IMAP | + | ;;;For IMAP |
- | ;debian# apt install asterisk-voicemail-imapstorage | + | ;;;debian# apt install asterisk-voicemail-imapstorage |
- | ;debian# cp /etc/dovecot/private/dovecot.pem /usr/local/share/ca-certificates/dovecot.crt | + | ;;;debian# cp /etc/dovecot/private/dovecot.pem /usr/local/share/ca-certificates/dovecot.crt |
- | ;debian# update-ca-certificates | + | ;;;debian# update-ca-certificates |
- | ;debian# service asterisk restart | + | ;;;debian# service asterisk restart |
;imapserver=server.corpX.un | ;imapserver=server.corpX.un | ||
;imapfolder=INBOX | ;imapfolder=INBOX | ||
- | ;For SMTP | + | ;;;For SMTP |
;debian# apt install postfix mailutils | ;debian# apt install postfix mailutils | ||
Line 1886: | Line 1927: | ||
server*CLI> channel originate PJSIP/89161234567@voip1_00000X extension voip1_00000X@default | server*CLI> channel originate PJSIP/89161234567@voip1_00000X extension voip1_00000X@default | ||
- | ; сначала вызов обработчика (например - все телефоны в офисе), затем вызов абонента | + | ; сначала вызов обработчика (например - все телефоны в офисе или оператор/агент из членов очереди), затем вызов абонента |
server*CLI> channel originate Local/voip1_00000X@default extension 89161234567@default | server*CLI> channel originate Local/voip1_00000X@default extension 89161234567@default | ||
- | server*CLI> channel originate Local/601@default extension 89161234567@default | ||
</code><code> | </code><code> | ||
# cat /usr/share/originate_cli.sh | # cat /usr/share/originate_cli.sh | ||
Line 1895: | Line 1935: | ||
asterisk -x "channel originate SIP/$1 extension $2@default" | asterisk -x "channel originate SIP/$1 extension $2@default" | ||
+ | </code><code> | ||
+ | # /usr/share/originate_cli.sh 403 601 | ||
</code> | </code> | ||
+ | |||
==== С использованием Call файлов ==== | ==== С использованием Call файлов ==== | ||
Line 1902: | Line 1945: | ||
<code> | <code> | ||
- | server# cat 1.call | + | # cat call.txt |
</code><code> | </code><code> | ||
- | Channel: sip/401 | + | Channel: Local/voip1_00000X@default |
- | Extension: 601 | + | Extension: 89161234567 |
Context: default | Context: default | ||
- | CallerId: Conferencia <601> | + | CallerId: CorpX<84992636363> |
</code><code> | </code><code> | ||
- | server# cat 2.call | + | server# cp call.txt /var/spool/asterisk/outgoing/ |
- | </code><code> | + | |
- | Channel: sip/402 | + | |
- | Extension: 601 | + | |
- | Context: default | + | |
- | CallerId: Conferencia <601> | + | |
- | </code><code> | + | |
- | server# cat 3.call | + | |
- | </code><code> | + | |
- | Channel: sip/403 | + | |
- | Extension: 601 | + | |
- | Context: default | + | |
- | CallerId: Conferencia <601> | + | |
- | </code><code> | + | |
- | server# cp [123].call /var/spool/asterisk/outgoing/ | + | |
</code><code> | </code><code> | ||
# cat /usr/share/originate_call_file.sh | # cat /usr/share/originate_call_file.sh | ||
Line 2003: | Line 2032: | ||
exten => _X,1,Goto(default,40${EXTEN},1) | exten => _X,1,Goto(default,40${EXTEN},1) | ||
+ | |||
exten => _4XX,1,Goto(default,${EXTEN},1) | exten => _4XX,1,Goto(default,${EXTEN},1) | ||
Line 2213: | Line 2243: | ||
;exten => 326,1,Answer() | ;exten => 326,1,Answer() | ||
;exten => 326,n,Wait(3) | ;exten => 326,n,Wait(3) | ||
+ | ;exten => 326,n,Playback(/tmp/zabbix) | ||
+ | ;exten => 326,n,Playback(/tmp/zabbix) | ||
;exten => 326,n,Playback(/tmp/zabbix) | ;exten => 326,n,Playback(/tmp/zabbix) | ||
;exten => 326,n,Hangup() | ;exten => 326,n,Hangup() | ||
Line 2335: | Line 2367: | ||
* [[http://asterisk.ru/knowledgebase/Asterisk+func+sippeer|Функция SIPPEER()]] | * [[http://asterisk.ru/knowledgebase/Asterisk+func+sippeer|Функция SIPPEER()]] | ||
- | * curcalls работает только если для канала установлено ограничение на число одновременных вызовов (call-limit) | + | * !!! curcalls работает только если для канала установлено ограничение на число одновременных вызовов (call-limit) |
<code> | <code> | ||
Line 2406: | Line 2438: | ||
[queue1] | [queue1] | ||
- | ;для демонстрации на многоканальном телефоне установить call-limit=1 | + | ;timeout=10 |
- | ;member => SIP/401 ; в вебинаре (занять можно звонком на 311) | + | |
- | ;member => SIP/403 ; в классе | + | ;для демонстрации на многоканальном телефоне установить call-limit=1 |
+ | ;member => SIP/403 ; (можно занять звонком на 311) | ||
+ | |||
+ | ;member => SIP/user1@mailcgp | ||
+ | ;member => SIP/user2@mailcgp | ||
+ | ;member => SIP/user3@mailcgp | ||
</code><code> | </code><code> | ||
sever# cat /etc/asterisk/extensions.conf | sever# cat /etc/asterisk/extensions.conf | ||
Line 2459: | Line 2496: | ||
strategy = rrmemory | strategy = rrmemory | ||
musicclass = default | musicclass = default | ||
- | timeout=10 | ||
announce = queue-markq | announce = queue-markq | ||
Line 2469: | Line 2505: | ||
member => Local/802@agents | member => Local/802@agents | ||
member => Local/803@agents | member => Local/803@agents | ||
- | |||
- | ;member => SIP/user1@mailcgp | ||
- | ;member => SIP/user2@mailcgp | ||
- | ;member => SIP/user3@mailcgp | ||
</code><code> | </code><code> | ||
server*CLI> queue show queue1 | server*CLI> queue show queue1 | ||
Line 2497: | Line 2529: | ||
... | ... | ||
</code> | </code> | ||
- | ==== Приложение SHELL ==== | + | ==== Функция SHELL ==== |
* !!! Название функции только ЗАГЛАВНЫМИ буквами | * !!! Название функции только ЗАГЛАВНЫМИ буквами | ||
Line 2792: | Line 2824: | ||
exten => _4XX,n,Hangup() | exten => _4XX,n,Hangup() | ||
- | exten => _4XX,n(busy),Playback(tt-allbusy) | + | |
+ | exten => _4XX,n(busy),JabberSend(aster,${MY-CALLED-USER-ID},Вам звонил ${CALLERID(all)}) | ||
+ | exten => _4XX,n,Playback(tt-allbusy) | ||
exten => _4XX,n,Hangup() | exten => _4XX,n,Hangup() | ||
... | ... | ||
Line 3113: | Line 3147: | ||
[402] | [402] | ||
;secret=tpassword402 | ;secret=tpassword402 | ||
- | md5secret=29c91aa064cf462f5146b7ee81e7ba49 | + | md5secret=a77b8ed36b4be2c14c2d7e4dfad34b46 |
... | ... | ||
</code> | </code> |