This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
сервис_asterisk [2024/07/30 15:29] val [Распознавание речи в Asterisk с использованием Yandex SpeechKit HTTP API] |
сервис_asterisk [2025/06/23 17:05] (current) val [Настройка CHAN_SIP каналов] |
||
---|---|---|---|
Line 44: | Line 44: | ||
allow=alaw | allow=alaw | ||
- | directmedia=no ; for webinar | + | ;directmedia=no ; for webinar |
- | nat=force_rport,comedia ; for webinar | + | ;nat=force_rport,comedia ; for webinar |
- | qualify=yes ; for webinar | + | ;qualify=yes ; for webinar |
;context=default | ;context=default | ||
Line 110: | Line 110: | ||
directmedia=no | directmedia=no | ||
;call-limit=1 | ;call-limit=1 | ||
+ | ;transport=tls | ||
+ | ;encryption=yes | ||
[401](office) | [401](office) | ||
Line 203: | Line 205: | ||
;endpoint/set_var=MY-USER-ID=user2@corp13.un | ;endpoint/set_var=MY-USER-ID=user2@corp13.un | ||
;endpoint/callerid=Petr P. Petrov<402> | ;endpoint/callerid=Petr P. Petrov<402> | ||
+ | ;endpoint/force_rport=yes | ||
+ | ;endpoint/rewrite_contact=yes | ||
+ | ;endpoint/rtp_symmetric=yes | ||
+ | ;endpoint/direct_media=no | ||
+ | ;endpoint/acl=acl_office | ||
+ | ;;endpoint/acl=acl_internet | ||
aor/max_contacts=1 | aor/max_contacts=1 | ||
aor/remove_existing=yes | aor/remove_existing=yes | ||
+ | </code><code> | ||
+ | # cat /etc/asterisk/acl.conf | ||
+ | </code><code> | ||
+ | [acl_office] | ||
+ | deny=0.0.0.0/0.0.0.0 | ||
+ | permit=192.168.X.0/255.255.255.0 | ||
+ | |||
+ | [acl_internet] | ||
+ | permit=0.0.0.0/0.0.0.0 | ||
</code> | </code> | ||
Line 671: | Line 688: | ||
==== Просмотр текущих звонков ==== | ==== Просмотр текущих звонков ==== | ||
<code> | <code> | ||
+ | server*CLI> core show channels | ||
+ | |||
server*CLI> sip show channels | server*CLI> sip show channels | ||
Line 759: | Line 778: | ||
CREATE DATABASE asterisk; | CREATE DATABASE asterisk; | ||
- | GRANT ALL ON asterisk.* TO asterisk@localhost IDENTIFIED BY 'asterisk'; | + | CREATE USER asterisk@localhost IDENTIFIED BY 'asterisk'; |
+ | |||
+ | GRANT ALL ON asterisk.* TO asterisk@localhost; | ||
+ | |||
+ | #GRANT ALL ON asterisk.* TO asterisk@localhost IDENTIFIED BY 'asterisk'; | ||
USE asterisk; | USE asterisk; | ||
Line 1503: | Line 1526: | ||
... | ... | ||
</code> | </code> | ||
- | ===== Аутентификация и учет звонков в RADIUS ===== | ||
- | * [[Сервис FreeRADIUS]] | ||
- | |||
- | <code> | ||
- | # cat /usr/share/auth.sh | ||
- | </code><code> | ||
- | #!/bin/sh | ||
- | |||
- | CALL_FROM=$1 | ||
- | |||
- | # chown asterisk /tmp/auth.log | ||
- | |||
- | if echo "User-Name=${CALL_FROM},User-Password=${CALL_FROM},NAS-IP-Address=127.0.0.1" | radclient localhost auth testing123 >>/tmp/auth.log | ||
- | then | ||
- | echo -n YES | ||
- | else | ||
- | echo -n NO | ||
- | fi | ||
- | |||
- | exit 0 | ||
- | </code><code> | ||
- | # cat /usr/share/acct-start.sh | ||
- | </code><code> | ||
- | #!/bin/sh | ||
- | |||
- | CALL_ID=$1 | ||
- | CALL_FROM=$2 | ||
- | CALL_TO=$3 | ||
- | |||
- | echo "User-Name=${CALL_FROM},Acct-Session-Id=${CALL_ID},Called-Station-Id=${CALL_TO},Calling-Station-Id=${CALL_FROM},Acct-Status-Type=Start,NAS-IP-Address=127.0.0.1,NAS-Port=${CALL_FROM}${CALL_TO}"| radclient localhost acct testing123 | ||
- | |||
- | exit 0 | ||
- | </code><code> | ||
- | # cat /usr/share/acct-stop.sh | ||
- | </code><code> | ||
- | #!/bin/sh | ||
- | |||
- | CALL_ID=$1 | ||
- | CALL_FROM=$2 | ||
- | CALL_TO=$3 | ||
- | |||
- | echo "User-Name=${CALL_FROM},Acct-Session-Id=${CALL_ID},Acct-Status-Type=Stop,NAS-IP-Address=127.0.0.1,NAS-Port=${CALL_FROM}${CALL_TO}"| radclient localhost acct testing123 | ||
- | |||
- | exit 0 | ||
- | </code> | ||
- | |||
- | Примечания: | ||
- | |||
- | * Помещаем абонента, звонки которого надо тарифицировать, в контекст billing | ||
- | * Переводим все тарифицируемые вызовы в контекст aaa-call (что-бы отследить событие окончания разговора через контекст "h") | ||
- | * В случае MYAUTH!=NO разрешаем абоненту совершить звонок. С помощью макроса "U" программируем вызов кода в момент снятия трубки для начала тарификации. По какой то причине переменные ${CALLERID(num)} ${CALLERID(dnid)} не передаются, а ${UNIQUEID} меняет значение в этом коде, поэтому занчения передаются через аргументы. | ||
- | * В контексте "h" проверяем факт наличия разговора и только в этом случае тарифицируем его окончание | ||
- | |||
- | <code> | ||
- | # cat /etc/asterisk/extensions.conf | ||
- | </code><code> | ||
- | ... | ||
- | [billing] | ||
- | ... | ||
- | exten => _4XX,1,Goto(aaa-call,s,1) | ||
- | ... | ||
- | [aaa-call] | ||
- | exten => s,1,Verbose(AUTH CALL_ID=${UNIQUEID} CALL_FROM=${CALLERID(num)} CALL_TO=${CALLERID(dnid)}) | ||
- | exten => s,n,Set(MYAUTH=${SHELL(/usr/share/auth.sh ${CALLERID(num)})}); | ||
- | exten => s,n,GotoIf($["${MYAUTH}" = "NO"]?end_call) | ||
- | exten => s,n,Dial(SIP/${CALLERID(dnid)},,U(aaa-call-beg-acct,${UNIQUEID},${CALLERID(num)},${CALLERID(dnid)})); | ||
- | exten => s,n(end_call),Hangup() | ||
- | |||
- | exten => h,1,GotoIf($["${DIALSTATUS}" != "ANSWER"]?no-answer) | ||
- | exten => h,n,Verbose(END ACCT DIALSTATUS=${DIALSTATUS} CALL_ID=${UNIQUEID} CALL_FROM=${CALLERID(num)} CALL_TO=${CALLERID(dnid)}) | ||
- | exten => h,n,System(/usr/share/acct-stop.sh ${UNIQUEID} ${CALLERID(num)} ${CALLERID(dnid)}) | ||
- | exten => h,n(no-answer),NoOp() | ||
- | |||
- | [aaa-call-beg-acct] | ||
- | exten => s,1,Verbose(BEGIN ACCT CALL_ID=${ARG1} CALL_FROM=${ARG2} CALL_TO=${ARG3}) | ||
- | exten => s,n,System(/usr/share/acct-start.sh ${ARG1} ${ARG2} ${ARG3}) | ||
- | exten => s,n,return | ||
- | ... | ||
- | </code> | ||
===== Настройка дополнительных видов обслуживания ===== | ===== Настройка дополнительных видов обслуживания ===== | ||
Line 2746: | Line 2690: | ||
[general] | [general] | ||
enabled = yes | enabled = yes | ||
+ | ;webenabled = yes | ||
port = 5038 | port = 5038 | ||
bindaddr = 127.0.0.1 | bindaddr = 127.0.0.1 | ||
Line 2788: | Line 2733: | ||
- | === Настройка доступа к ARI === | + | === Настройка http доступа === |
<code> | <code> | ||
# cat /etc/asterisk/http.conf | # cat /etc/asterisk/http.conf | ||
Line 2797: | Line 2742: | ||
;bindaddr=0.0.0.0 | ;bindaddr=0.0.0.0 | ||
bindport=8088 | bindport=8088 | ||
- | </code><code> | + | </code> |
+ | === Настройка доступа к ARI === | ||
+ | <code> | ||
# cat /etc/asterisk/ari.conf | # cat /etc/asterisk/ari.conf | ||
</code><code> | </code><code> |