Пожалуйста, войдите здесь. Часто задаваемые вопросы О нас
Задайте Ваш вопрос

Обработка всех входящих вызовов на любой экстеншен

0

У коллеги Communigate, соединен с моим астериском. Его callerid приходят неверными, с символами %20 за место пробелов. Как решить проблемы замены - понял, а вот как сделать обработку любого его вызова на любой экстеншен?

По наивности думал, что спасёт контекст s, но тот только если не указан экстеншен.

P>S> Хотел как то так s, 1, System(Callerid(all)=${SHELL(echo ${CALLERID} | sed s/%20/\ /g)})

удалить закрыть спам изменить тег редактировать

спросил 2011-09-12 10:32:13 +0400

champion Gravatar champion
154 11 3 13

3 Ответа

1

вот так

[inbound]
include => context1
include =>context2
include  =>not_found
[not_found]
exten => s,1,Gosub(replace,s,1)
exten => _.,1,Gosub(replace,s,1)
[replace]
exten => s,1,Set(CALLERID(num)=${REPLACE(CALLERID(num),'%20',)})
exten => s,2,Return

будет выполнять последний только если в первых двух не сошлсоь с номерным планом. в каждом вашем диалплане добавте госуб.

ссылка удалить спам редактировать

ответил 2011-09-12 14:06:34 +0400

meral Gravatar meral flag of Ukraine
23347 24 20 177
http://pro-sip.net/

обновил 2011-09-12 15:25:13 +0400

Comments

шикарно cvieri ( 2011-09-12 14:19:19 +0400 )редактировать
Asterisk 1.6.2.10 такой функции не имеет к сожелению.. + вы не совсем верно поняли запрос. Exten приходит верный, неверный Callerid, у которого %20 вместо пробелов. Астериск пока не обновляем т.к. система работает стабильно, планируем через несколько месяцев. champion ( 2011-09-12 20:19:28 +0400 )редактировать
1

По мне для этого проще использовать

core show function FILTER 

exten => s,1,Set(CALLERID(num)=${FILTER([0-9],${CALLERID(num)})})
exten => s,2,Return
ссылка удалить спам редактировать

ответил 2011-09-13 11:20:27 +0400

zzuz Gravatar zzuz flag of Russian Federation
7174 2 6 75
http://line24.ru/

обновил 2011-09-13 11:22:48 +0400

Comments

Разумно, но не сработает. Т.к. exten s вызывается только при входе в контекст без указания добавочного номера. champion ( 2011-09-14 11:22:56 +0400 )редактировать
причем тут 's' и Callerid(all) ? zzuz ( 2011-09-14 13:46:56 +0400 )редактировать
0

ТАК ни в коем случае не делать

exten => _X.,1, System(Callerid(all)=${SHELL(echo ${CALLERID} | sed s/%20/\ /g)})

я думаю как то так

используйте функцию REPLACE

direct*CLI> core show function REPLACE

  -= Info about function 'REPLACE' =- 

[Synopsis]
Replace a set of characters in a given string with another character. 

[Description]
Iterates through a string replacing all the <find-chars> with <replace-ch
ar>.  <replace-char> may be either empty or contain one character.  If empty,
all <find-chars> will be deleted from the output.
NOTE: The replacement only occurs in the output.  The original variable is
not altered.

[Syntax]
REPLACE(varname,find-chars[,replace-char])

[Arguments]
Not available

[See Also]
Not available
ссылка удалить спам редактировать

ответил 2011-09-12 13:01:53 +0400

godlike Gravatar godlike flag of Ukraine
814 92 24 62

обновил 2011-09-12 14:17:09 +0400

meral Gravatar meral flag of Ukraine
23347 24 20 177
http://pro-sip.net/

Comments

Тогда мне придется переписывать весь диалплан под _X. В текущем у меня разные контексты, где то юзается _XXXX, где то _XXXXXXXX. Тут мне показалось верным сделать контекст replace, в который добавить правило замены, после которого, чтобы шёл звонок на свой эстен, но.. s меня подвел, а как по другому хз. champion ( 2011-09-12 13:48:09 +0400 )редактировать
вот изза таких решений астериск и не любят. вы отдаете себе отчет что вы на каждый вызов предлагаете запустить 3 процесса? чем вам функция REPLACE не угодила? meral ( 2011-09-12 14:11:00 +0400 )редактировать
Отдаю. В данном случае replace нет (см. пост выше), ресурсов достаточно. Лучшее враг хорошего. Если тут и есть что неладное так это секьюрность. champion ( 2011-09-12 20:24:12 +0400 )редактировать
нет. с секьрность. тут все ок. просто эта строчка диалплана забрает в 40 раз больеш ресурсов чем реплейс. реплейс легко переноситься на 1.2+ meral ( 2011-09-12 22:05:22 +0400 )редактировать

Ваш ответ

Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!
[скрыть предварительный просмотр]

Закладки и информация

Добавить закладку

подписаться на rss ленту новостей

Статистика

Задан: 2011-09-12 10:32:13 +0400

Просмотрен: 1,439 раз

Обновлен: Sep 13 '11

Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией GNU GPL.