VIDEOCHAT  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

Переадресация, внешние номера и ограничения. Не стыкуется...

Проблемы Asterisk без вэб-оболочек и их решения

Модераторы: april22, Zavr2008

ded
Сообщения: 15629
Зарегистрирован: 26 авг 2010, 19:00

Re: Переадресация, внешние номера и ограничения. Не стыкуетс

Сообщение ded »

Те, кто не читает документацию, предпочитая дискуссии, обращаются в платный суппорт.
Копируете нужный контекст в override_freepbx и добавляете всего одну строчку - добавление в обход pinsets, наклеивая метку[nopinset] , допустим, на 5-й шаг

Код: Выделить всё

[ Included context 'outrt-3' created by 'pbx_config' ]
  '_00.' =>         1. Macro(user-callerid,LIMIT,EXTERNAL,)       [pbx_config]
                    2. Gosub(sub-record-check,s,1(out,${EXTEN},dontcare)) [pbx_config]
                    3. GotoIf([{тут проверку пишете - если CfwdAll}= true]?nopinsets)   ; синтаксис сами пробейте
     [pinsets]  4. Macro(pinsets,2,1)                         [pbx_config]
 [nopinsets]  5. ExecIf($[ "${CALLEE_ACCOUNCODE}" != "" ] ?Set(CDR(accountcode)=${CALLEE_ACCOUNCODE})) [pbx_config]
                    6. Set(MOHCLASS=${IF($["${MOHCLASS}"=""]?default:${MOHCLASS})}) [pbx_config]
                    7. Set(_NODEST=)                              [pbx_config]
                    8. Macro(dialout-trunk,3,${EXTEN},,off)       [pbx_config]
                    9. Macro(outisbusy,)                          [pbx_config]
Аватара пользователя
postscripter
Сообщения: 93
Зарегистрирован: 16 сен 2015, 15:24

Re: Переадресация, внешние номера и ограничения. Не стыкуетс

Сообщение postscripter »

Вроде с одной стороны желание зарабатывать на своих знаниях понятно. А с другой, не представляю, и никогда не видел, чтобы посылали в платный супорт, ну например, на форуме программистов си-плюс-плюс. А там задачи сложнее, и новички злее. Интересно, при сильном желании и участии крупных компаний, любую область деятельности можно так закоммерциализировать?

Это лирическое отступление, а по теме - спасибо, но не то. С пинами я справился. А по модулю custom contexts документации нет, даже в БольшойТолстойКнижке (по крайней мере, во втором издании). В понедельник просто залезу в исходники и посмотрю, откуда он читает список.
ded
Сообщения: 15629
Зарегистрирован: 26 авг 2010, 19:00

Re: Переадресация, внешние номера и ограничения. Не стыкуетс

Сообщение ded »

Описание custom contexts - не в Книге о будущем, а в книгах по FreePBX, типа
Алекс Робар «FreePBX 2.5 Мощные телефонные решения»
http://asterisk.ru/knowledgebase/books
это модуль оттуда.
Аватара пользователя
postscripter
Сообщения: 93
Зарегистрирован: 16 сен 2015, 15:24

Re: Переадресация, внешние номера и ограничения. Не стыкуетс

Сообщение postscripter »

Нет, у Робара тоже нету. И на wiki.freepbx нету. Да и фиг бы с ними.

Список функций CustomContexts получает через api объекта $ext, по которому документации так же ноль (поисковый запрос "global ext", с кавычками). А он их получает из только что сгенерированного диалплана, который уже создан в памяти, но не записан на диск. И добавить что-то своё в CustomContexts без правки его исходников, которые, как оказалось, подписаны, нельзя.

Но можно указать failover destination, что тоже неплохо. Только не работает.

Создаю custom destination MyContextForLimited,s,1 с галочкой Return. Получаю следующую ошибку:

localhost*CLI> dialplan show customdests
[ Context 'customdests' created by 'pbx_config' ]
'dest-3' => 1. Noop(Entering Custom Destination For Limited Users п¦) [pbx_config]
2. Gosub(MyContextForLimited,s,1()) [pbx_config]
3. Noop(Returned from Custom Destination For Limited Users п¦) [pbx_config]
4. Goto(app-blackhole,hangup,1) [pbx_config]

localhost*CLI> dialplan show MyContextForLimited
[ Context 'MyContextForLimited' created by 'pbx_config' ]
Include => 'app-cf-on-my' [pbx_config]

localhost*CLI> dialplan show app-cf-on-my
[ Context 'app-cf-on-my' created by 'pbx_config' ]
'1234' => 1. Playback(demo-congrats) [pbx_config]
2. Hangup() [pbx_config]
'h' => 1. Hangup() [pbx_config]

-= 2 extensions (3 priorities) in 1 context. =-



-- Executing [1234@LimitedUsers:1] Goto("SIP/400-00000072", "customdests,dest-3,1") in new stack
-- Goto (customdests,dest-3,1)
-- Executing [dest-3@customdests:1] NoOp("SIP/400-00000072", "Entering Custom Destination For Limited Users п¦") in new stack
-- Executing [dest-3@customdests:2] Gosub("SIP/400-00000072", "MyContextForLimited,s,1()") in new stack
[2015-12-07 12:25:38] ERROR[11251][C-000000ad]: app_stack.c:567 gosub_exec: Attempt to reach a non-existent destination for Gosub: (Context:MyContextForLimited, Extension:s, Priority:1)
== Spawn extension (customdests, dest-3, 2) exited non-zero on 'SIP/400-00000072'

localhost*CLI> dialplan show 1234@LimitedUsers
[ Included context 'LimitedUsers_bad-number' created by 'pbx_config' ]
'_X.' => 1. Goto(customdests,dest-3,1) [pbx_config]


Есть две темы на форумах. В одном месте чувак убрал лишний пробел, и у него заработало, в другом ему посоветовали заменить s на start, хз зачем, но и у него заработало.
помучился сам - дай помучиться другим
ded
Сообщения: 15629
Зарегистрирован: 26 авг 2010, 19:00

Re: Переадресация, внешние номера и ограничения. Не стыкуетс

Сообщение ded »

Исходя из приведённых выхлопов я понял, что Вы а) не читали Книгу или б) пропускали занятия, и по этой теме у вас зачёта нет.
Не обижайтеся, но объяснять последовательность букв в алфавите для принципа составления в слова на форуме не имеет смысла. Вы не понимаете что пишите, и не понимаете что вам отвечает Астериск.
Ваш контекст MyContextForLimited должен быть написан в extensions_custom.conf в таком виде:

Код: Выделить всё

[MyContextForLimited]
exten => s,1,NoOp()
exten => s,n,Get(
exten => s,n,Set(
exten => s,n,DoAnything
И У МЕНЯ ТОЧНО НЕТ ЖЕЛАНИЯ МОНЕТИЗИРОВАТЬ ЭТИ ЗНАНИЯ!
Аватара пользователя
postscripter
Сообщения: 93
Зарегистрирован: 16 сен 2015, 15:24

Re: Переадресация, внешние номера и ограничения. Не стыкуетс

Сообщение postscripter »

Странно, ошибка исчезла сама собой. Я не обижаюсь, вы тоже не обижайтесь. Все сегодня нервные. Магнитные бури, наверное... Это строчки из примера extensions-custom.sample, и они вполне рабочие. Номер 1234 отвечает, если контекст просто тупо включить в контекст LimitedUsers. Но если указать его в качестве failover destination в модуле CustomContexts, выполняются любые команды, кроме тех, что привязаны к конкретному номеру. Например, тому же 1234. Как будто набранные цифры теряются.

В книжке 600 страниц, я её открываю по мере необходимости...
Аватара пользователя
postscripter
Сообщения: 93
Зарегистрирован: 16 сен 2015, 15:24

Re: Переадресация, внешние номера и ограничения. Не стыкуетс

Сообщение postscripter »

Ладно, придумаю че нить
помучился сам - дай помучиться другим
ded
Сообщения: 15629
Зарегистрирован: 26 авг 2010, 19:00

Re: Переадресация, внешние номера и ограничения. Не стыкуетс

Сообщение ded »

Если Вы двигаетесь в этом направлении, то Вам нужно учить язык диалплана Астериск. Он простой, типа бейсика, и дебаг вполне информативный,
Attempt to reach a non-existent destination for Gosub: (Context:MyContextForLimited, Extension:s, Priority:1)
тут всё сказано.
virus_net
Сообщения: 2337
Зарегистрирован: 05 июн 2013, 08:12
Откуда: Москва

Re: Переадресация, внешние номера и ограничения. Не стыкуетс

Сообщение virus_net »

postscripter писал(а):7 gosub_exec: Attempt to reach a non-existent destination for Gosub: (Context:MyContextForLimited, Extension:s, Priority:1)
А теперь посмотрите внимательнее на то КУДА вы отправляете в dialplan, а затем на то ЧТО написано в вашем MyContextForLimited, который инклюдит app-cf-on-my.
Вы видите в нем exten s ? Лично я и ded нет, вот и asterisk его так же не видит. О чем в консоли недвусмысленно вам и сообщает.
мой SIP URI sip:virus_net@asterisk.ru
bitname.ru - Домены .bit (namecoin) .emc .coin .lib .bazar (emercoin)

ENUMER - звони бесплатно и напрямую.
Аватара пользователя
postscripter
Сообщения: 93
Зарегистрирован: 16 сен 2015, 15:24

Re: Переадресация, внешние номера и ограничения. Не стыкуетс

Сообщение postscripter »

Подниму тему. Как писал ded, двигаюсь в.. направлении.

Алгоритм безусловной переадресации *72 я переписал на свой, который разрешает ввести только внутренний номер. Затем из контекста LimitedUsers (название говорит само за себя) при помощи CustomContexts изъял стандартный *72 и добавил свой, всё получилось. Т.е. Limited-пользователи могут делать перевод только на внутренний, а обычные пользователи - на любой.

Но есть ещё feature-коды, типа ## и *2, тоже перевод. Как такую же махинацию провернуть с ними?
помучился сам - дай помучиться другим
Ответить
© 2008 — 2025 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH