Понимаю, что тема поднималась, изучил ответы, сделал как написано было, но результата нет.
Суть вопроса.
При вызове в CDR(через cdr_mysql) пишется информация о вызове.
Нужно чтобы писалось, кто принял вызов реально в случаях:
одновременных вызовов Dial(SIP/ext1&SIP/ext2)
при перехвате вызова
Есть поле CDR(dstchannel) ответившего на вызов канала, но оно не удобно для восприятия.
Хотел выцепить это поле в диалплане, записать туда(или скажем в userfield) обработанный результат - не канал, а номер.
Пробовал обработку производить:
- в exten => ext1,1,Dial(SIP/${EXTEN},,g)
same => n,Set(CDR(userfield)=${CDR(dstchannel)})
- в exten => h,1,Set(CDR(userfield)=${CDR(dstchannel)})
- в exten => ext1,1,Dial(SIP/${EXTEN},,gM(answered))
Во всех случаях в консоли видно, что "обработка" происходит, но в MySQl ничего нет, за исключением группового вызова, у неответившего ext поле записывается как хотелось.
Вместо ${CDR(dstchannel)} пробовал использовать ${DIALEDPEERNUMBER}, но это скорее относится уже к "обработке" нужного поля, а вопрос касается как записать результат "обработки".
Вообщем-то когда, начал это все делать без изучения форумов, ситуация показалась логичной, т.к. предполагал, что поля в CDR можно менять ДО вызова Dial(). Но изучив в форумах, понял, что у кого-то реализовано это. Соответственно вопрос - что не так?
Голый Asterisk 11.15.0
Добавление:
В MYSQL, помимо поля dstchannel, можно отследить при групповом вызове на каком конкретно из номеров сняли трубку оп полю disposition, т.к. присутствуют записи для каждого из вызовов и на ответившем естественно ANSWERED. Это конечно не дает ответ на то, кто ответил, если был перехват вызова, но тоже используется кем-то, как я понял по форумам.
Мне хочется же иметь в первичном вызове поле "этот номер реально принял вызов", т.е. некое обработанное неким образом поле dstchannel.