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

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

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

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

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

Сообщение Troi » 01 июл 2013, 11:47

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

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

Сообщение Vlad1983 » 01 июл 2013, 11:53

научиться использовать внутреннюю БД Mod_db
ЛС: @rostel
Vlad1983
 
Сообщений: 4251
Зарегистрирован: 09 авг 2011, 11:51

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

Сообщение Troi » 01 июл 2013, 12:05

Vlad1983

Спасибо за столь быстрый ответ. Информации по ссылке крайне мало. Может вы посоветуете где почитать или дадите старт в виде подскащки по сабжу?
Troi
 
Сообщений: 19
Зарегистрирован: 01 июл 2013, 11:33

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

Сообщение Vlad1983 » 01 июл 2013, 12:15

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

подробнее в wiki
ЛС: @rostel
Vlad1983
 
Сообщений: 4251
Зарегистрирован: 09 авг 2011, 11:51

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

Сообщение Troi » 01 июл 2013, 12:52

Грубый набросок, буду раз если вы посмотрите и дадите советы

Код: выделить все
<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>
Troi
 
Сообщений: 19
Зарегистрирован: 01 июл 2013, 11:33

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

Сообщение Vlad1983 » 01 июл 2013, 13:30

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

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

Сообщение Troi » 01 июл 2013, 14:10

наверняка криво но кроме вас обратиться не к кому.

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>

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

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

Сообщение Vlad1983 » 01 июл 2013, 15:10

пишу на коленке, поэтому за работоспособность с ходу не ручаюсь
Код: выделить все
<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
Vlad1983
 
Сообщений: 4251
Зарегистрирован: 09 авг 2011, 11:51

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

Сообщение Troi » 01 июл 2013, 16:15

FS ругается.Похоже на эту функцию
Код: выделить все
${expr(${strepoch()}+${timeout})}"/>


тк. если написать "insert/away/1003/5> то в БД заносится 5. При комманде db select/away/1003 вылетает 5.


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


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

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

Сообщение Vlad1983 » 01 июл 2013, 18:08

прочитайте предыдущий пост ещё раз
где вы там увидели "${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
Vlad1983
 
Сообщений: 4251
Зарегистрирован: 09 авг 2011, 11:51

След.

Вернуться в FreeSwitch, SER, Yate и другие

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

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

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