С Новым годом! Форум программистов, компьютерный форум, киберфорум
IP-телефония, Asterisk/FreeSWITCH
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/18: Рейтинг темы: голосов - 18, средняя оценка - 4.94
0 / 0 / 0
Регистрация: 26.01.2020
Сообщений: 21
1

Redirect по сервисному коду Астериск

09.09.2020, 09:12. Показов 3208. Ответов 7

Author24 — интернет-сервис помощи студентам
Добрый день, товарищи, подскажите пожалуйста куда копать в настройке redirect по набору *ХХ
имеется работающий redirect:
C#
1
2
3
4
5
[macro-redirect]
     84 exten => s,1,Set(PEREM=${IF($[${DB(redirect/${ARG1})}=1]?0:1)})
     85 exten => s,n,Set(DB(redirect/${ARG1})=${PEREM})
     86 exten => s,n,Set(GOLOS=${IF($[${PEREM}=1]?redirect_on:redirect_off)}
     87 exten => s,n,Playback(${GOLOS})
C#
1
2
3
4
5
6
 
[TEL-CODES]
    344 exten => *11,1,Macro(redirect,bron)
    345 exten => *11,n,Hangup
    346 exten => *12,1,Macro(redirect,recept)
    347 exten => *12,n,Hangup
при наборе *11 либо *12
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
    -- Executing [*12@out-mezhgorod:1] Macro("SIP/923-0000c27b", "redirect,recept") in new stack
    -- Executing [s@macro-redirect:1] Set("SIP/923-0000c27b", "PEREM=1") in new stack
    -- Executing [s@macro-redirect:2] Set("SIP/923-0000c27b", "DB(redirect/recept)=1") in new stack
[Sep  9 10:50:12] WARNING[119046][C-00005456]: pbx_variables.c:719 pbx_substitute_variables_helper_full: Error in extension logic (missing '}')
[Sep  9 10:50:12] WARNING[119046][C-00005456]: pbx_functions.c:458 func_args: Can't find trailing parenthesis for function 'IF(1?redirect_on:redirect_off'?
    -- Executing [s@macro-redirect:3] Set("SIP/923-0000c27b", "GOLOS=redirect_on") in new stack
    -- Executing [s@macro-redirect:4] Playback("SIP/923-0000c27b", "redirect_on") in new stack
       > 0x7fadb8471df0 -- Strict RTP switching to RTP target address 10.95.1.219:10252 as source
    -- <SIP/923-0000c27b> Playing 'redirect_on.slin' (language 'ru')
       > 0x7fadb816db80 -- Strict RTP learning complete - Locking on source address 
    -- Executing [*12@out-mezhgorod:2] Hangup("SIP/923-0000c27b", "") in new stack
  == Spawn extension (out-mezhgorod, *12, 2) exited non-zero on 'SIP/923-0000c27b'
  == Using SIP RTP CoS mark 5
       > 0x7fadb8471df0 -- Strict RTP learning after remote address set to: 
    -- Executing [*12@out-mezhgorod:1] Macro("SIP/923-0000c27c", "redirect,recept") in new stack
    -- Executing [s@macro-redirect:1] Set("SIP/923-0000c27c", "PEREM=0") in new stack
    -- Executing [s@macro-redirect:2] Set("SIP/923-0000c27c", "DB(redirect/recept)=0") in new stack
[Sep  9 10:50:16] WARNING[119047][C-00005457]: pbx_variables.c:719 pbx_substitute_variables_helper_full: Error in extension logic (missing '}')
[Sep  9 10:50:16] WARNING[119047][C-00005457]: pbx_functions.c:458 func_args: Can't find trailing parenthesis for function 'IF(0?redirect_on:redirect_off'?
    -- Executing [s@macro-redirect:3] Set("SIP/923-0000c27c", "GOLOS=redirect_off") in new stack
    -- Executing [s@macro-redirect:4] Playback("SIP/923-0000c27c", "redirect_off") in new stack
       > 0x7fadb8471df0 -- Strict RTP switching to RTP target address  as source
    -- <SIP/923-0000c27c> Playing 'redirect_off.slin' (language 'ru')
    -- Executing [*12@out-mezhgorod:2] Hangup("SIP/923-0000c27c", "") in new stack
  == Spawn extension (out-mezhgorod, *12, 2) exited non-zero on 'SIP/923-0000c27c'
Добавляю в контекст [TEL-CODES] еще пару строк значение:
C#
1
2
exten => *13,1,Macro(redirect,test)
exten => *13,n,Hangup
в итоге получаю:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Executing [*13@out-mezhgorod:1] Macro("SIP/923-0000c2fe", "redirect,test") in new stack
[Sep  9 11:10:16] WARNING[120706][C-0000548e]: ast_expr2.fl:470 ast_yyerror: ast_yyerror():  syntax error: syntax error, unexpected '=', expecting $end; Input:
=1
^
[Sep  9 11:10:16] WARNING[120706][C-0000548e]: ast_expr2.fl:474 ast_yyerror: If you have questions, please refer to https://wiki.asterisk.org/wiki/display/AST/Channel+Variables
[Sep  9 11:10:16] WARNING[120706][C-0000548e]: func_logic.c:190 acf_if: Syntax IF(<expr>?[<true>][:<false>])  (expr must be non-null, and either <true> or <false> must be non-null)
[Sep  9 11:10:16] WARNING[120706][C-0000548e]: func_logic.c:191 acf_if:       In this case, <expr>='', <true>='0', and <false>='1'
    -- Executing [s@macro-redirect:1] Set("SIP/923-0000c2fe", "PEREM=") in new stack
    -- Executing [s@macro-redirect:2] Set("SIP/923-0000c2fe", "DB(redirect/test)=") in new stack
[Sep  9 11:10:16] WARNING[120706][C-0000548e]: pbx_variables.c:719 pbx_substitute_variables_helper_full: Error in extension logic (missing '}')
[Sep  9 11:10:16] WARNING[120706][C-0000548e]: ast_expr2.fl:470 ast_yyerror: ast_yyerror():  syntax error: syntax error, unexpected '=', expecting $end; Input:
=1
^
[Sep  9 11:10:16] WARNING[120706][C-0000548e]: ast_expr2.fl:474 ast_yyerror: If you have questions, please refer to https://wiki.asterisk.org/wiki/display/AST/Channel+Variables
[Sep  9 11:10:16] WARNING[120706][C-0000548e]: pbx_functions.c:458 func_args: Can't find trailing parenthesis for function 'IF(?redirect_on:redirect_off'?
[Sep  9 11:10:16] WARNING[120706][C-0000548e]: func_logic.c:190 acf_if: Syntax IF(<expr>?[<true>][:<false>])  (expr must be non-null, and either <true> or <false> must be non-null)
[Sep  9 11:10:16] WARNING[120706][C-0000548e]: func_logic.c:191 acf_if:       In this case, <expr>='', <true>='redirect_on', and <false>='redirect_off'
    -- Executing [s@macro-redirect:3] Set("SIP/923-0000c2fe", "GOLOS=") in new stack
    -- Executing [s@macro-redirect:4] Playback("SIP/923-0000c2fe", "") in new stack
[Sep  9 11:10:16] WARNING[120706][C-0000548e]: app_playback.c:452 playback_exec: Playback requires an argument (filename)
  == Spawn extension (macro-redirect, s, 4) exited non-zero on 'SIP/923-0000c2fe' in macro 'redirect'
  == Spawn extension (out-mezhgorod, *13, 1) exited non-zero on 'SIP/923-0000c2fe'
гугл решений не дал, может кто сталкивался с подобным, заранее благодарен
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.09.2020, 09:12
Ответы с готовыми решениями:

Как в web.config на iis прописать Redirect так же как в .htaccess типа: Redirect 301 /thumb http://st.site2.com?
Нужно прописать redirect на IIS в web.config который выполняет то же самое что и строка Redirect...

Астериск + Ростелеком
Здравствуйте. Может быть на форуме кто поможет, пожалуйста. Сделал настройки SIP на Астере, создал...

Не работает очередь в астериск
Здравствуйте! Астериск версии 13.7.2 стоит на CEntos 7, нужна простая очередь звонков: Файл...

помогите скомпилить астериск.
Конфигурация прошла нормально (конфигурил без xmldoc2) а вот make выдал следующее (пытаюсь...

7
vita et mortuus
Эксперт по компьютерным сетям
1802 / 702 / 152
Регистрация: 10.06.2009
Сообщений: 2,771
09.09.2020, 12:03 2
Ivan458, покажите полностью диалплан. и выведите что в бд.
Код
asterisk -rvv
database show
exit
Добавлено через 2 минуты
переадресация бывает 3 типов:
CF - Call Forwarding - по коду *72
CFU - Call Forward Unconditional - по неответу код *52
CFB - Call Forward on BUSY - по занятости код *90
в базе они так и отображатся
0
0 / 0 / 0
Регистрация: 26.01.2020
Сообщений: 21
09.09.2020, 12:51  [ТС] 3
Код
ASTERISK> database show
/SIP/Registry/964                                 : 
/SIP/Registry/965                                 : 
/SIP/Registry/966                                 : 
/SIP/Registry/967                                 : 
/SIP/Registry/968                                 
/SIP/Registry/969                                 :
/SIP/Registry/970                                 :
/blacklist/9322008475                             : Спам.Банк
/blacklist/9324855865                             : Спам.Банк
/blacklist/9324855867                             : Спам.Банк
/blacklist/9653886094                             : Спам.Коллектор
/blacklist/9653886706                             : Спам.Коллектор
/blacklist/9653889409                             : Спам.Коллектор
/blacklist/9657850970                             : Спам.Коллектор
/blacklist/9657902677                             : Спам.Коллектор
/pbx/UUID                                         : 1c938997-eb5b-4cec-ac85-789a2933b85c
/redirect/bron                                    : 0
/redirect/recept                                  : 0
/redirect/test                                    :
Код
[macro-rec]
exten => s,1,Set(VOLUME(TX)=+1)
exten => s,n,Set(VOLUME(RX)=+1)
exten => s,n,Set(fname=${STRFTIME(${EPOCH},,%Y-%m-%d-%H_%M)}-${ARG1}-${ARG2})
exten => s,n,Set(CDR(recfile)=${fname}.mp3)
exten => s,n,Set(CDR(src_num)=${ARG1})
exten => s,n,Set(CDR(userfield)=${ARG2})
;exten => s,n,Set(CDR(userfield))=${EXTEN})
exten => s,n,MixMonitor(${DIR_REC}${fname}.wav,,lame -b 16 ${DIR_REC}${fname}.wav ${DIR_REC}${fname}.mp3 && rm ${DIR_REC}${fname}.wav)
;-----------------------------------------------------

[macro-podmena]
exten => s,1,Set(${CALLERID(num)}=${IF($[${LEN(${CALLERID(num)})}=4]?${CALLERID(num):1}:${CALLERID(num)})})
exten => s,n,MYSQL(Connect connid $servername $username $secretpassword $databasename)
exten => s,n,MYSQL(Query resultid ${connid} select callerid from outbound where internal=${CALLERID(num)})
exten => s,n,MYSQL(Fetch fetchid ${resultid} PEREM)
exten => s,n,MYSQL(Clear ${resultid})
exten => s,n,MYSQL(Disconnect ${connid})
exten => s,n,Set(CALLERID(num)=${PEREM})
exten => s,n,Set(CALLERID(name)=${PEREM})

[macro-callerid_mod]
exten => s,1,Set(CALLERID(num)=${IF($[${LEN(${CALLERID(num)})}=10]?8${CALLERID(num)}:${CALLERID(num)})})
 ;-----------------------------------------------------

[macro-redirect]
exten => s,1,Set(PEREM=${IF($[${DB(redirect/${ARG1})}=1]?0:1)})
exten => s,n,Set(DB(redirect/${ARG1})=${PEREM})
exten => s,n,Set(GOLOS=${IF($[${PEREM}=1]?redirect_on:redirect_off)}
exten => s,n,Playback(${GOLOS})
;-----------------------------------------------------

[out-vnutr]
include => SPASENIE
include => GROUP-NUMBER
include => IN-HOSTEL
include => LOCAL
include => STOLIPIN
include => EDIN_NUM
include => TEL-CODES
include => DIAL-ERROR
;-----------------------------

[out-gorod]
include => SPASENIE
include => GROUP-NUMBER
include => IN-HOSTEL
include => LOCAL
include => STOLIPIN
include => GOROD
include => GOROD_LONG
include => EDIN_NUM
include => TEL-CODES
include => DIAL-ERROR
;-----------------------------

[out-mezhgorod]
include => SPASENIE
include => GROUP-NUMBER
include => IN-HOSTEL
include => LOCAL
include => STOLIPIN
include => GOROD
include => GOROD_LONG
include => EDIN_NUM
include => MOBILE
include => MEZHGOROD
include => TEL-CODES
include => DIAL-ERROR
;-----------------------------

[MEZHGOROD]
exten => _[78][1-8]XXXXXXXXX,1,Macro(rec,${CALLERID(num),${EXTEN}})
exten => _[78][1-8]XXXXXXXXX,n,Macro(podmena)
exten => _[78][1-8]XXXXXXXXX,n,Dial(SIP/7${EXTEN:1}@tr-to-megafon,60)
exten => _[78][1-8]XXXXXXXXX,n,Hangup

[TEL-CODES]
exten => *11,1,Macro(redirect,bron)
exten => *11,n,Hangup
exten => *12,1,Macro(redirect,recept)
exten => *12,n,Hangup
exten => *13,1,Macro(redirect,test)
exten => *13,n,Hangup


[OTD-BUH]
exten => s,1,Macro(callerid_mod)
exten => s,n,Macro(rec,${CALLERID(num),${EXTEN}})
exten => s,n,Answer
exten => s,n,Background(3) ;
exten => s,n,GotoifTime(20:00-8:00|*|*|*?INFO-DESK,s,3) ; 
exten => s,n,Gotoif($[${DB(redirect/bron)}=1]?INFO-DESK,s,3) ; 
exten => s,n,Queue(QUEUE-OTD-BUH) ;
exten => s,n,Hangup

[INFO-DESK]
exten => s,1,GotoIf(${BLACKLIST()}?blacklisted)
exten => s,2,Macro(callerid_mod)
exten => s,n,Macro(rec,${CALLERID(num),${EXTEN}})
exten => s,n,Answer
exten => s,n,Background(3)
exten => s,n,Gotoif($[${DB(redirect/recept)}=1]?OTD-BUH,s,3) ; 
exten => s,n,Queue(QUEUE-INFO-DESK) ; 
exten => s,n,Hangup
exten => s,n(blacklisted),Hangup()

[TEST]
exten => s,1,Macro(callerid_mod)
exten => s,n,Macro(rec,${CALLERID(num),${EXTEN}})
exten => s,n,Answer
exten => s,n,Background(main+operator)
exten => s,n,Gotoif($[${DB(redirect/test)}=1]?TEST-TEMP,s,3)
exten => s,n,GotoifTime(10:00-18:00|*|08|sep?TEST-TEMP)
exten => t,1,Goto(TEST,s,1)
exten => _ZXX,n,Hangup

[TEST-TEMP]
exten => s,1,Macro(callerid_mod)
exten => s,n,Macro(rec,${CALLERID(num),${EXTEN}})
exten => s,n,Dial(SIP/79XXXXXXXXX@tr-to-megafon,60)
exten => s,n,Hangup
0
vita et mortuus
Эксперт по компьютерным сетям
1802 / 702 / 152
Регистрация: 10.06.2009
Сообщений: 2,771
09.09.2020, 21:13 4
Ivan458, тук у вас в бд:
Код
/redirect/test                                    :
Что означает redirect/test=""
А должно быть
Код
/redirect/test                                    : 0
А перезапуск диалплана не пробовали делать? Если при перезапуске будут варнинги, буду читать код дальше.
0
0 / 0 / 0
Регистрация: 26.01.2020
Сообщений: 21
09.09.2020, 21:17  [ТС] 5
после добавления в диаплан, asterisk -rvvv, dialplan reload
Код
Executing [s@macro-redirect:1] Set("SIP/923-0000c2fe", "PEREM=") in new stack
    -- Executing [s@macro-redirect:2] Set("SIP/923-0000c2fe", "[B]DB(redirect/test)=[/B]") in new stack
[Sep  9 11:10:16] WARNING[120706][C-0000548e]: pbx_variables.c:719 pbx_substitute_variables_helper_full: Error in extension logic (missing '}')
[Sep  9 11:10:16] WARNING[120706][C-0000548e]: ast_expr2.fl:470 ast_yyerror: ast_yyerror():  syntax error: syntax error, unexpected '=', expecting $end; Input:
=1
1 или 0 почему то не записывается в бд
0
vita et mortuus
Эксперт по компьютерным сетям
1802 / 702 / 152
Регистрация: 10.06.2009
Сообщений: 2,771
09.09.2020, 21:25 6
Лучший ответ Сообщение было отмечено Ivan458 как решение

Решение

Ivan458, а если ручками:
Код
database put redirect test 0
1
0 / 0 / 0
Регистрация: 26.01.2020
Сообщений: 21
10.09.2020, 09:51  [ТС] 7
NoNaMe, попробовать смогу только в субботу, спасибо
0
0 / 0 / 0
Регистрация: 26.01.2020
Сообщений: 21
12.09.2020, 08:42  [ТС] 8
NoNaMe, добавил руками, после этого начала отрабатывать - вкл/выкл. Подозреваю макрос не меняет значение NULL, благодарю за помощь)
0
12.09.2020, 08:42
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.09.2020, 08:42
Помогаю со студенческими работами здесь

Что означает * (астериск) в директиве VirtualHost?
Комрады, помогите ответить на эти вопросы человеку с серверами никак не связанному. 38. Что...

Городской номер от Билайн + Астериск на роутере
Всем привет. Может быть уже кто-то делал и поделится идеями (подсказками) как и что прописать в...

Выбор Астериск или готовая АТС Panasonic
Доброго времени суток! Стою перед выбором - брать готовую железку, или с нуля ставить астериск...

Настройка ИП-телефонии с нуля(астериск), Построить сеть(провод, Ви-Фи), Установить сервера линукс/виндовс
Наши предложения: Поддерживаем (настраиваем с нуля) в работе/настройке серверов Unix/Windows...

Реализовать на С++ код аналогичный коду приведенному на JavaScript коду
Кто знает JavaScript подскажите, пожалуйста как лучше реализовать этот код на c++(): var image =...

Redirect by IP
Подскажите пожалуйста, как сделать переадресацию на страницу &quot;under construction&quot;? В нете...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru