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

callerid

Добавлено: 12 дек 2013, 14:18
Arty
здравствуйте еще раз,
ситуация: есть пул внешних номеров(выдано оператором). задача была, чтоб при вызове извне на определённые номера(из пула) попадал на определенных сотрудников(на их внутренние номера)
Например: пришел вызов на 555-55-55 - отправляю его на 101, пришел вызов на 555-55-56 - отправляю его на 102.
Теперь задача такая, чтоб при исходящих вызовах на городские/мобильные от номера 101 его callerid был 555-55-55. тоже самое и в случае с номером 102. его callerid должен быть 555-55-56.
Пробовал так
exten => _9XXXXXXX/101,1,Set(CALLERID(num)=5555555)
same => n,Dial(SIP/МОЙ_ОПЕРАТОР/${EXTEN:1})
такой вариант с внутренними номерами у меня не сработал.
Можно конечно создать контексты с нужными callerid для исходящих, пользователей разбить на группы и присвоить каждому свое. тоже вариант. Но может уже кто-то сталкивался с таким вопросом используя астериск? Какие еще могут быть варианты для достижения цели?
Буду рад любым советам. Заранее спасибо.

Re: callerid

Добавлено: 12 дек 2013, 14:35
ded
А что значит не сработал? Где это было видно?
Добавьте перед шагом Dial ещё и проверку
same => n,NoOp(Caller ID is ${CALLERID(all)})
same => n,Dial(SIP/МОЙ_ОПЕРАТОР/${EXTEN:1})
и посмотрите вывод в CLI.

Re: callerid

Добавлено: 12 дек 2013, 15:26
Arty
не сработал - в консоле я получил ошибку (в данном случае была учетная запись 577 вместо 101)
Channel 'SIP/577-0000099d' sent into invalid extension '96885566' in context 'fortest', but no invalid handler
не сработала маска. но стоит только убрать /577 после _9ХХХХХХХ как номер набирается и происходит вызов.

Re: callerid

Добавлено: 12 дек 2013, 15:31
Arty
вот что показала проверка:
NoOp("SIP/577-000009a7", "Caller ID is "577" <577>") in new stack

я в маску уже и так "577" и так <577> и так "577" <577> вписывал. не срабатывает.

Re: callerid

Добавлено: 12 дек 2013, 15:39
Vlad1983
${CALLERID(all)} может перекрываться fromuser в пире МОЙ_ОПЕРАТОР

Re: callerid

Добавлено: 12 дек 2013, 15:50
Arty
вот учетная запись оператора
[МОЙ_ОПЕРАТОР]
type=peer
host=ХХХ.XXX.XXX.XXX
context=incoming_calls_from_ОПЕРАТОР
nat=yes
dtmfmode=rfc2833
canreinvite=no
insecure=invite
disallow=all
allow=ulaw
allow=alaw
allow=gsm
да и как-бы до оператора еще не доходит дело. надо бы еще попасть под маску, пройти проверку по callerid

Re: callerid

Добавлено: 12 дек 2013, 16:04
ded
Синтаксис может быть чуть иной
exten => _9XXXXXXX/101,1,Set(CALLERID(number)=5555555)

Re: callerid

Добавлено: 12 дек 2013, 18:02
Arty
ded
и так тоже не хочет.
Дед, в настройках учетной записи в sip.conf один и параметров есть callerid, где указывается имя в "" и номер в <>. Я правда уже пробовал и callerid=101 и callerid="101" и callerid=<101> - не помогло. Может и в этом поле есть какой-то недокументированный синтаксис?
[username]
callerid="User name" <101>

Re: callerid

Добавлено: 12 дек 2013, 18:17
Vlad1983

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

exten => _9XXXXXXX,1,ExecIf($["${CALLERID(num)}"="101"]?Set(CALLERID(num)=5555555))
   same => n,ExecIf($["${CALLERID(num)}"="121"]?Set(CALLERID(num)=2222222))
...
   same => n,Dial(SIP/МОЙ_ОПЕРАТОР/${EXTEN:1})

Re: callerid

Добавлено: 12 дек 2013, 18:28
Vlad1983
можно по другому:
в описание пира

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

[101]
...
setvar=OUTCID=5555555
в диалплане две строки для всех

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

exten => _9XXXXXXX,1,ExecIf($["foo${OUTCID}" != "foo"]?Set(CALLERID(num)=${OUTCID}))
   same => n,Dial(SIP/МОЙ_ОПЕРАТОР/${EXTEN:1})