This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
сервис_asterisk [2025/07/24 12:25] val [Настройка RES_PJSIP каналов] |
сервис_asterisk [2025/08/21 16:14] (current) val [Добавление своих классов] |
||
---|---|---|---|
Line 134: | Line 134: | ||
* Переменные канала: [[https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+Function_PJSIP_ENDPOINT|function 'PJSIP_ENDPOINT']] | * Переменные канала: [[https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+Function_PJSIP_ENDPOINT|function 'PJSIP_ENDPOINT']] | ||
* [[https://zadarma.com/ru/support/instructions/asteriskpjsip/|Пример настройки подключения Asterisk PJSIP к Zadarma]] | * [[https://zadarma.com/ru/support/instructions/asteriskpjsip/|Пример настройки подключения Asterisk PJSIP к Zadarma]] | ||
+ | * [[https://voxlink.ru/kb/asterisk-configuration/opisanie-parametrov-konfiguracii-pjsip-v-asterisk-s-primerami/|Описание параметров конфигурации PJSIP в Asterisk с примерами]] | ||
=== Настройка PJSIP транспорта === | === Настройка PJSIP транспорта === | ||
Line 152: | Line 153: | ||
=== Настройка PJSIP точки подключения телефона === | === Настройка PJSIP точки подключения телефона === | ||
- | Базовый вариант | + | == Базовый вариант == |
<code> | <code> | ||
Line 178: | Line 179: | ||
max_contacts=1 | max_contacts=1 | ||
remove_existing=yes | remove_existing=yes | ||
+ | mailboxes=401@corpX | ||
;qualify_frequency=60 | ;qualify_frequency=60 | ||
- | ;mailboxes=401@corpX ;not work | + | |
[401] | [401] | ||
Line 189: | Line 191: | ||
</code> | </code> | ||
- | Wizard вариант | + | == Вариант с шаблонами == |
+ | <code> | ||
+ | # cat /etc/asterisk/pjsip.conf | ||
+ | </code><code> | ||
+ | ... | ||
+ | [endpoint-office](!) | ||
+ | type=endpoint | ||
+ | transport=udp-transport-1 | ||
+ | context=default | ||
+ | disallow=all | ||
+ | allow=alaw | ||
+ | [aor-reg](!) | ||
+ | type=aor | ||
+ | max_contacts=1 | ||
+ | remove_existing=yes | ||
+ | [auth-userpass](!) | ||
+ | type = auth | ||
+ | auth_type = userpass | ||
+ | |||
+ | [401](endpoint-office) | ||
+ | aors=401 | ||
+ | auth=401 | ||
+ | callerid=Иван Иванов<401> | ||
+ | [401](aor-reg) | ||
+ | mailboxes=401@corp13 | ||
+ | [401](auth-userpass) | ||
+ | password=tpassword401 | ||
+ | username=401 | ||
+ | |||
+ | [403](endpoint-office) | ||
+ | aors=403 | ||
+ | auth=403 | ||
+ | callerid=Вячеслав Лохтуров<403> | ||
+ | [403](aor-reg) | ||
+ | mailboxes=403@corp13 | ||
+ | [403](auth-userpass) | ||
+ | password=tpassword403 | ||
+ | username=403 | ||
+ | ... | ||
+ | </code> | ||
+ | |||
+ | == Wizard вариант == | ||
!!! Изменение отдельных параметров требует либо удаление/reload/добавление/reload всего описания точки подключения, либо перезапуска asterisk | !!! Изменение отдельных параметров требует либо удаление/reload/добавление/reload всего описания точки подключения, либо перезапуска asterisk | ||
Line 835: | Line 878: | ||
exten => _4XX,1,GoSub(sub-monitor,s,1) | exten => _4XX,1,GoSub(sub-monitor,s,1) | ||
exten => _4XX,n,Dial(SIP/${EXTEN}) | exten => _4XX,n,Dial(SIP/${EXTEN}) | ||
+ | ... | ||
+ | exten => _8XXXXXXXXXX,1,GoSub(sub-monitor,s,1) | ||
+ | exten => _8XXXXXXXXXX,n,Dial(...) | ||
... | ... | ||
;[macro-monitor] | ;[macro-monitor] | ||
Line 888: | Line 934: | ||
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"; | 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 1522: | Line 1569: | ||
dsn=asterisk | dsn=asterisk | ||
readsql=SELECT dstchannel FROM cdr WHERE src='${ARG1}' AND disposition='ANSWERED' ORDER BY calldate DESC LIMIT 1; | readsql=SELECT dstchannel FROM cdr WHERE src='${ARG1}' AND disposition='ANSWERED' ORDER BY calldate DESC LIMIT 1; | ||
+ | |||
+ | |||
</code><code> | </code><code> | ||
# cat /etc/asterisk/extensions.conf | # cat /etc/asterisk/extensions.conf | ||
Line 1786: | Line 1835: | ||
;;;debian# service asterisk restart | ;;;debian# service asterisk restart | ||
;imapserver=server.corpX.un | ;imapserver=server.corpX.un | ||
+ | ;imapserver=localhost | ||
+ | ;imapflags=notls | ||
;imapfolder=INBOX | ;imapfolder=INBOX | ||
+ | |||
;;;For SMTP | ;;;For SMTP | ||
Line 2202: | Line 2254: | ||
</code><code> | </code><code> | ||
... | ... | ||
- | exten => voip1_00000X,1,Dial(SIP/4NN,,m(incoming)t) | + | exten => voip1_00000X,1,Answer() |
+ | exten => voip1_00000X,n,Dial(SIP/4NN,,m(incoming)t) | ||
</code> | </code> | ||
===== Синтез речи с использованием пакета Festival ===== | ===== Синтез речи с использованием пакета Festival ===== | ||
Line 2243: | Line 2296: | ||
;exten => _4XX,n,Set(MY-CALLED-USER-NAME=${ODBC_SIPFRIENDS_BY_NAME(${EXTEN})}) | ;exten => _4XX,n,Set(MY-CALLED-USER-NAME=${ODBC_SIPFRIENDS_BY_NAME(${EXTEN})}) | ||
exten => _4XX,n,Set(MY-CALLED-USER-NAME=${SIPPEER(${EXTEN},callerid_name)}) | exten => _4XX,n,Set(MY-CALLED-USER-NAME=${SIPPEER(${EXTEN},callerid_name)}) | ||
- | ;exten => _4XX,n,Set(MY-CALLED-USER-NAME=${PJSIP_ENDPOINT(${EXTEN},callerid)}) | + | ;exten => _4XX,n,Set(MY-CALLED-USER-NAME=${CUT(PJSIP_ENDPOINT(${EXTEN},callerid),\",2)}) |
exten => _4XX,n,Festival(${MY-CALLED-USER-NAME} не может ответить) | exten => _4XX,n,Festival(${MY-CALLED-USER-NAME} не может ответить) | ||
Line 2540: | Line 2593: | ||
# cat /var/www/html/asterisk/addrbook.txt | # cat /var/www/html/asterisk/addrbook.txt | ||
</code><code> | </code><code> | ||
- | Вячеслав Лохтуров<+74951234569> | + | Вячеслав Лохтуров<84951234569> |
- | Вячеслав Лохтуров<+74951234560> | + | Вячеслав Лохтуров<84951234560> |
- | Ваше ФИО<+7ВАШМОБИЛЬНЫЙ> | + | Ваше ФИО<8ВАШМОБИЛЬНЫЙ> |
</code><code> | </code><code> | ||
# cat /usr/local/bin/get-customer-callerid-all.sh | # cat /usr/local/bin/get-customer-callerid-all.sh | ||
Line 2716: | Line 2769: | ||
* [[http://www.jcgonzalez.com/test-asterisk-ami-telnet|Log in, Log out from Asterisk AMI with Telnet]] | * [[http://www.jcgonzalez.com/test-asterisk-ami-telnet|Log in, Log out from Asterisk AMI with Telnet]] | ||
* [[http://habrahabr.ru/company/centosadmin/blog/161521/|Asterisk: обратный вызов с использованием AMI и PHP]] | * [[http://habrahabr.ru/company/centosadmin/blog/161521/|Asterisk: обратный вызов с использованием AMI и PHP]] | ||
+ | * [[https://habr.com/ru/articles/264819/|Asterisk Manager Interface в диалплане]] | ||
* [[https://voxlink.ru/kb/book/interfejs-upravlenija-asterisk-ami/]] | * [[https://voxlink.ru/kb/book/interfejs-upravlenija-asterisk-ami/]] | ||
* Программирование диалогов expect [[Программирование диалогов expect#Asterisk AMI]] | * Программирование диалогов expect [[Программирование диалогов expect#Asterisk AMI]] | ||
Line 2804: | Line 2858: | ||
* [[https://stackoverflow.com/questions/28064526/how-to-get-all-dialer-events-from-asterisk-rest-api-ari|How to get all dialer events from Asterisk REST API (ARI)?]] | * [[https://stackoverflow.com/questions/28064526/how-to-get-all-dialer-events-from-asterisk-rest-api-ari|How to get all dialer events from Asterisk REST API (ARI)?]] | ||
+ | * nodejs | ||
<code> | <code> | ||
- | debian9# curl -sL https://deb.nodesource.com/setup_9.x | sudo -E bash - | ||
- | |||
# apt install -y nodejs npm | # apt install -y nodejs npm | ||
Line 2812: | Line 2865: | ||
# wscat -c "ws://localhost:8088/ari/events?api_key=asterisk:asterisk&app=my-first-app" | # wscat -c "ws://localhost:8088/ari/events?api_key=asterisk:asterisk&app=my-first-app" | ||
+ | </code> | ||
+ | |||
+ | * python | ||
+ | <code> | ||
+ | # apt install python3-websocket | ||
+ | |||
+ | # python3 | ||
+ | </code><code> | ||
+ | import websocket | ||
+ | def on_message(wsapp, message): | ||
+ | print(message) | ||
+ | |||
+ | wsapp = websocket.WebSocketApp("ws://localhost:8088/ari/events?api_key=asterisk:asterisk&app=my-first-app", on_message=on_message) | ||
+ | wsapp.run_forever() | ||
+ | |||
+ | |||
</code><code> | </code><code> | ||
*CLI> ari show apps | *CLI> ari show apps |