Настроено несколько транков на разных провайдеров.
При обработке входящих вызовов разные провайдеры передают 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) - нет
Кто сталкивался с такой задачей?
| Код: |
| exten => s,1,Answer() exten => s,n,Set(foo=8${CALLERID(num)}) exten => s,n,Set(CALLERID(num)=${foo}) |
| Код: |
| [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' |
| Код: |
| exten => s,n,Set(CDR(src)=${CALLERID(num)}) |
но судя по
| Код: |
| ERROR[441]: cdr.c:309 ast_cdr_setvar: Attempt to set the 'src' read-only variable!. |
только правкой исходников...
_________________
Asterisk 1.4.30 @ Ubuntu 9.04 + Cisco MC3810 + NEC NEAX 2000IPS + Polycom IP Phones