продлять будете?

Для начинающих.
Всем начинающим - сюда.

Модераторы: Admins, Модераторы

Ответить
kontrol
Сообщения: 26
Зарегистрирован: 01 июн 2011, 15:31

продлять будете?

Сообщение kontrol » 22 ноя 2018, 22:58

Коллеги, подскажите, пожалуйста, как реализовать фичу продления разговора на астере 15? Алгоритм следующий:
1. А звонит на *
2. * принимает вызов и соединяет А с Колцентром по номеру Б, давая поговорить с оператором КЦ Б 5 минут
3. По прошествии 4 минут, * спрашивает у А - продлевать разговор будем? нажмите 1, если да.
4. А нажимает 1 и разговор продолжается еще на 5 минут, далее Goto 3.

Как я сделал (вызов от А поступает в котнекст incoming ):

extensions.conf:
[incoming]
exten => DID,1,Set(LIMIT_PLAYAUDIO_CALLEE=no)
exten => DID,n,Set(LIMIT_PLAYAUDIO_CALLER=yes)
exten => DID,n,Set(LIMIT_WARNING_FILE=/home/wav/would_u_prolong_press_1_if_yes)
exten => DID,n,Set(DYNAMIC_FEATURES=prolong)
exten => DID,n,Dial(SIP/callcenter_of_B,,L(300000:60000)) ; 5мин, 1мин

[charger]
exten => s,1,NoOp(тут помечаем в специальном логе, что А продлил в такое-то время)

features.conf:
[applicationmap]
prolong => 1,peer,Goto(charger,s,1)

теперь, собственно, вопрос. Как добавить время разговора после того, как А все же решил продлить и нажал 1? Полагаю, что это надо делать в контексте charger, но как ?

Заранее спасибо за наставления.

virus_net
Сообщения: 444
Зарегистрирован: 05 окт 2014, 06:10
Откуда: Москва
Контактная информация:

Re: продлять будете?

Сообщение virus_net » 23 ноя 2018, 06:45

Только двумя способами:
  • писать патч
    не использовать L и отслеживать время сторонним скриптом
Нельзя поменять время у уже установленного вызова.
bitname.ru - Домены .bit (namecoin) .emc .coin .lib .bazar (emercoin)
- whois сервис: whois.bitname.ru или whois.bitname.bit
- dns сервис: dns1.bitname.ru dns2.bitname.ru
- статистика по доменам
ENUMER - звони бесплатно и напрямую.

kontrol
Сообщения: 26
Зарегистрирован: 01 июн 2011, 15:31

Re: продлять будете?

Сообщение kontrol » 23 ноя 2018, 21:46

а если сделать так при нажатии 1 ?
1. получить ИДы каналов через ${CHANNEL} (А-номер) и ${BRIDGEPEER} (Б-номер)
2. через ChannelRedirect() отправить Б слушать музычку в контекст [operator-wait]
3. через ChannelRedirect() отправить А в контекст [charge], провести с его балансом необходимые операции
4. объединить A с Б через Bridge( ${BRIDGEPEER},L(300000:60000))

я просто с звонками на уровне каналов и мостов пока не работал, теоретических знани нет.

попробовал так - ${BRIDGERESULT} возвраает FAILURE

Ответить