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

Callback средствами bash

Новичком считается только что прочитавший «Астериск - будущее телефонии»
http://asterisk.ru/knowledgebase/books
и пытающийся сделать большее

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

TVMaker
Сообщения: 134
Зарегистрирован: 05 сен 2013, 19:01

Callback средствами bash

Сообщение TVMaker »

Здравствуйте! Мне двадцать лет, я бородат, живу с мамой, тролль, лжец и девственник. Вот и сейчас... P.S. Извените за неровный почерк.! Реализовал у себя callback при помощи внешнего bash-скрипта. Пробовал на ПХП - так и не смог заставить работать конструкцию "mv tempfile .../outgoing/" - нехватка прав, видимо. А где их прописывать на бизибоксе синолоджи - бог его знает. Поэтому реализовал на bash. В общих чертах выглядит так: звоню с мобилы - скрипт отрабатывает, сбрасывает звонок, перезванивает.
Есть один недостаток - при вызове скрипта, формирующего call-файл, звонок не успевает сброситься (точнее, мобила не успевает отреагировать на сброс), как тут же летит входящий звонок. Это чревато пропущенным вызовом в списке звонящих на мобиле, но со второй попытки дозвона всё подхватывается. Пробовал в скрипте вставить sleep перед mv - так бестолку, ибо пока скрипт не выполнится - мой звонок не сбросится, хоть sleep 100 ставь - то же самое.
На ПХП можно сделать время создания файла "немного из будущего" - а можно ли на bash такое организовать? Про touch -t в курсе. А вот какой ему параметр передать - не догоняю. Нужно же прочесть текущее время, прибавить секунд несколько и применить к файлу - может, гуру bash'а подскажут, реально ли такое сделать?
Samael28
Сообщения: 1057
Зарегистрирован: 08 янв 2011, 18:32
Откуда: Киев
Контактная информация:

Re: Callback средствами bash

Сообщение Samael28 »

cron/fcron?
В течении минуты будет результат.
Ну а вообще проще разобраться с правами и юзать пехапе.
Мой профайл на Upwork
virus_net
Сообщения: 2337
Зарегистрирован: 05 июн 2013, 08:12
Откуда: Москва

Re: Callback средствами bash

Сообщение virus_net »

Можно просто в диалплане сделать Wait(5) и в callback файле набирать нужный котекст через Local, а там тебе и Wait и Dial
TVMaker писал(а): Про touch -t в курсе. А вот какой ему параметр передать - не догоняю.
Пример на PHP:

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

$cmd=sprintf("/usr/bin/touch -t %s /var/spool/asterisk/tmp/my_call_file",date("ymdHi.s",time()+10));
Соответственно на bash будет что то подобное:

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

time=`/bin/date +%y%m%d%H%M.%S`
/usr/bin/touch -t $time /var/spool/asterisk/tmp/my_call_file
мой SIP URI sip:virus_net@asterisk.ru
bitname.ru - Домены .bit (namecoin) .emc .coin .lib .bazar (emercoin)

ENUMER - звони бесплатно и напрямую.
TVMaker
Сообщения: 134
Зарегистрирован: 05 сен 2013, 19:01

Re: Callback средствами bash

Сообщение TVMaker »

Решил следующим образом, вставив перед mv:

dd=`eval date +%s`
let "dd += 600"
newtime=`date -d @$dd +'%y%m%d%H%M.%S'`
touch -t $newtime /opt/tmp/$2

Только почему-то данная конструкция работает "при педальном приводе" - то есть из cli всё как надо. При вызове из диалплана с помощью system не отрабатывает строчка touch -t. То есть файл создается, заполняется нужными строками, перемещается, а дата изменения остается прежней. При вызове скрипта из cli ручками с нужными параметрами ($1 - номер телефона, $2 - имя файла) всё отрабатывает корректно. У создаваемого call-файла все права root.
:cry:

PS. 600 секунд прибавляю для визуальности при отладке :)
Аватара пользователя
zzuz
Сообщения: 1658
Зарегистрирован: 21 сен 2010, 13:33
Контактная информация:

Re: Callback средствами bash

Сообщение zzuz »

Прочитал топик , бровь на макушку заползла от таких извращений. Крайне удивлен наличием отвечающих.
Линия24 - Системы Массового Телефонного Обслуживания
TVMaker
Сообщения: 134
Зарегистрирован: 05 сен 2013, 19:01

Re: Callback средствами bash

Сообщение TVMaker »

Простите, каких извращений? Что извратного в желании сделать отложенный колбэк? Способ? Что извратного в штатном bash? Знаете иной способ? Предложите.
Аватара пользователя
zzuz
Сообщения: 1658
Зарегистрирован: 21 сен 2010, 13:33
Контактная информация:

Re: Callback средствами bash

Сообщение zzuz »

Где там bash скрипт? При чем тут вообще астериск? Вы в линуксе обратиться к файлу не можете , а за колбеки браться решили.
Линия24 - Системы Массового Телефонного Обслуживания
virus_net
Сообщения: 2337
Зарегистрирован: 05 июн 2013, 08:12
Откуда: Москва

Re: Callback средствами bash

Сообщение virus_net »

TVMaker писал(а): У создаваемого call-файла все права root.
ну а asterisk от какого пользователя запущен ?
ну и на закуску
мой SIP URI sip:virus_net@asterisk.ru
bitname.ru - Домены .bit (namecoin) .emc .coin .lib .bazar (emercoin)

ENUMER - звони бесплатно и напрямую.
TVMaker
Сообщения: 134
Зарегистрирован: 05 сен 2013, 19:01

Re: Callback средствами bash

Сообщение TVMaker »

И астер от рута (знаю, что так стремно). Если есть права на создание call-файла и его перемещение, то должны быть и на изменение свойств времени... Весь день гуглю, ничего не выгуглил полезного :?
virus_net
Сообщения: 2337
Зарегистрирован: 05 июн 2013, 08:12
Откуда: Москва

Re: Callback средствами bash

Сообщение virus_net »

ты прочел статью по линку ?
virus_net писал(а):ну и на закуску
Исходя из:
TVMaker писал(а):touch -t $newtime /opt/tmp/$2
TVMaker писал(а):И астер от рута
то мне кажется ты наступаешь на те же грабли, которые описаны в статье и в которой озвучены уже два решения проблемы
мой SIP URI sip:virus_net@asterisk.ru
bitname.ru - Домены .bit (namecoin) .emc .coin .lib .bazar (emercoin)

ENUMER - звони бесплатно и напрямую.
Ответить
© 2008 — 2025 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH