{"id":92,"date":"2022-12-01T07:20:40","date_gmt":"2022-12-01T04:20:40","guid":{"rendered":"https:\/\/abramov.me\/?p=92"},"modified":"2022-12-30T21:10:26","modified_gmt":"2022-12-30T18:10:26","slug":"%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b0-asterisk-%d0%bf%d0%be%d0%b4-ip-%d1%82%d0%b5%d0%bb%d0%b5%d1%84%d0%be%d0%bd%d0%b8%d1%8e-%d0%be%d1%82-on-lime","status":"publish","type":"post","link":"https:\/\/abramov.me\/?p=92","title":{"rendered":"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 Asterisk \u043f\u043e\u0434 IP-\u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0438\u044e \u043e\u0442 On-Lime"},"content":{"rendered":"<div class=\"taxonomy-post_tag wp-block-post-terms\"><a href=\"https:\/\/abramov.me\/?tag=asterisk\" rel=\"tag\">Asterisk<\/a><span class=\"wp-block-post-terms__separator\">, <\/span><a href=\"https:\/\/abramov.me\/?tag=centos\" rel=\"tag\">CentOS<\/a><span class=\"wp-block-post-terms__separator\">, <\/span><a href=\"https:\/\/abramov.me\/?tag=linux\" rel=\"tag\">Linux<\/a><\/div>\n\n\n<!--more-->\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<p><strong>1. Extensions.conf<\/strong><\/p>\n\n\n\n<p>\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0432 \u043a\u043e\u043d\u0435\u0446 \u0444\u0430\u0439\u043b\u0430 <code>\/etc\/asterisk\/extentions.conf<\/code> \u0437\u0430\u043f\u0438\u0441\u044c:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#include \"\/etc\/asterisk\/conf\/custom_extensions.conf\" <\/code><\/pre>\n\n\n\n<p>\u0421\u043e\u0437\u0434\u0430\u0451\u043c \u0444\u0430\u0439\u043b <code>custom_extensions.conf<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mkdir \/etc\/asterisk\/conf\ntouch \/etc\/asterisk\/conf\/custom_extensions.conf\nchown -R asterisk:asterisk \/etc\/asterisk\/conf\/\nnano \/etc\/asterisk\/conf\/custom_extensions.conf<\/code><\/pre>\n\n\n\n<p>\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u043c \u0444\u0430\u0439\u043b:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;macro-dialout] ; \u041c\u0430\u043a\u0440\u043e\u0441 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u0437\u0432\u043e\u043d\u043a\u043e\u0432\n    exten =&gt; s,1,Dial(${ARG1},120)\n    exten =&gt; s,2,Goto(s-${DIALSTATUS},2)\n    exten =&gt; s-NOANSWER,1,Handup\n    exten =&gt; s-BUSY,1,Busy(45)\n    exten =&gt; s-CONGESTION,1,NoOp\n    exten =&gt; s-CHANUNAVAIL,1,NoOp\n    exten =&gt; s-.,1,Goto(s-NOANSWER,2)\n\n&#91;macro-local] ; \u041c\u0430\u043a\u0440\u043e\u0441 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432\u044b\u0437\u043e\u0432\u0430 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u0435\u0433\u043e \u043d\u043e\u043c\u0435\u0440\u0430\n    exten =&gt; s,1,Dial(${ARG2},60,tTr)\n    exten =&gt; s,n(NOANSWER),Playback(vm-nobodyavail)\n    exten =&gt; s,n,Hangup()\n\n&#91;local-users] ; \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c \u043d\u043e\u043c\u0435\u0440\u0430 \u0430\u0431\u0430\u043d\u0435\u043d\u0442\u043e\u0432 \u0438 \u0441\u043a\u0440\u0438\u043f\u0442 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432\u044b\u0437\u043e\u0432\u0430 \u0430\u0431\u043e\u043d\u0435\u0442\u043e\u0432\n    exten =&gt; 123,1, Macro(local,123,SIP\/123)\n    exten =&gt; 321,1, Macro(local,321,SIP\/321)\n\n&#91;my-home]\n;; \u0412\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u0437\u0432\u043e\u043d\u043a\u0438 (\u043d\u0443\u0436\u043d\u043e\u0435 \u0440\u0430\u0441\u043a\u043e\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c):\n;; \u0413\u043e\u043b\u043e\u0441\u043e\u0432\u043e\u0435 \u043c\u0435\u043d\u044e\n;    #include \"\/etc\/asterisk\/ivr\/main.tree\" \n;    exten =&gt; 4996518342,1,Goto(main_tree,s,1)\n;; \u041e\u0447\u0435\u0440\u0435\u0434\u0438\n;    exten =&gt; 100,1,Set(CALLERID(num)=CALLERID(name))\n;    exten =&gt; 100,1,Answer\n;    exten =&gt; 100,n,Queue(operator,tTk,1,,40)\n;; \u041f\u0440\u044f\u043c\u043e\u0439 \u0432\u044b\u0437\u043e\u0432 \u043d\u0430 \u043d\u043e\u043c\u0435\u0440 \u0430\u0431\u043e\u043d\u0435\u043d\u0442\u0430\n    exten =&gt; 4996518342,1,Dial(SIP\/123,40,tTk)\n    exten =&gt; 4996518342,n,Playback(vm-nobodyavail)\n    exten =&gt; 4996518342,n,Hangup\n\n; \u0412\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0435 \u0437\u0432\u043e\u043d\u043a\u0438\n    include =&gt; local-users\n\n; \u0412\u043d\u0435\u0448\u043d\u0438\u0435 \u0437\u0432\u043e\u043d\u043a\u0438 \u0447\u0435\u0440\u0435\u0437 8\n    exten =&gt; _8XXXXXXXXXX,1,Macro(dialout,SIP\/ON-LIME\/8${EXTEN:1})\n    exten =&gt; _8XXXXXXXXXX,2,ResetCDR\n; \u0412\u043d\u0435\u0448\u043d\u0438\u0435 \u0437\u0432\u043e\u043d\u043a\u0438 \u0447\u0435\u0440\u0435\u0437 +7\n    exten =&gt; _+7XXXXXXXXXX,1,Macro(dialout,SIP\/ON-LIME\/8${EXTEN:2})\n    exten =&gt; _+7XXXXXXXXXX,2,ResetCDR\n; \u0412\u043d\u0435\u0448\u043d\u0438\u0435 \u043c\u0435\u0436\u0434\u0443\u043d\u0430\u0440\u043e\u0434\u043d\u044b\u0435 \u0437\u0432\u043e\u043d\u043a\u0438\n    exten =&gt; _810X.,1,Macro(dialout,SIP\/ON-LIME\/${EXTEN:3})\n    exten =&gt; _810X.,2,ResetCDR<\/code><\/pre>\n\n\n\n<p><strong>2. Sip.conf<\/strong><\/p>\n\n\n\n<p>\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u043c \u0444\u0430\u0439\u043b \/etc\/asterisk\/sip.conf:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nano \/etc\/asterisk\/sip.conf<\/code><\/pre>\n\n\n\n<p>\u0412 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435 \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u043c [Ctrl+W] \u0432\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0432 \u0441\u0442\u0440\u043e\u043a\u0443 \u043f\u043e\u0438\u0441\u043a\u0430 <code>NAT SUPPORT<\/code> [Enter]<br>\u0415\u0441\u043b\u0438 Asterisk \u0437\u0430 NAT-\u043e\u043c \u0432\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0441\u0432\u043e\u044e \u043f\u043e\u0434\u0441\u0435\u0442\u044c<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">localnet=192.168.51.0\/255.255.255.0\n<\/pre>\n\n\n\n<p>\u0412 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435 \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u043c [Ctrl+W] \u0432\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0432 \u0441\u0442\u0440\u043e\u043a\u0443 \u043f\u043e\u0438\u0441\u043a\u0430 <code>OUTBOUND SIP REGISTRATIONS<\/code> [Enter]<br>\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0432 \u0440\u0430\u0437\u0434\u0435\u043b \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0443 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0434\u043b\u044f \u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u0432\u044b\u0437\u043e\u0432\u043e\u0432<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#include \"\/etc\/asterisk\/trunks\/REGISTER\" <\/code><\/pre>\n\n\n\n<p>\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0432 \u043a\u043e\u043d\u0435\u0446 \u0444\u0430\u0439\u043b\u0430:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>;\u0417\u0430\u0432\u043e\u0434\u0438\u043c sip \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u043e\u0432\n#include \"\/etc\/asterisk\/trunks\/*.txt\" \n;\u0417\u0430\u0432\u043e\u0434\u0438\u043c \u0430\u0431\u043e\u043d\u0435\u043d\u0442\u043e\u0432\n#include \"\/etc\/asterisk\/abonents\/*.txt\" <\/code><\/pre>\n\n\n\n<p>\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0430\u0431\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u0432 Asterisk:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># mkdir \/etc\/asterisk\/abonents\n# touch \/etc\/asterisk\/abonents\/123.txt\n# chown -R asterisk:asterisk \/etc\/asterisk\/abonents\n# nano \/etc\/asterisk\/abonents\/123.txt<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;123]\ntype=friend                ; \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0438\u0437 user - \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0435, peer - \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0438\u0435, friend - \u0432\u0441\u0435 \u0442\u0438\u043f\u044b \u0437\u0432\u043e\u043d\u043a\u043e\u0432\nhost=dynamic            ; \u0437\u0430\u0434\u0430\u0435\u043c ip \u0430\u0434\u0440\u0435\u0441 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u043e\u0433\u043e \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u0430  \u0438\u043b\u0438 \u0441\u0442\u0430\u0432\u0438\u043c dynamic - \u0442\u043e\u0431\u0438\u0448 \u043d\u0435\u0442 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0438 \u043a IP\nusername=123            ; \u0438\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\nsecret=********            ; \u043f\u0430\u0440\u043e\u043b\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\ndtmfmode=rfc2833        ; \u0441\u043f\u043e\u0441\u043e\u0431 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 DTMF\nnat=no                    ; \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c yes \u0435\u0441\u043b\u0438 \u043a\u043b\u0438\u0435\u043d\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438\u0437 \u0437\u0430 NAT\ncanreinvite=no            ; \u0437\u0430\u043f\u0440\u0435\u0449\u0430\u0435\u043c \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0432 \u043e\u0431\u0445\u043e\u0434 asterisk\ncontext=my-home        ; \u0438\u043c\u044f \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430 \u043a\u0443\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u0432\u0445\u043e\u0434\u0438\u0442\u044c \u0430\u0431\u043e\u043d\u0435\u043d\u0442\ncallerid=\"Vasya_Pupkin\" &lt;123&gt;    ; \u0438\u043d\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430, \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u0437\u0432\u043e\u043d\u043a\u0435\ncallgroup=42            ; \u0432\u043d\u043e\u0441\u0438\u043c \u0430\u0431\u043e\u043d\u043d\u0435\u043d\u0442\u0430 \u0432 \u0433\u0440\u0443\u043f\u043f\u0443 1 \u0438 3\npickupgroup=42            ; \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u043c \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442 \u0437\u0432\u043e\u043d\u043a\u043e\u0432 \u0432\u0433\u0440\u0443\u043f\u043f\u0435 1 \u0438 2\ncall-limit=1                ; \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u043b\u0438\u043c\u0438\u0442 \u043d\u0430 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u0437\u0432\u043e\u043d\u043a\u0438\nqualify=1000                ; \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u043f\u0435\u0440\u0438\u043e\u0434 \u043e\u043f\u0440\u043e\u0441\u0430 \u0430\u0431\u043e\u043d\u0435\u043d\u0442\u0430 \u0432 \u043c\u0441\ndisallow=all                ; \u0437\u0430\u043f\u0440\u0435\u0449\u0430\u0435\u043c \u0432\u0441\u0435 \u043a\u043e\u0434\u0435\u043a\u0438\nallow=ulaw                ; \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043a\u043e\u0434\u0435\u043a\ncall-limit=2                ; \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043a\u043e\u043b-\u0432\u043e \u043b\u0438\u043d\u0438\u0439 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e<\/code><\/pre>\n\n\n\n<p>\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c SIP \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># mkdir \/etc\/asterisk\/trunks\n# touch \/etc\/asterisk\/trunks\/4951234567.txt\n# touch \/etc\/asterisk\/trunks\/REGISTER\n# chown -R asterisk:asterisk \/etc\/asterisk\/trunks\n# nano \/etc\/asterisk\/abonents\/4951234567.txt<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;ON-LIME]                    ; \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0442\u0440\u0430\u043d\u043a\u0430\ntype=peer                    ; \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0438\u0437 user - \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0435, peer - \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0438\u0435, friend - \u0432\u0441\u0435 \u0442\u0438\u043f\u044b \u0437\u0432\u043e\u043d\u043a\u043e\u0432\nfromuser=4951234567        ; \u0432\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c SIP Login \u0432\u044b\u0434\u0430\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u043e\u043c\ndefaultuser=4951234567        ; \u0432\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c SIP Login \u0432\u044b\u0434\u0430\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u043e\u043c\nsecret=********                ; \u0432\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c SIP Password \u0432\u044b\u0434\u0430\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u043e\u043c\nhost=tel2.moscow.rt.ru        ; \u0432\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c SIP-\u0441\u0435\u0440\u0432\u0435\u0440 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430\nfromdomain=tel2.moscow.rt.ru    ; \u0432\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c SIP-\u0441\u0435\u0440\u0432\u0435\u0440 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430\ncontext=my-home            ; \u0438\u043c\u044f \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430 \u043a\u0443\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u0432\u0445\u043e\u0434\u0438\u0442\u044c \u0442\u0440\u0430\u043d\u043a\ninsecure=port,invite\ncanreinvite=no                ; \u0437\u0430\u043f\u0440\u0435\u0449\u0430\u0435\u043c \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0432 \u043e\u0431\u0445\u043e\u0434 asterisk\nnat=no                        ; \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c yes \u0435\u0441\u043b\u0438 SIP-\u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438\u0437 \u0437\u0430 NAT\ndtmfmode=rfc2833            ; \u0441\u043f\u043e\u0441\u043e\u0431 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 DTMF\nqualify=1000                    ; \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u043f\u0435\u0440\u0438\u043e\u0434 \u043e\u043f\u0440\u043e\u0441\u0430 \u0430\u0431\u043e\u043d\u0435\u043d\u0442\u0430 \u0432 \u043c\u0441\ndisallow=all                    ; \u0437\u0430\u043f\u0440\u0435\u0449\u0430\u0435\u043c \u0432\u0441\u0435 \u043a\u043e\u0434\u0435\u043a\u0438\nallow=alaw                    ; \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043a\u043e\u0434\u0435\u043a\nallow=ulaw                    ; \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043a\u043e\u0434\u0435\u043a\ncall-limit=2                    ; \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043a\u043e\u043b-\u0432\u043e \u043b\u0438\u043d\u0438\u0439 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c<\/code><\/pre>\n\n\n\n<p>\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0441\u0442\u0440\u043e\u043a\u0443 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0434\u043b\u044f \u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u0432\u044b\u0437\u043e\u0432\u043e\u0432:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># nano \/etc\/asterisk\/trunks\/REGISTER<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>register =&gt; 49561234567@ON-LIME\/4951234567    ; Sip_Login@\u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435_\u0442\u0440\u0430\u043d\u043a\u0430\/extension (\u0434\u043b\u044f \"B\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u0437\u0432\u043e\u043d\u043a\u043e\u0432\" \u0432 custom_extensions.conf)<\/code><\/pre>\n\n\n\n<p><strong>3. \u0413\u043e\u043b\u043e\u0441\u043e\u0432\u043e\u0435 \u043c\u0435\u043d\u044e IVR (\u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e)<\/strong><\/p>\n\n\n\n<p>\u0421\u043e\u0437\u0434\u0430\u0451\u043c \u0444\u0430\u0438\u043b \u0441 \u0433\u043e\u043b\u043e\u0441\u043e\u0432\u044b\u043c \u043c\u0435\u043d\u044e<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># mkdir \/etc\/asterisk\/ivr\n# touch \/etc\/asterisk\/ivr\/main.tree\n# chown -R asterisk:asterisk \/etc\/asterisk\/ivr\n# nano \/etc\/asterisk\/abonents\/main.tree<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;main_tree]\ninclude =&gt; local-users ; \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u043c \u0434\u043e\u043d\u0430\u0431\u043e\u0440 \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0445 \u043d\u043e\u043c\u0435\u0440\u043e\u0432\n    exten   =&gt; s,1,Ringing\n    exten   =&gt; s,2,Set(choice_counter=0)\n    exten   =&gt; s,3,Wait(2) ; \u0438\u043c\u0438\u0442\u0430\u0446\u0438\u044f \u0432\u044b\u0437\u043e\u0432\u0430 \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0435 2-\u0445 \u0441\u0435\u043a\u0443\u043d\u0434\n    exten   =&gt; s,4,Set(TIMEOUT(response)=10) ; \u0436\u0434\u0435\u043c \u0432\u0432\u043e\u0434\u0430 \u043d\u0435 \u0431\u043e\u043b\u0435\u0435 10 \u0441\u0435\u043a\u0443\u043d\u0434\n    exten   =&gt; s,5,Set(TIMEOUT(digit)=5) ; \u043f\u0430\u0443\u0437\u0430 \u043c\u0435\u0436\u0434\u0443 \u043d\u0430\u0431\u043e\u0440\u043e\u043c \u0446\u0438\u0444\u0440 5 \u0441\u0435\u043a\u0443\u043d\u0434\n    exten   =&gt; s,6,Background(\/etc\/asterisk\/ivr\/welcome) ; \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0444\u0430\u0439\u043b \u0441 \u0433\u043e\u043b\u043e\u0441\u043e\u0432\u044b\u043c \u043f\u0440\u0438\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435\u043c\n    exten   =&gt; s,7,WaitExten(10) ; \u0436\u0434\u0435\u043c 10 \u0441\u0435\u043a\u0443\u043d\u0434 \u043f\u043e\u043a\u0430 \u0431\u0443\u0434\u0435\u0442 \u0441\u0434\u0435\u043b\u0430\u043d \u0432\u044b\u0431\u043e\u0440.\n\n; \u0435\u0441\u043b\u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0432\u044b\u0431\u0440\u0430\u043b\u0438 \u0438\u0434\u0438\u0442\u0435 \u043d\u0430 ...\n    ;exten  =&gt; s,n,Queue(operator,tTk,1,,20) ; \u0440\u0430\u0441\u043a\u043e\u043c\u0435\u043d\u0442\u0438\u0442\u044c, \u0435\u0441\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043e\u0447\u0435\u0440\u0435\u0434\u0438\n    exten  =&gt; s,n,Dial(SIP\/123,tTk,1,,40) ; \u0437\u0430\u043a\u043e\u043c\u0435\u043d\u0442\u0438\u0442\u044c, \u0435\u0441\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043e\u0447\u0435\u0440\u0435\u0434\u0438\n    exten  =&gt; s,n,Playback(vm-nobodyavail)\n    exten  =&gt; s,n,Hangup\n\n; \u0434\u043b\u044f \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u0441 \"123\" - \u043d\u0430\u0436\u043c\u0438\u0442\u0435 \u043e\u0434\u0438\u043d\n    exten  =&gt; 1,1,Dial(SIP\/4601,tTk,1,,40)\n    exten  =&gt; 1,n,Playback(vm-nobodyavail)\n    exten  =&gt; 1,n,Hangup\n\n; \u0434\u043b\u044f \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u0441 \"321\" - \u043d\u0430\u0436\u043c\u0438\u0442\u0435 \u0434\u0432\u0430\n    exten  =&gt; 2,1,Dial(SIP\/5101,tTk,1,,40)\n    exten  =&gt; 2,n,Playback(vm-nobodyavail)\n    exten  =&gt; 2,n,Hangup\n\n; \u0438\u0437\u0432\u0438\u043d\u0438\u0442\u0435 \u0434\u0430\u043d\u043d\u044b\u0439 \u043d\u043e\u043c\u0435\u0440 \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 ...\n; \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u0430\u0431\u043e\u043d\u0435\u043d\u0442\u0430 \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u0432 \u0433\u043e\u043b\u043e\u0441\u043e\u0432\u043e\u0435 \u043c\u0435\u043d\u044e\n    exten   =&gt; i,1,Playback(pbx-invalid)\n    exten   =&gt; i,n,Goto(s,7)\n\n; \u043f\u043e \u0438\u0441\u0442\u0435\u0447\u0435\u043d\u0438\u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \"t\" \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f \u043d\u0430 \u043b\u0438\u043d\u0438\u0438,\n; \u043f\u0440\u043e\u0449\u0430\u0435\u043c\u0441\u044f \u0441 \u0430\u0431\u043e\u043d\u0435\u043d\u0442\u043e\u043c (Playback(vm-goodbye)) \u0438 \u043a\u043b\u0430\u0434\u0451\u043c \u0442\u0440\u0443\u0431\u043a\u0443 (Hangup()).\n    exten   =&gt; t,1,Playback(vm-nobodyavail)\n    exten   =&gt; t,2,Playback(vm-goodbye)\n    exten   =&gt; t,n,Hangup()<\/code><\/pre>\n\n\n\n<p>\u0417\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0444\u0430\u0439\u043b \u0441 \u0433\u043e\u043b\u043e\u0441\u043e\u0432\u044b\u043c \u043f\u0440\u0438\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435\u043c.<br>\u0412 \u0444\u0430\u0439\u043b\u0435 custom_extensions.conf, \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 [my-home] \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0434\u0438\u0430\u043b\u043f\u043b\u0430\u043d:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>; \u0437\u0430\u043f\u0438\u0441\u044c \u0437\u0432\u0443\u043a\u043e\u0432\u044b\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439\n    exten =&gt; 1000,1,Wait(2)\n    exten =&gt; 1000,2,Record(\/etc\/asterisk\/ivr\/testrecord:wav)\n    exten =&gt; 1000,3,Wait(2)\n    exten =&gt; 1000,4,Hangup\n    exten =&gt; 1100,1,Playback(\/etc\/asterisk\/ivr\/testrecord)\n    exten =&gt; 1100,2,Wait(2)\n    exten =&gt; 1100,3,Hangup<\/code><\/pre>\n\n\n\n<p>\u041d\u0430\u0431\u0438\u0440\u0430\u0435\u043c \u043d\u0430 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u043d\u043e\u043c \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u0435 \u043d\u043e\u043c\u0435\u0440 1000 \u0438 \u043f\u043e\u0441\u043b\u0435 \u0433\u0443\u0434\u043a\u0430 \u0434\u0438\u043a\u0442\u0443\u0435\u043c \u0433\u043e\u043b\u043e\u0441\u043e\u0432\u043e\u0435 \u043f\u0440\u0438\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435,<br>\u043d\u0430\u0436\u0438\u043c\u0430\u0435\u043c # \u0434\u043b\u044f \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u0437\u0430\u043f\u0438\u0441\u0438. \u041d\u0430\u0431\u0438\u0440\u0430\u0435\u043c \u043d\u043e\u043c\u0435\u0440 1100 \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u043b\u0443\u0448\u0438\u0432\u0430\u043d\u0438\u044f.<br>\u041f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u044b\u0432\u0430\u0435\u043c \u0444\u0430\u0439\u043b:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># cp \/etc\/asterisk\/ivr\/testrecord.wav \/etc\/asterisk\/ivr\/welcome.wav<\/code><\/pre>\n\n\n\n<p><strong>4. \u041e\u0447\u0435\u0440\u0435\u0434\u0438<\/strong><\/p>\n\n\n\n<p>\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0432 \u043a\u043e\u043d\u0435\u0446 \u0444\u0430\u0439\u043b\u0430 queues.conf \u0437\u0430\u043f\u0438\u0441\u044c<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># nano \/etc\/asterisk\/queues.conf<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>#include \"\/etc\/asterisk\/conf\/custom_queues.conf\" \n<\/code><\/pre>\n\n\n\n<p>\u0421\u043e\u0437\u0434\u0430\u0451\u043c \u0444\u0430\u0439\u043b custom_queues.conf \u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u043c \u0435\u0433\u043e<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># touch \/etc\/asterisk\/conf\/custom_queues.conf\n# chown asterisk:asterisk \/etc\/asterisk\/conf\/custom_queues.conf\n# nano \/etc\/asterisk\/conf\/custom_queues.conf<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;operator]\ncontext=my-home\nstrategy=ringall ; \u0437\u0432\u043e\u043d\u043e\u043a \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0441\u0442\u0443\u043f\u0430\u0442\u044c \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u043d\u0430 \u0432\u0441\u0435 \u043d\u043e\u043c\u0435\u0440\u0430 \u0432 \u0433\u0440\u0443\u043f\u043f\u0435\ntimeout=10\nretry=2\nwrapuptime=10\nmaxlen=15\n        member =&gt; SIP\/123 ; \u043d\u043e\u043c\u0435\u0440 \u0430\u0431\u043e\u043d\u0435\u043d\u0442\u0430\n        member =&gt; SIP\/321<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9],"tags":[11,4,3],"class_list":["post-92","post","type-post","status-publish","format-standard","hentry","category-howto","tag-asterisk","tag-centos","tag-linux"],"_links":{"self":[{"href":"https:\/\/abramov.me\/index.php?rest_route=\/wp\/v2\/posts\/92","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/abramov.me\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/abramov.me\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/abramov.me\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/abramov.me\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=92"}],"version-history":[{"count":2,"href":"https:\/\/abramov.me\/index.php?rest_route=\/wp\/v2\/posts\/92\/revisions"}],"predecessor-version":[{"id":342,"href":"https:\/\/abramov.me\/index.php?rest_route=\/wp\/v2\/posts\/92\/revisions\/342"}],"wp:attachment":[{"href":"https:\/\/abramov.me\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=92"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/abramov.me\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=92"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/abramov.me\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=92"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}