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 12:50] val [Настройка плана нумерации] |
сервис_asterisk [2022/04/12 09:25] val [С использованием Call файлов] |
||
---|---|---|---|
Line 131: | Line 131: | ||
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 198: | Line 195: | ||
<code> | <code> | ||
- | [corp2] | + | [corp] |
type=endpoint | type=endpoint | ||
transport=udp-transport-1 | transport=udp-transport-1 | ||
Line 204: | Line 201: | ||
disallow=all | disallow=all | ||
allow=alaw | allow=alaw | ||
- | aors=corp2 | + | aors=corp |
- | force_rport=yes | + | ;force_rport=yes |
- | rewrite_contact=yes | + | ;rewrite_contact=yes |
- | rtp_symmetric=yes | + | ;rtp_symmetric=yes |
- | direct_media=no | + | ;direct_media=no |
- | + | [corp] | |
- | [corp2] | + | |
type=aor | type=aor | ||
- | contact=sip:server.corp2.un:5060 | + | contact=sip:server.corp.un:5060 |
- | qualify_frequency=60 | + | ;qualify_frequency=60 |
- | [corp2] | + | [corp] |
type=identify | type=identify | ||
- | endpoint=corp2 | + | endpoint=corp |
- | match=server.corp2.un | + | match=server.corp.un |
</code> | </code> | ||
Line 228: | Line 224: | ||
</code><code> | </code><code> | ||
... | ... | ||
+ | ; voip1.un и server.corp.un одна и та же система | ||
+ | ; приходится подключаться к ней с разных портов :) | ||
+ | |||
+ | [udp-transport-2] | ||
+ | type=transport | ||
+ | protocol=udp | ||
+ | bind=0.0.0.0:5062 | ||
+ | ;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] | ||
type=endpoint | type=endpoint | ||
- | transport=udp-transport-1 | + | transport=udp-transport-2 |
context=default | context=default | ||
disallow=all | disallow=all | ||
Line 256: | Line 263: | ||
[voip1_00000X] | [voip1_00000X] | ||
type=registration | type=registration | ||
- | transport=udp-transport-1 | + | transport=udp-transport-2 |
outbound_auth=voip1_00000X | outbound_auth=voip1_00000X | ||
server_uri=sip:voip1.un | server_uri=sip:voip1.un | ||
Line 382: | Line 389: | ||
==== 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 646: | Line 655: | ||
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 1582: | Line 1593: | ||
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 1636: | Line 1644: | ||
</code> | </code> | ||
==== Перехват вызова ==== | ==== Перехват вызова ==== | ||
+ | |||
+ | * [[https://wiki.asterisk.org/wiki/display/AST/Call+Pickup|Call Pickup]] | ||
<code> | <code> | ||
Line 1644: | Line 1654: | ||
callgroup=1 | callgroup=1 | ||
pickupgroup=1 | pickupgroup=1 | ||
+ | ;namedcallgroup=gr1,gr2,gr3 | ||
+ | ;namedpickupgroup=gr2,gr3,gr4 | ||
... | ... | ||
[403] | [403] | ||
Line 1655: | Line 1667: | ||
... | ... | ||
pickupexten = *88 | pickupexten = *88 | ||
+ | ... | ||
+ | </code><code> | ||
+ | server# cat /etc/asterisk/extensions.conf | ||
+ | </code><code> | ||
+ | ... | ||
+ | exten => _8XXXXXXXXXX,1,Dial(SIP/voip1_00000X/${EXTEN},,T) | ||
+ | ... | ||
+ | exten => voip1_00000X,1,Dial(SIP/401,,t) | ||
... | ... | ||
</code><code> | </code><code> | ||
Line 1879: | Line 1899: | ||
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 1888: | Line 1907: | ||
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 1934: | Line 1956: | ||
# /usr/share/originate_call_file.sh 402 601 Conferencia | # /usr/share/originate_call_file.sh 402 601 Conferencia | ||
# /usr/share/originate_call_file.sh 401 601 Conferencia | # /usr/share/originate_call_file.sh 401 601 Conferencia | ||
+ | </code><code> | ||
+ | # cat test_local.call | ||
+ | </code><code> | ||
+ | Channel: Local/311@default | ||
+ | Extension: 89161234567 | ||
+ | Context: default | ||
+ | CallerId: Echo <311> | ||
</code> | </code> | ||
==== Пример с использованием Asterisk AMI ==== | ==== Пример с использованием Asterisk AMI ==== | ||
Line 1996: | Line 2025: | ||
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 2206: | Line 2236: | ||
;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 2328: | Line 2360: | ||
* [[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 2785: | Line 2817: | ||
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() | ||
... | ... |