VIDEOCHAT  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

Переадрессация и таймер

Использование и настройка других открытых VoIP PBX

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

Troi
Сообщения: 19
Зарегистрирован: 01 июл 2013, 11:33

Переадрессация и таймер

Сообщение Troi »

Всем привет.
возможно в FS реализоввать такой сценарий?
Работник уходит на n времени с места и набирает *n. Теперь все звонки которые направлены к нему в течении n времени переадрессуются на заранее предустановленное рабочее место.
Подошел к решению проблемы с ivr, скрипт оценивает набор.
что делать дальше на данный момент не знаю.
Все спасибо за помощь!
Vlad1983
Сообщения: 4251
Зарегистрирован: 09 авг 2011, 11:51

Re: Переадрессация и таймер

Сообщение Vlad1983 »

научиться использовать внутреннюю БД Mod_db
ЛС: @rostel
Troi
Сообщения: 19
Зарегистрирован: 01 июл 2013, 11:33

Re: Переадрессация и таймер

Сообщение Troi »

Vlad1983
Спасибо за столь быстрый ответ. Информации по ссылке крайне мало. Может вы посоветуете где почитать или дадите старт в виде подскащки по сабжу?
Vlad1983
Сообщения: 4251
Зарегистрирован: 09 авг 2011, 11:51

Re: Переадрессация и таймер

Сообщение Vlad1983 »

при наборе *n в БД insert "номер звонящего"=key значение до какого времени держать переадресацтию
при вызове проверяете существует ли запись, сравниваете текущее время с тем что в БД:
<= переадресация
> удаляете запись

подробнее в wiki
ЛС: @rostel
Troi
Сообщения: 19
Зарегистрирован: 01 июл 2013, 11:33

Re: Переадрессация и таймер

Сообщение 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>
Vlad1983
Сообщения: 4251
Зарегистрирован: 09 авг 2011, 11:51

Re: Переадрессация и таймер

Сообщение 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})}

остальное сами
ЛС: @rostel
Troi
Сообщения: 19
Зарегистрирован: 01 июл 2013, 11:33

Re: Переадрессация и таймер

Сообщение 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>

Vlad1983
Сообщения: 4251
Зарегистрирован: 09 авг 2011, 11:51

Re: Переадрессация и таймер

Сообщение 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>
как удалить запись в БД подумайте сами
ЛС: @rostel
Troi
Сообщения: 19
Зарегистрирован: 01 июл 2013, 11:33

Re: Переадрессация и таймер

Сообщение Troi »

FS ругается.Похоже на эту функцию

Код: Выделить всё

${expr(${strepoch()}+${timeout})}"/> 
тк. если написать "insert/away/1003/5> то в БД заносится 5. При комманде db select/away/1003 вылетает 5.


вот что пишет FS при (user 1001--> 9875--> away 5 min


Изображение
Vlad1983
Сообщения: 4251
Зарегистрирован: 09 авг 2011, 11:51

Re: Переадрессация и таймер

Сообщение 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)}"/>
ЛС: @rostel
Ответить
© 2008 — 2024 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH