Добавляем в CDR две колонки:
- hangupcause (int4);
- hangupparty (varchar или сделать отдельный тип enum 'caller|callee').
Далее добавляем в app_dial.c переменную типа char buf_hangup_str[8], по очереди пишем в неё значения ast_channel_hangupcause(chan) и ast_check_hangup(chan), и сбрасываем в CDR через ast_cdr_setvar.
Соответствующий патч ниже.