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

использование переменных с IF в модуле Set Caller ID

Новичком считается только что прочитавший «Астериск - будущее телефонии»
http://asterisk.ru/knowledgebase/books
и пытающийся сделать большее

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

hznahui
Сообщения: 3
Зарегистрирован: 10 июл 2022, 10:44

использование переменных с IF в модуле Set Caller ID

Сообщение hznahui »

модуль set caller id позволяет модифицировать входящий номер. моя задача превратить 6 значные номера в полный формат и не тронуть номера в полном формате. например, так:
86432${CALLERID(num)}:-11
к любому, хоть 6 хоть 11 значном номеру, прибавляется слева 8кодгорода и берется лишь 11 справа.
но проблема с том, что не знаю как синтаксически оформить эту строку, вышенаписанный вариант не работает.
спасибо
ded
Сообщения: 15623
Зарегистрирован: 26 авг 2010, 19:00

Re: использование переменных с IF в модуле Set Caller ID

Сообщение ded »

На языке диал-плана (книжку бы почитали, там полно примеров, и разъяснения)

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

same => NoOp(Caller ID is ${CALLERID(num)} )
same => Set(CALLERID(num)=86432${CALLERID(num)})
same => NoOp(Caller ID is ${CALLERID(num)} )
В модуле такая же логика.
hznahui
Сообщения: 3
Зарегистрирован: 10 июл 2022, 10:44

Re: использование переменных с IF в модуле Set Caller ID

Сообщение hznahui »

офф... за ответ спасибо, но, то, что вы написали, не понятно как относится к вопросу. или это просто так написано, для привлечения внимания?
про книжку ясно. видимо, тут тоже форум невероятно напыщенных типа великих специалистов и лучше и не спрашивать ничего. книжку почитаю. название книжки же вы тоже не соизволите сказать? или тоже не подходящую книжку посоветуете?
а по теме вопроса и ващу попытку писать примеры - как в конфиг запихать своего и выполнить задачу я знаю, весь вопрос в написании этого одним выражением и вставить в поле стандартного модуля через вэб интерфейс. тут вы можете пообсуждать, а почему так не просто в конфиг наклепать своего? но не хочется объяснять
april22
Сообщения: 2187
Зарегистрирован: 09 июл 2012, 09:47

Re: использование переменных с IF в модуле Set Caller ID

Сообщение april22 »

книг не так много - но есть
http://asterisk.ru/knowledgebase/books
про бедующее (4е издание ) в сети навалом предыдущих изданий - гуглится
Своими вопросами , вы загоняете меня в ГУГЛЬ.
ded
Сообщения: 15623
Зарегистрирован: 26 авг 2010, 19:00

Re: использование переменных с IF в модуле Set Caller ID

Сообщение ded »

hznahui писал(а): офф... за ответ спасибо, но, то, что вы написали, не понятно как относится к вопросу. или это просто так написано, для привлечения внимания?
То что я читаю каждый день мне тоже часто не понятно, но дмаю, что люди всё пишут не просто для привлечения внимания. Хотя, бывает и так наверняка.
hznahui писал(а):про книжку ясно. видимо, тут тоже форум невероятно напыщенных типа великих специалистов и лучше и не спрашивать ничего. книжку почитаю. название книжки же вы тоже не соизволите сказать? или тоже не подходящую книжку посоветуете?

Тут бы чуть повнимательнее: вы написали на форме в разделе Вопросы новичков, верно? Смотрим вместе: там есть определение новичка (тут) и ссылка на книжки.
По теме: если понятна мысль из примера диалплана (не ваш случай, что ж делать, бывает! Я не иеальный объясняльщик!), то её уже можно реализовать в вэб интерфейсе. Я создал объект (см. картинку), и направил входящий маршрут в этот объект (см другую картинку).
Сделал звонок для теста, убедился, что цифры 86432 в Caller ID добавились, именно в номер, а не в CALLERID(name), как и было указано в объекте.

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

    -- Executing [s@macro-user-callerid:27] Set("SIP/sipgate0-new-000000e3", "CALLERID(number)=8643203057708170") in new stack
    -- Executing [s@macro-user-callerid:28] Set("SIP/sipgate0-new-000000e3", "CALLERID(name)=03057708170") in new stack
    -- Executing [s@macro-user-callerid:29] GotoIf("SIP/sipgate0-new-000000e3", "0?cnum") in new stack
    -- Executing [s@macro-user-callerid:30] Set("SIP/sipgate0-new-000000e3", "CDR(cnam)=03057708170") in new stack
    -- Executing [s@macro-user-callerid:31] Set("SIP/sipgate0-new-000000e3", "CDR(cnum)=8643203057708170") in new stack
    -- Executing [s@macro-user-callerid:32] Set("SIP/sipgate0-new-000000e3", "CHANNEL(language)=en") in new stack
    -- Executing [s@macro-exten-vm:2] Set("SIP/sipgate0-new-000000e3", "RingGroupMethod=none") in new stack
А теперь оффтоп: чем вы руководствуетесь, выбирая такой никнейм для регистрации? Похоже вы сами из числа тех невероятно напыщенных великих специалистов, которые ещё и всех посылают неформально?
Вложения
объект Set Caller ID
объект Set Caller ID
Add86432.jpg (26.39 КБ) 4763 просмотра
Входящий маршрут на объект Set Caller ID
Входящий маршрут на объект Set Caller ID
Add86433-route.jpg (48.5 КБ) 4763 просмотра
CDR тестового звонка
CDR тестового звонка
Вопросы новичков со ссылкой на книжку.
Вопросы новичков со ссылкой на книжку.
vopr.nov.jpg (61.34 КБ) 4763 просмотра
Аватара пользователя
Zavr2008
Сообщения: 2211
Зарегистрирован: 27 янв 2011, 00:35
Контактная информация:

Re: использование переменных с IF в модуле Set Caller ID

Сообщение Zavr2008 »

ТС, Данная задача - типичная. Называется "нормализация номера звонящего".
В данной задаче главное не навредить.
Вам книжку любимую не просто так дали почитать - там очень подробно этот вопрос разобран. Стоит немного открыть крышку закипающего чайника, и стать астерискером.
Все мы через это проходили, поверьте.

Подсказка: удобнее использовать ExecIf, Len, Set(CALLERID(num)=...). Ну или путь FreePBX - там уже ясно из картинки как)

Сделайте немного нагрузки на серое вещество, это полезно. Ребята если что помогут, всем важно чтобы Вы сам начали решать вопросы, потрудились и показали другим как решили.
Российские E1 шлюзы Alvis. Модернизация УПАТС с E1,Подключение к ИС "Антифрод" E1 PRI/SS#7 УВР Телестор, Грифин и др..
hznahui
Сообщения: 3
Зарегистрирован: 10 июл 2022, 10:44

Re: использование переменных с IF в модуле Set Caller ID

Сообщение hznahui »

Zavr2008 писал(а):...всем важно чтобы Вы сам начали решать вопросы, потрудились и показали другим как решили.
пока никак не решил, в app-setcid-custom костыль воткнул, почитаю пока книжки)

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

exten => 13,n,Gotoif($[LEN(${CALLERID(number)})=6]?:dontadd)
exten => 13,n,Set(CALLERID(num)=+71234${CALLERID(num)})
exten => 13,n(dontadd),Set(CALLERID(num)=${CALLERID(num):-12})
Аватара пользователя
Zavr2008
Сообщения: 2211
Зарегистрирован: 27 янв 2011, 00:35
Контактная информация:

Re: использование переменных с IF в модуле Set Caller ID

Сообщение Zavr2008 »

На правильном пути, ExecIf IMHO удобнее GotoIf.
перед ded следует извиниться, вообще это отраслевой форум и здесь не принято сопли распускать.
Российские E1 шлюзы Alvis. Модернизация УПАТС с E1,Подключение к ИС "Антифрод" E1 PRI/SS#7 УВР Телестор, Грифин и др..
ded
Сообщения: 15623
Зарегистрирован: 26 авг 2010, 19:00

Re: использование переменных с IF в модуле Set Caller ID

Сообщение ded »

Не стоит реверансов. Я вообще-то был не внимателен к поставленной ТС задаче,хоть она - нормализация, и тривиальная, но решить её только через штатный модуль Set CallerID никак не получится.
Аватара пользователя
Zavr2008
Сообщения: 2211
Зарегистрирован: 27 янв 2011, 00:35
Контактная информация:

Re: использование переменных с IF в модуле Set Caller ID

Сообщение Zavr2008 »

Я решаю обычно через Gosub так то, а там уже нормализую, ну и у пира context, там сначала нормализация - потом уже идет на from-trunk чтобы не ломать логику.
Показалось удобно.
Российские E1 шлюзы Alvis. Модернизация УПАТС с E1,Подключение к ИС "Антифрод" E1 PRI/SS#7 УВР Телестор, Грифин и др..
Ответить
© 2008 — 2024 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH