Страница 1 из 2

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

Добавлено: 10 июл 2022, 11:04
hznahui
модуль set caller id позволяет модифицировать входящий номер. моя задача превратить 6 значные номера в полный формат и не тронуть номера в полном формате. например, так:
86432${CALLERID(num)}:-11
к любому, хоть 6 хоть 11 значном номеру, прибавляется слева 8кодгорода и берется лишь 11 справа.
но проблема с том, что не знаю как синтаксически оформить эту строку, вышенаписанный вариант не работает.
спасибо

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

Добавлено: 11 июл 2022, 09:36
ded
На языке диал-плана (книжку бы почитали, там полно примеров, и разъяснения)

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

same => NoOp(Caller ID is ${CALLERID(num)} )
same => Set(CALLERID(num)=86432${CALLERID(num)})
same => NoOp(Caller ID is ${CALLERID(num)} )
В модуле такая же логика.

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

Добавлено: 11 июл 2022, 23:58
hznahui
офф... за ответ спасибо, но, то, что вы написали, не понятно как относится к вопросу. или это просто так написано, для привлечения внимания?
про книжку ясно. видимо, тут тоже форум невероятно напыщенных типа великих специалистов и лучше и не спрашивать ничего. книжку почитаю. название книжки же вы тоже не соизволите сказать? или тоже не подходящую книжку посоветуете?
а по теме вопроса и ващу попытку писать примеры - как в конфиг запихать своего и выполнить задачу я знаю, весь вопрос в написании этого одним выражением и вставить в поле стандартного модуля через вэб интерфейс. тут вы можете пообсуждать, а почему так не просто в конфиг наклепать своего? но не хочется объяснять

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

Добавлено: 12 июл 2022, 11:01
april22
книг не так много - но есть
http://asterisk.ru/knowledgebase/books
про бедующее (4е издание ) в сети навалом предыдущих изданий - гуглится

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

Добавлено: 12 июл 2022, 13:41
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
А теперь оффтоп: чем вы руководствуетесь, выбирая такой никнейм для регистрации? Похоже вы сами из числа тех невероятно напыщенных великих специалистов, которые ещё и всех посылают неформально?

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

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

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

Сделайте немного нагрузки на серое вещество, это полезно. Ребята если что помогут, всем важно чтобы Вы сам начали решать вопросы, потрудились и показали другим как решили.

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

Добавлено: 13 июл 2022, 10:53
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})

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

Добавлено: 13 июл 2022, 10:59
Zavr2008
На правильном пути, ExecIf IMHO удобнее GotoIf.
перед ded следует извиниться, вообще это отраслевой форум и здесь не принято сопли распускать.

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

Добавлено: 13 июл 2022, 12:13
ded
Не стоит реверансов. Я вообще-то был не внимателен к поставленной ТС задаче,хоть она - нормализация, и тривиальная, но решить её только через штатный модуль Set CallerID никак не получится.

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

Добавлено: 13 июл 2022, 14:53
Zavr2008
Я решаю обычно через Gosub так то, а там уже нормализую, ну и у пира context, там сначала нормализация - потом уже идет на from-trunk чтобы не ломать логику.
Показалось удобно.