ВидеоКонф(ВКС)  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

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

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

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

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

Сообщение hznahui » 10 июл 2022, 12:04

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

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

Сообщение ded » 11 июл 2022, 10:36

На языке диал-плана (книжку бы почитали, там полно примеров, и разъяснения)
Код: выделить все
same => NoOp(Caller ID is ${CALLERID(num)} )
same => Set(CALLERID(num)=86432${CALLERID(num)})
same => NoOp(Caller ID is ${CALLERID(num)} )

В модуле такая же логика.
ded
 
Сообщений: 15803
Зарегистрирован: 26 авг 2010, 19:00

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

Сообщение hznahui » 12 июл 2022, 00:58

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

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

Сообщение april22 » 12 июл 2022, 12:01

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

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

Сообщение ded » 12 июл 2022, 14:41

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
А теперь оффтоп: чем вы руководствуетесь, выбирая такой никнейм для регистрации? Похоже вы сами из числа тех невероятно напыщенных великих специалистов, которые ещё и всех посылают неформально?
Вложения
Add86432.jpg
объект Set Caller ID
Add86432.jpg (26.39 KIB) Просмотров: 2491
Add86433-route.jpg
Входящий маршрут на объект Set Caller ID
Add86433-route.jpg (48.5 KIB) Просмотров: 2491
Add86433-CDR.jpg
CDR тестового звонка
vopr.nov.jpg
Вопросы новичков со ссылкой на книжку.
vopr.nov.jpg (61.34 KIB) Просмотров: 2491
ded
 
Сообщений: 15803
Зарегистрирован: 26 авг 2010, 19:00

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

Сообщение Zavr2008 » 12 июл 2022, 16:20

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

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

Сделайте немного нагрузки на серое вещество, это полезно. Ребята если что помогут, всем важно чтобы Вы сам начали решать вопросы, потрудились и показали другим как решили.
Российские шлюзы E1 Alvis-GW. Модернизация УПАТС с E1, Установка FreePBX, Системы антифрод "в разрыв" потоков E1 PRI / SS#7 ISUP.
Аватар пользователя
Zavr2008
 
Сообщений: 2161
Зарегистрирован: 27 янв 2011, 01:35

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

Сообщение hznahui » 13 июл 2022, 11:53

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})
hznahui
 
Сообщений: 3
Зарегистрирован: 10 июл 2022, 11:44

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

Сообщение Zavr2008 » 13 июл 2022, 11:59

На правильном пути, ExecIf IMHO удобнее GotoIf.
перед ded следует извиниться, вообще это отраслевой форум и здесь не принято сопли распускать.
Российские шлюзы E1 Alvis-GW. Модернизация УПАТС с E1, Установка FreePBX, Системы антифрод "в разрыв" потоков E1 PRI / SS#7 ISUP.
Аватар пользователя
Zavr2008
 
Сообщений: 2161
Зарегистрирован: 27 янв 2011, 01:35

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

Сообщение ded » 13 июл 2022, 13:13

Не стоит реверансов. Я вообще-то был не внимателен к поставленной ТС задаче,хоть она - нормализация, и тривиальная, но решить её только через штатный модуль Set CallerID никак не получится.
ded
 
Сообщений: 15803
Зарегистрирован: 26 авг 2010, 19:00

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

Сообщение Zavr2008 » 13 июл 2022, 15:53

Я решаю обычно через Gosub так то, а там уже нормализую, ну и у пира context, там сначала нормализация - потом уже идет на from-trunk чтобы не ломать логику.
Показалось удобно.
Российские шлюзы E1 Alvis-GW. Модернизация УПАТС с E1, Установка FreePBX, Системы антифрод "в разрыв" потоков E1 PRI / SS#7 ISUP.
Аватар пользователя
Zavr2008
 
Сообщений: 2161
Зарегистрирован: 27 янв 2011, 01:35

След.

Вернуться в Вопросы новичков

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 30

cron
© 2008 — 2024 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH