День добрый. Исходные данные: asterisk 1.6, CDR в mysql
Суть вопроса такова: есть один транк, на котором callerid приходит в различном формате - иногда номер вида 7xxxxxxxxxx (11 знаков), а иногда без 7-ки. С местными городскими также - некоторые номера в виде 812xxxxxxx, а некоторые просто xxxxxxx. От чего это зависит?
Но это не главный вопрос. Хочется чтобы в CDR это было нормализовано (в одном формате). src и dst, как я понял, из диалплана через CDR() переписать нельзя. Был вариант писать в userfield, но как-то неудобно, т.к. придется писать два параметра в одно поле с каким-нибудь текстовым разделителем (извращение, ИМХО).
В общем что посоветуете?
Со вторым вопросом разобрался userfield-ов можно в БД сделать сколько угодно.
По первому - можно попробовать самому править CID:
ExecIf($[ ${LEN(${CALLERID(num)})} = 10 ],Set,CALLERID(num)=7${CALLERID(num)})
можно вот так сделать
[from-bad-trunk]
exten => _X.,1,NoCDR
exten => _X./_XXXXXXXX,2,Set(CALLERID(num)=7495${CALLERID(num)})
exten => _X./_XXXXXXXX.,2,Noop(cid number ok)
exten => _X.,3,Dial(Local/${EXTEN}@from-pstn/n);
соответвенно сдр сохранится толкьо второй и корректно.
Задан: 2013-09-12 16:08:55 +0400
Просмотрен: 1,392 раз
Обновлен: Sep 13 '13
Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании
Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией
GNU GPL.
Со вторым вопросом разобрался - userfield-ов в БД можно создать сколько угодно.
andySPB ( 2013-09-12 16:41:24 +0400 )редактировать