ВидеоКонф(ВКС)  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

Голосовое меню после Hangup

Проблемы и их решения Asterisk как такового

Модераторы: april22, Zavr2008

Голосовое меню после Hangup

Сообщение zlat » 30 сен 2010, 18:59

Добрый вечер!
Появилась такая проблема. Нужно чтобы клиенту после того, как оператор положит трубку, выдавалось голосовое меню с возможностью оставить сообщение о качестве сервиса. Астериск 1.4.26, FreePBX2.6. Переписал макрос hangupcall
Код: выделить все
[macro-hangupcall]
exten => s,1(start),GotoIf($["${USE_CONFIRMATION}"="" | "${RINGGROUP_INDEX}"="" | "${CHANNEL}"!="${UNIQCHAN}"]?skiprg)
exten => s,n,Noop(Cleaning Up Confirmation Flag: RG/${RINGGROUP_INDEX}/${CHANNEL})
exten => s,n(delrgi),dbDel(RG/${RINGGROUP_INDEX}/${CHANNEL})
exten => s,n(skiprg),GotoIf($["${BLKVM_BASE}"="" | "BLKVM/${BLKVM_BASE}/${CHANNEL}"!="${BLKVM_OVERRIDE}"]?skipblkvm)
exten => s,n,Noop(Cleaning Up Block VM Flag: ${BLKVM_OVERRIDE})
exten => s,n(delblkvm),dbDel(${BLKVM_OVERRIDE})
exten => s,n(skipblkvm),GotoIf($["${FMGRP}"="" | "${FMUNIQUE}"="" | "${CHANNEL}"!="${FMUNIQUE}"]?theend)
exten => s,n(delfmrgp),dbDel(FM/DND/${FMGRP}/${CHANNEL})
exten => s,n(theend),NoOp(${CALLERID(num)})
exten => s,n,GotoIf($[${LEN(${CALLERID(num)})}>4]?later:hang)
exten => s,n(hang),Hangup
exten => s,n(later),Background(custom/speech_2s)
exten => s,n,WaitExten()

exten => 1,1,Answer()
exten => 1,n,Set(record_name="${STRFTIME(${EPOCH},,%Y.%m.%d-%H.%M)}-${CALLERID(num)}.wav")
exten => 1,n,NoOp(${record_name})
exten => 1,n,Record(/var/spool/asterisk/record/${record_name},5,60)
exten => 1,n,System(chmod 777 /var/spool/asterisk/record/${record_name})
exten => 1,n,Hangup

exten => i,1,Hangup
exten => t,1,Hangup

В итоге обработчик работает, клиенты могут оставлять свои пожелания в расшаренный каталог, но на оператора, собеседник которого решил послушать ИВР и оставить сообщение, вызовы не попадут, пока клиент не повесит трубку. Телефон свободен, возможны исходящие, но система считает, что он занят, и на все входящие на него вызовы отвечает бизи.
show hints показывает
107@ext-local : SIP/107&Custom:DND107 State:InUse
При этом статус ДНД у этого юзера в базе * не стоит.
Погуглив решил, что в этом вопросе мне поможет функция Devstate. В текущей версии * ее не было, решил вместо патча обновиться до 1.4.33. Добавил строки
Код: выделить все
exten => s,n,Set(DEVICE_STATE(SIP/107&Custom:DND107)=NOT_INUSE)
exten => s,n,NoOp(${DEVICE_STATE(SIP/107&Custom:DND107)})
но в итоге NoOp все равно выводит статус устройства INUSE.
Где-то видел такую же проблему, и там вроде приводилось решение, но что-то никак не могу найти. Подскажите куда копать.
Аватар пользователя
zlat
 
Сообщений: 98
Зарегистрирован: 01 сен 2010, 00:15
Откуда: Пенза

Re: Голосовое меню после Hangup

Сообщение ded » 30 сен 2010, 19:14

IMHO надо выводить на ИВР не через Hangup, а через blind трансфер на локальный канал по завершении разговора с оператором. Тогда плечо оператора отобъётся, и он свободен для приёма звонков, а клиент играется в канале Local сколько хочет.
ded
 
Сообщений: 15801
Зарегистрирован: 26 авг 2010, 19:00

Re: Голосовое меню после Hangup

Сообщение zlat » 30 сен 2010, 20:41

спасибо, ded. попробовал применить transfer на локальных абонентах - все работает, номер освобождается
Аватар пользователя
zlat
 
Сообщений: 98
Зарегистрирован: 01 сен 2010, 00:15
Откуда: Пенза


Вернуться в Конфигурация и настройка Asterisk

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 14

© 2008 — 2024 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH