Страница 1 из 2
Переадрессация и таймер
Добавлено: 01 июл 2013, 11:47
Troi
Всем привет.
возможно в FS реализоввать такой сценарий?
Работник уходит на n времени с места и набирает *n. Теперь все звонки которые направлены к нему в течении n времени переадрессуются на заранее предустановленное рабочее место.
Подошел к решению проблемы с ivr, скрипт оценивает набор.
что делать дальше на данный момент не знаю.
Все спасибо за помощь!
Re: Переадрессация и таймер
Добавлено: 01 июл 2013, 11:53
Vlad1983
научиться использовать внутреннюю БД
Mod_db
Re: Переадрессация и таймер
Добавлено: 01 июл 2013, 12:05
Troi
Vlad1983
Спасибо за столь быстрый ответ. Информации по ссылке крайне мало. Может вы посоветуете где почитать или дадите старт в виде подскащки по сабжу?
Re: Переадрессация и таймер
Добавлено: 01 июл 2013, 12:15
Vlad1983
при наборе *n в БД insert "номер звонящего"=key значение до какого времени держать переадресацтию
при вызове проверяете существует ли запись, сравниваете текущее время с тем что в БД:
<= переадресация
> удаляете запись
подробнее в wiki
Re: Переадрессация и таймер
Добавлено: 01 июл 2013, 12:52
Troi
Грубый набросок, буду раз если вы посмотрите и дадите советы
Код: Выделить всё
<extension name="test">
<condition field="destination_number" expression="^*(\d+)$"> тут я беру количество минут n
<action application="db" data="insert/realm/key/$2{strftime(%Y-%m-+$%d)}"/> и добавляю минуты к актульному времени
</condition>
</extension>
Код: Выделить всё
<extension name="call_user_nothere">
<condition field="destination_number" expression="^1002"> звоню 1002
<condition field="${db(exists/realm/key/{strftime(%Y-%m-%d)))}" expression="^true$"/> не очень понимаю как сравнить время
<action application="bridge" data="user/1004"/> если совпало то звони 1004
<action application="bridge" data="user/1002"/> если нет то 1002
</condition>
</extension>
Re: Переадрессация и таймер
Добавлено: 01 июл 2013, 13:30
Vlad1983
время проще сравнивать в формате Unix epoch
http://wiki.freeswitch.org/wiki/Misc._D ... s_strepoch
понадобятся математические операции
https://wiki.freeswitch.org/wiki/Mod_expr
функция cond для сравнения
http://wiki.freeswitch.org/wiki/Function_cond
"realm" в mod_db это не просто слово синтаксисе, а название ветки ключей
используйте какое-нить вразумительное, чтоб потом можно было догадаться для чего эти ключи созданы
"key" имя ключа = номеру заказавшего услугу
как-то так insert/tdnd/1000/${expr(${strepoch()}+${timeout})}
остальное сами
Re: Переадрессация и таймер
Добавлено: 01 июл 2013, 14:10
Troi
наверняка криво но кроме вас обратиться не к кому.
1002 ушел на n времени.
Код: Выделить всё
<extension name="test">
<condition field="destination_number" expression="^*(\d+)$">
<action application="db" data="insert/away/1002/${expr(${strepoch()}+${timeout})}"/>
</condition>
</extension>
<extension name="call_user_nothere">
<condition field="destination_number" expression="^1002">
<condition field="${db(exists/away/1002/${expr(${strepoch()}+${timeout})} <= ${strepoch()}" expression="^true$"/>
<action application="bridge" data="user/1004"/>
<action application="bridge" data="user/1002"/>
</condition>
</extension>
Re: Переадрессация и таймер
Добавлено: 01 июл 2013, 15:10
Vlad1983
пишу на коленке, поэтому за работоспособность с ходу не ручаюсь
Код: Выделить всё
<extension name="test">
<condition field="destination_number" expression="^*(\d+)$">
<action application="db" data="insert/away/${sip_auth_username}/${expr(${strepoch()} + $1)}"/>
</condition>
</extension>
<extension name="call_user_nothere">
<condition field="destination_number" expression="^(1002)"/>
<condition field="${cond(${db(select/away/$1)} <= ${strepoch()} ? YES : NO)}" expression="^YES$">
<action application="set" data="hangup_after_bridge=true"/>
<action application="set" data="continue_on_fail=true"/>
<action application="bridge" data="{originate_timeout=20}user/1004"/>
<action application="bridge" data="user/1002"/>
</condition>
</extension>
как удалить запись в БД подумайте сами
Re: Переадрессация и таймер
Добавлено: 01 июл 2013, 16:15
Troi
FS ругается.Похоже на эту функцию
тк. если написать "insert/away/1003/5> то в БД заносится 5. При комманде db select/away/1003 вылетает 5.
вот что пишет FS при
(user 1001--> 9875--> away 5 min

Re: Переадрессация и таймер
Добавлено: 01 июл 2013, 18:08
Vlad1983
прочитайте предыдущий пост ещё раз
где вы там увидели "${expr(${strepoch()}+${timeout})}"/>"?
единственное заменить строку
<condition field="destination_number" expression="^*(\d+)$">
на
<condition field="destination_number" expression="^\*(\d+)$">
что это за 1001--> 9875--> away 5 min
если время в минутах то
<action application="db" data="insert/away/${sip_auth_username}/${expr(${strepoch()} + $1)}"/>
на
<action application="db" data="insert/away/${sip_auth_username}/${expr(${strepoch()} + 60*$1)}"/>