This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
сервис_asterisk [2022/08/31 14:47] val [Использование FollowMe] |
сервис_asterisk [2024/05/28 09:01] (current) val [Asterisk AGI] |
||
---|---|---|---|
Line 8: | Line 8: | ||
===== Установка ===== | ===== Установка ===== | ||
+ | * [[https://community.asterisk.org/t/install-asterisk-via-apt-or-from-source/99713|Install Asterisk via apt or from source?]] | ||
==== Debian/Ubuntu ==== | ==== Debian/Ubuntu ==== | ||
<code> | <code> | ||
Line 38: | Line 39: | ||
</code><code> | </code><code> | ||
[general] | [general] | ||
- | ;udpbindaddr=0.0.0.0:5061 | + | ;udpbindaddr=0.0.0.0:6050 |
transport=udp | transport=udp | ||
disallow=all | disallow=all | ||
Line 45: | Line 46: | ||
directmedia=no ; for webinar | directmedia=no ; for webinar | ||
nat=force_rport,comedia ; for webinar | nat=force_rport,comedia ; for webinar | ||
+ | qualify=yes ; for webinar | ||
;context=default | ;context=default | ||
Line 72: | Line 74: | ||
;disallow=all | ;disallow=all | ||
;allow=gsm | ;allow=gsm | ||
- | ;canreinvite=no ;1.4 | ||
- | ;directmedia=no ;1.6 | ||
- | ;;;nat=yes | ||
- | ;nat=force_rport,comedia | ||
- | ;qualify=yes | ||
;call-limit=1 | ;call-limit=1 | ||
;deny=0.0.0.0/0.0.0.0 | ;deny=0.0.0.0/0.0.0.0 | ||
;permit=172.16.1.0/255.255.255.0 | ;permit=172.16.1.0/255.255.255.0 | ||
+ | ;directmedia=no | ||
+ | ;nat=force_rport,comedia | ||
+ | ;qualify=yes | ||
;[user2] | ;[user2] | ||
Line 359: | Line 359: | ||
</code><code> | </code><code> | ||
[general] | [general] | ||
+ | ... | ||
+ | disallow=all | ||
+ | allow=alaw | ||
... | ... | ||
allow=h263 | allow=h263 | ||
Line 1609: | Line 1612: | ||
[general] | [general] | ||
... | ... | ||
- | ;featuredigittimeout = 1000 | + | featuredigittimeout = 3000 |
... | ... | ||
[featuremap] | [featuremap] | ||
Line 1952: | Line 1955: | ||
CallerId: CorpX<84992636363> | CallerId: CorpX<84992636363> | ||
</code><code> | </code><code> | ||
+ | server# grep astspooldir /etc/asterisk/asterisk.conf | ||
+ | |||
server# cp call.txt /var/spool/asterisk/outgoing/ | server# cp call.txt /var/spool/asterisk/outgoing/ | ||
+ | |||
+ | server# ls /var/spool/asterisk/outgoing_done | ||
</code><code> | </code><code> | ||
# cat /usr/share/originate_call_file.sh | # cat /usr/share/originate_call_file.sh | ||
Line 2043: | Line 2050: | ||
;[menu2] | ;[menu2] | ||
;exten => s,1,Background(silence/8) | ;exten => s,1,Background(silence/8) | ||
- | ;exten => s,1,WaitExten(8) ; работает только после Answer или Background | + | ;exten => s,n,WaitExten(8) ; работает только после Answer или Background |
;exten => _4XX,1,Goto(default,${EXTEN},1) | ;exten => _4XX,1,Goto(default,${EXTEN},1) | ||
;exten => t,1,Goto(menu,s,1) ; timeout exceeded, работает только с WaitExten | ;exten => t,1,Goto(menu,s,1) ; timeout exceeded, работает только с WaitExten | ||
Line 2423: | Line 2430: | ||
exten => s,n,ExecIf($["${DIALSTATUS}"="${BUSY}"]?Bridge(SIP/854)) | exten => s,n,ExecIf($["${DIALSTATUS}"="${BUSY}"]?Bridge(SIP/854)) | ||
exten => s,n,Dial(SIP/854) | exten => s,n,Dial(SIP/854) | ||
+ | </code> | ||
+ | |||
+ | Кузьмин Алексей предложил решение, если требуется только уведомить звонящего | ||
+ | |||
+ | <code> | ||
+ | exten => _X.,1,Dial(PJSIP/${EXTEN},60) | ||
+ | exten => _X.,n,Goto(s-${DIALSTATUS},1) ; Jump based on status (NOANSWER, BUSY, CHANUNAVAIL, CONGESTION, ANSWER) | ||
+ | exten => s-BUSY,1,Playback(ru/custom/busy_ru) | ||
+ | exten => s-BUSY,n,Hangup() | ||
+ | exten => s-NOANSWER,1,Playback(ru/custom/noanswer_ru) | ||
+ | exten => s-NOANSWER,n,Hangup() | ||
+ | exten => s-CHANUNAVAIL,1,Playback(ru/custom/invalid_ru) | ||
+ | exten => s-CHANUNAVAIL,n,Hangup() | ||
</code> | </code> | ||
===== Организация Call центра ===== | ===== Организация Call центра ===== | ||
Line 2575: | Line 2595: | ||
=== Пример на SHELL === | === Пример на SHELL === | ||
+ | |||
+ | |||
<code> | <code> | ||
Line 2621: | Line 2643: | ||
exten => 313,n,Hangup() | exten => 313,n,Hangup() | ||
... | ... | ||
+ | </code> | ||
+ | |||
+ | Решение от Кузьмина Алексея, скрипты взаимоисключающие, один только переводит полное ФИО в фамилию + инициалы, второй еще транслитирует | ||
+ | |||
+ | <code> | ||
+ | Место хранения /var/lib/asterisk/agi-bin | ||
+ | |||
+ | Сделать исполняемыми chmod +x | ||
+ | |||
+ | exten => _X.,1,AGI(shortname.sh,${CALLERID(name)},${CALLERID(num)}) | ||
+ | exten => _X.,1,AGI(translite.sh,${CALLERID(name)},${CALLERID(num)}) | ||
+ | |||
+ | shortname.sh | ||
+ | |||
+ | #!/bin/bash | ||
+ | fio="" | ||
+ | words=($1) | ||
+ | num=$2 | ||
+ | m=${#words[@]} | ||
+ | for ((i=0;i<=m-1;i++)); do | ||
+ | word=${words[$i]} | ||
+ | if [ $i -gt 0 ]; then | ||
+ | word=${word:0:1}. | ||
+ | fi | ||
+ | if [ $i -eq 0 ]; then | ||
+ | fio="${word} " | ||
+ | else | ||
+ | fio="${fio}${word}" | ||
+ | fi | ||
+ | done | ||
+ | echo "SET CALLERID \"$fio\"<$num>" | ||
+ | |||
+ | translite.sh | ||
+ | |||
+ | #!/bin/bash | ||
+ | fio="" | ||
+ | words=($1) | ||
+ | num=$2 | ||
+ | m=${#words[@]} | ||
+ | for ((i=0;i<=m-1;i++)); do | ||
+ | word=${words[$i]} | ||
+ | if [ $i -gt 0 ]; then | ||
+ | word=${word:0:1}. | ||
+ | fi | ||
+ | str=`echo $word | sed "y/абвгдеёзийклмнопрстуфыэ/abvgdeeziyklmnoprstufye/"` | ||
+ | str=`echo $str | sed "y/АБВГДЕЁЗИЙКЛМНОПРСТУФЫЭ/ABVGDEEZIYKLMNOPRSTUFYE/"` | ||
+ | str=${str//ж/zh} str=${str//Ж/Zh}; | ||
+ | str=${str//х/kh} str=${str//Х/Kh}; | ||
+ | str=${str//ц/ts} str=${str//Ц/Ts}; | ||
+ | str=${str//ч/ch} str=${str//Ч/Ch}; | ||
+ | str=${str//ш/sh} str=${str//Ш/Sh}; | ||
+ | str=${str//щ/sch} str=${str//Щ/Sch}; | ||
+ | str=${str//ъ/} str=${str//Ъ/}; | ||
+ | str=${str//ь/} str=${str//Ь/}; | ||
+ | str=${str//ю/yu} str=${str//Ю/Yu}; | ||
+ | str=${str//я/ya} str=${str//Я/Ya}; | ||
+ | if [ $i -eq 0 ]; then | ||
+ | fio="${str} " | ||
+ | else | ||
+ | fio="${fio}${str}" | ||
+ | fi | ||
+ | done | ||
+ | echo "SET CALLERID \"$fio\"<$num>" | ||
</code> | </code> | ||
Line 3136: | Line 3221: | ||
==== Использование хешей паролей для каналов типа user ==== | ==== Использование хешей паролей для каналов типа user ==== | ||
- | [[http://www.voip-info.org/wiki/view/Asterisk+sip+md5secret]] | + | * [[http://www.voip-info.org/wiki/view/Asterisk+sip+md5secret]] |
+ | * [[http://asterisk-support.ru/forum/topics/3032/|SIP авторизация и MD5]] | ||
<code> | <code> |