AF
Asterisk Forum
обсуждения телефонии, VoIP и IP-PBX
12разделов
5 423тем
34 385сообщений
← К списку тем

Подмена входящего CALLERID

Newbies/FAQ Forum 8 сообщений -
#1

Есть Asterisk 1.8.5.0
Настроено несколько транков на разных провайдеров.
При обработке входящих вызовов разные провайдеры передают CallerID в разных форматах. Кто-то 8ХХХХХХХХХ, кто-то +7ХХХХХХХХХ, кто-то вообще без 8 или +7. Соответственно в CDR потом пишется так как пришло от прова и разбирать это все довольно проблематично.

Например приходит звонок с 4951111111. Пробую сделать например так:
Код:

exten => s,1,Answer()
exten => s,n,Set(CALLERID(num)=8${CALLERID(num)})

получаю в CRD "4951111111 "

Пробую так:
Код:

exten => s,1,Answer()
exten => s,n,Set(CALLERID(name)=8${CALLERID(num)})

получаю в CDR "84951111111 "

Т.е. получается что CALLERID(name) подменить можно, а CALLERID(num) - нет
Кто сталкивался с такой задачей?
#2

Код:

exten => s,1,Answer()
exten => s,n,Set(foo=8${CALLERID(num)})
exten => s,n,Set(CALLERID(num)=${foo})
#3

твоя схема от моей ничем не отличается, кроме промежуточной переменной. Все-равно не работает.
#4

не поленился проверил =)

Код:


[test]
exten => s,1,Answer()
exten => s,n,Set(foo=8${CALLERID(num)})
exten => s,n,Set(CALLERID(num)=${foo})
exten => s,n,NoOp(${CALLERID(num)})
exten => s,n,Hangup()


Код:

-- Executing [s@test:1] Answer("SIP/comstar-000061a6", "") in new stack
-- Executing [s@test:2] Set("SIP/comstar-000061a6", "foo=89192345678") in new stack
-- Executing [s@test:3] Set("SIP/comstar-000061a6", "CALLERID(num)=89192345678") in new stack
-- Executing [s@test:4] NoOp("SIP/comstar-000061a6", "89192345678") in new stack
-- Executing [s@test:5] Hangup("SIP/comstar-000061a6", "") in new stack
== Spawn extension (test, s, 5) exited non-zero on 'SIP/comstar-000061a6'
#5

А теперь не поленись и посмотри что Астер записал в CDR )))
#6

Сорри, изначально по диагонали пост прочитал.
Код:

exten => s,n,Set(CDR(src)=${CALLERID(num)})

но судя по
Код:

ERROR[441]: cdr.c:309 ast_cdr_setvar: Attempt to set the 'src' read-only variable!.

только правкой исходников...
#7

Вообще-то можно использовать еще другие поля cdr. А потом опираться на них, а не на src
_________________
Asterisk 1.4.30 @ Ubuntu 9.04 + Cisco MC3810 + NEC NEAX 2000IPS + Polycom IP Phones
#8

возможно и свои поля создать в БД и играть с ними.