AF
Asterisk Forum
обсуждения телефонии, VoIP и IP-PBX
12разделов
5 423тем
34 385сообщений
← К списку тем

Фиксация Hold

Asterisk IP PBX 8 сообщений -
#1

Добрый день.
Понадобилось тут фиксировать продолжительность Hold у абонента во время разговора с оператором, т.е. в процессе разговора оператору нужно обсудить какой-нить вопрос с другим оператором. Для этого он ставит на удержание абонента через нажатие кнопки Hold своего SIP софтфона.
Так вот, как можно зафиксировать продолжительность hold`а? Пока что только одна идея - это править исходник например для работы с sql. Версия Asterisk - 1.4.42
#2

Используйте AMI.
_________________
Gentoo Linux || Asterisk 13.1-cert2
Решения телефонии на базе Asterisk || http://it-need.ru
#3

Спасибо, но это только в самом крайнем случае. Это же какой-то сервис писать прийдётся.. А не хотелось бы, времени нет..
#4

Попробовал через AMI отловить - результат нулевой, манагер со всеми привилегиями, версия астериска 1.8.7.0
параметры клиента
Код:
* 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
#5

Что значит результат нулевой? Что он присылает в момент нажатия Hold ?
_________________
Gentoo Linux || Asterisk 13.1-cert2
Решения телефонии на базе Asterisk || http://it-need.ru
#6

Абсолютно ничего.
Пробовал X-Lite и 3CX
Ещё пробовал добавить в chan_sip.c после
Код:
append_history(dialog, holdstate ? "Hold" : "Unhold", "%s", req->data);

строку
Код:
ast_cdr_setuserfield(dialog->owner, "Hold" );
- тоже ничего в CDR не пишется.. Правда я не уверен, что тут правильно: dialog->owner.
#7

Ivan писал(а):
Абсолютно ничего.

А почему у меня пишется? Наверно я неправильно что-то делаю....

_________________
Gentoo Linux || Asterisk 13.1-cert2
Решения телефонии на базе Asterisk || http://it-need.ru
#8

Обновился до 1.8.13.0
Только вот это
Код:
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:

Всё, разобрался Cool
Надо так
Код:
ast_cdr_appenduserfield(ast_bridged_channel(dialog->owner), holdstate ? "Hold" : "Unhold" );

Ну а остальное как говорится - дело техники Smile