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 11:13] val [Настройка RES_PJSIP каналов] |
сервис_asterisk [2025/08/27 11:36] (current) val [Использование СУБД для хранения CDR] |
||
|---|---|---|---|
| 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 | ||
| + | |||
| [401] | [401] | ||
| Line 188: | 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 777: | Line 821: | ||
| === Создание базы данных === | === Создание базы данных === | ||
| - | * [[https://wiki.asterisk.org/wiki/display/AST/MySQL+CDR+Backend|MySQL CDR Backend]] | + | * [[https://community.asterisk.org/t/howto-cdr-with-mysql/20505|HOWTO: CDR with MySQL]] |
| <code> | <code> | ||
| Line 834: | 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 887: | 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 1521: | 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 1785: | 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 2201: | 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 2242: | 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 2539: | 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 2715: | 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 2803: | 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 2811: | 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 | ||