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

Отследить время через которое был Отбой

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

Как должна выглядеть строчка нечто похожее на таймер.
Задача.
С некоторого времени пользователи, которым вменяется обязательное поднятие трубы, начали злоупотреблять тем что в при звонке на тел нажимают сброс, в итоге непонятно толи тел действительно был занят, или его сбросил сотрудник.
Ситуация усложняется тем что звонок идет по GSM каналам, а это значит что по любому приходит один ответ - busy
Поэтому есть задумка определять по времени когда звонок начался и когда закончился сигналом busy.

Рытье по инету про организацию подобия таймера ничего не дала.
Кто подскажет как выглядит его старт и как он выглядит в if(?????);

_________________
АВТОМАТИЗАЦИЯ ДИСПЕТЧЕСКИХ ТАКСИ

УНИКАЛЬНАЯ ТЕХНОЛОГИЯ "ТАКСИ БЕЗ ДИСПЕТЧЕРОВ" - без Java и/или Интренет (только телефоны) http://tet-a-tet.mobi
#2

Может устроит таймер количество секунд разговора ?
_________________
платный суппорт по мере возможностей
#3

Нет это же после ансвер, а его вообще нет. Тут же идет ринг и бизи. Тоесь время разговора всегда будет 0.
_________________
АВТОМАТИЗАЦИЯ ДИСПЕТЧЕСКИХ ТАКСИ

УНИКАЛЬНАЯ ТЕХНОЛОГИЯ "ТАКСИ БЕЗ ДИСПЕТЧЕРОВ" - без Java и/или Интренет (только телефоны) http://tet-a-tet.mobi
#4

Не совсем так. В CDR есть значения duration и billsec, первое - продолжительность соединения для инициатора, а второе именно длительность разговора абонентов.
Если оператор не поднял трубку второе будет ноль, а первое показывает сколько времени абонент ждал соединения.

_________________
http://www.myipats.ru
#5

Запишите себе в базу время начала соединения, время начала разговора время окончания соединения, длительность соединения и длительность разговора. Вот из этих полей (на самом деле двух последних достаточно) и можете требуемую длительность ответа получить.
#6

То есть простым вписыванием в диалплан пару строк не получиться?
Ну собственно я это подозревал. Но надеялся на простоту решения.

_________________
АВТОМАТИЗАЦИЯ ДИСПЕТЧЕСКИХ ТАКСИ

УНИКАЛЬНАЯ ТЕХНОЛОГИЯ "ТАКСИ БЕЗ ДИСПЕТЧЕРОВ" - без Java и/или Интренет (только телефоны) http://tet-a-tet.mobi
#7

А в диалплан-то зачем?
Из первого поста непонятно, кто звонит, куда звонит, что по If должно отслеживаться?
#8

if (T_начала_попытки_дзвона_ОПСОСа + 2 сек > T_получения_сигнала_BUSY) {
Значит телефон занят.
} else {
Сотрудник сбросил звонок вручную и с ним нужно провести беседу.
}

_________________
АВТОМАТИЗАЦИЯ ДИСПЕТЧЕСКИХ ТАКСИ

УНИКАЛЬНАЯ ТЕХНОЛОГИЯ "ТАКСИ БЕЗ ДИСПЕТЧЕРОВ" - без Java и/или Интренет (только телефоны) http://tet-a-tet.mobi
#9

2 секунды? Да ну... Иногда и по 20 секунд только установление соединения происходиn.
Но если хочется, то через метки времени делайте.
#10

к сожалению, не всегда можно всецело доверять переменным billsec и duration. бывают случаи, когда они не отражают реальное положение вещей в рамках того, что тебе нужно.
я использую метки с epochtime и math для подсчета разницы в диалплане

разумеется, в большинстве случаев хватит bs и dur
#11

bzmn @ Вс Ноя 29, 2015 19:37 писал(а):

я использую метки с epochtime и math для подсчета разницы в диалплане


Позвольте спросить, разница между чем и чем?
bzmn @ Вс Ноя 29, 2015 19:37 писал(а):

к сожалению, не всегда можно всецело доверять переменным billsec и duration.


Да, бывает и такое
lastapp | lastdata | duration | billsec | disposition
Hangup | | 3 | 2 | BUSY

_________________
http://www.myipats.ru
#12

Цитата:
Позвольте спросить, разница между чем и чем?


между двумя событиями. например:

запуск чего-то в диалплане - GlobalVar=EpochTime
здесь еще какие-то действия
ответ - макро - подсчет разницы - MATH(EpochTime-GlobalVar).

или в => h. я просто привел пример, по какому пути может пойти автор, если у него сложные конструкции. я не настаиваю на своем методе.
#13

после DIALSTATUS
Noop( = время разговора = ${ANSWEREDTIME})

_________________
платный суппорт по мере возможностей