Понадобилось тут фиксировать продолжительность Hold у абонента во время разговора с оператором, т.е. в процессе разговора оператору нужно обсудить какой-нить вопрос с другим оператором. Для этого он ставит на удержание абонента через нажатие кнопки Hold своего SIP софтфона.
Так вот, как можно зафиксировать продолжительность hold`а? Пока что только одна идея - это править исходник например для работы с sql. Версия Asterisk - 1.4.42
_________________
Gentoo Linux || Asterisk 13.1-cert2
Решения телефонии на базе Asterisk || http://it-need.ru
параметры клиента
| Код: |
| * Name : 1303 Secret : MD5Secret : Remote Secret: Context : office Subscr.Cont. : Language : AMA flags : Unknown Transfer mode: open CallingPres : Presentation Allowed, Not Screened Callgroup : Pickupgroup : MOH Suggest : Mailbox : VM Extension : asterisk LastMsgsSent : 32767/65535 Call limit : 0 Max forwards : 0 Dynamic : Yes Callerid : "1303" MaxCallBR : 384 kbps Expire : 3360 Insecure : no Force rport : No ACL : No DirectMedACL : No T.38 support : Yes T.38 EC mode : FEC T.38 MaxDtgrm: -1 DirectMedia : Yes PromiscRedir : No User=Phone : No Video Support: No Text Support : No Ign SDP ver : No Trust RPID : No Send RPID : No Subscriptions: Yes Overlap dial : Yes DTMFmode : auto Timer T1 : 500 Timer B : 32000 ToHost : Addr->IP : 192.168.57.252:17884 Defaddr->IP : (null) Prim.Transp. : UDP Allowed.Trsp : UDP Def. Username: 1303 SIP Options : (none) Codecs : 0xc (ulaw|alaw) Codec Order : (ulaw:20,alaw:20) Auto-Framing : No 100 on REG : No Status : OK (103 ms) Useragent : X-Lite release 1103k stamp 53621 Reg. Contact : sip:1303@192.168.57.252:17884;rinstance=1680713381dc44d1 Qualify Freq : 60000 ms Sess-Timers : Accept Sess-Refresh : uas Sess-Expires : 1800 secs Min-Sess : 90 secs RTP Engine : asterisk Parkinglot : Use Reason : No Encryption : No |
_________________
Gentoo Linux || Asterisk 13.1-cert2
Решения телефонии на базе Asterisk || http://it-need.ru
Пробовал X-Lite и 3CX
Ещё пробовал добавить в chan_sip.c после
| Код: |
| append_history(dialog, holdstate ? "Hold" : "Unhold", "%s", req->data); |
строку
| Код: |
| ast_cdr_setuserfield(dialog->owner, "Hold" ); |
| Ivan писал(а): |
| Абсолютно ничего. |
А почему у меня пишется? Наверно я неправильно что-то делаю....
_________________
Gentoo Linux || Asterisk 13.1-cert2
Решения телефонии на базе Asterisk || http://it-need.ru
Только вот это
| Код: |
| Event: MusicOnHold Privilege: call,all State: Stop Channel: SIP/1304-00000000 UniqueID: 1340163266.0 Event: MusicOnHold Privilege: call,all State: Start Channel: SIP/1304-00000000 UniqueID: 1340163266.0 Class: default Event: MusicOnHold Privilege: call,all State: Stop Channel: SIP/1304-00000000 UniqueID: 1340163266.0 |
P.S. Заметил, что если ставить Hold на вызывающей стороне, то всё норм. Даже userfield в cdr лог попадает. Но мне то надо на принимающей стороне фиксировать...
Added after 44 minutes:
Всё, разобрался
Надо так
| Код: |
| ast_cdr_appenduserfield(ast_bridged_channel(dialog->owner), holdstate ? "Hold" : "Unhold" ); |
Ну а остальное как говорится - дело техники