Как стать автором
Обновить
24
0
Михаил @j3st3r

Пользователь

Отправить сообщение
Да, можно, используя флаг «vol».
Вот описание:
on starting command line, param --vol YYY, double millibels, default 0, range [-6000:0]
by stdin interface, sending ± to omxplayer will increase/decrease volume for 300 dmbels
with DBUS interface, cmd 'set volume', value double:XXX, default 1, range [0:1]
xxx to yyy relation is: XXX = 10 ^ (YYY / 2000)… according to omxplayer.cpp source code, reverse formula would be: YYY = 2000 * (log XXX).

so if we need:

volume 1%, XXX=0.01 and YYY=-4000 (10^(-4000/2000)=10^-2=0.01
volume 10%, XXX=0.1 and YYY=-2000 (10^(-2000/2000)=10^-1=0.1
volume 50%, XXX=0.5 and YYY=-602 (10^(-602/2000))~=0.5
volume 100%, XXX=1 and YYY=0 (10^(0/2000)=10^0=1)
volume 150%, XXX=1.5 and YYY=352… (for boost test, normal values are <=100%)
По большому счету вы правы. В случае с динамиком — показано как настроить мультикаст на него с нужными приоритетами. В случае raspberry — Asterisk контролирует работу omxplayer'a, однако для этого asterisk и нужен, он контролирует когда играть музыку, а когда говорить оператору.

Цель статьи же в том, чтобы показать, насколько разноплановым может быть asterisk, не просто банальной звонилкой, лично мне было очень интересно это реализовывать, чей я и поделился с сообществом.
Даже любопытно, насколько корректно вообще пиарить в комментах проприетарную софтину? Давайте чтоли обсудим, как быстро то же самое на Asterisk'e поднять можно?
С позволения автора отвечу. Так устроен FreePBX: все данные о sip-регистрациях он хранит в MySQL. Если точнее, то в БД asterisk, таблица sip.
Хинты относятся к каналам, на каких они работают, к примеру если sip, то chan_sip.so
Вот офф. документация
Вообще я предерживаюсь точки зрения, что документации по любому функционалу Asterisk вполне достаточно (ну разве что по DPMA порой не совсем полные конфиги), про odbc можно почитать например тут
MYSQL app deprecated уже в 11 астере.
ODBC — значительно проще и универсальнее (до тех пор пока в топик не залезет уважаемый antirek и не начнет говорить про agi:)
Чтоб долго не мучаться, вот пример, я тут вытаскиваю имя из базы по CALLERID:

В файле /etc/odbcinst.ini прописываем пути для драйверов (это для убунты, для центоса разница в путях к библиотекам будет):
[MySQL]
Description = MySQL driver
Driver = /usr/lib/x86_64-linux-gnu/odbc/libmyodbc.so
Setup = /usr/lib/x86_64-linux-gnu/odbc/libodbcmyS.so
CPTimeout =
CPReuse =

;;Centos, разница в названии библиотек и путях
[MySQL]
Description = ODBC for MySQL
Driver = /usr/lib/libmyodbc3.so
Setup = /usr/lib/libodbcmyS.so
FileUsage = 1

В файле /etc/odbc.ini описываем параметры odbc-подключения:

[asterisk-barrier]
Driver = MySQL
Description = Connector/ODBC 3.51 Driver DSN
Server = localhost
Port = 3306
User = root
Password = VeryStrongPassword
Database = barrier
Socket = /var/run/mysqld/mysqld.sock
Charset = utf8

В файле /etc/asterisk/res_odbc.conf описываем параметры odbc-подключения:

[asterisk-barrier]
enabled => yes
dsn => asterisk-barrier
username => root
password => VeryStrongPassword
pooling => no
limit => 1
pre-connect => yes

В func_odbc.conf пишем функцию, которая будет искать в MySQL номер вызывающего абонента и возвращать нам его имя

[MOBILE]
dsn=asterisk-barrier
readsql=SELECT name FROM numbers WHERE phone = '${CALLER}'

и в диалплане что-то типа:

exten => s,1,Set(CALLER=${CALLERID(num)})
same => n,Set(result=${ODBC_MOBILE()}) ;;looking for phone number is mysql, return id
same => n,Set(foo=${ISNULL(${result})}) ;;isnull — is there a number in mysql? 1 or 0
same => n,GotoIf($["${foo}" = «0»]?true:false)
Имхо не совсем корректно юзать ODBC и команду диалплана MYSQL, надо тогда все запросы и писать в рамках ODBC. А может и вообще вынести всю логику на сторону AGI, что крайне котирует уважаемый antirek :)

PS Ждем следующей статьи с кодом админки:)
L-диапазон (рабочая частота 700-1000 нм).


Поправьте нуба в физике, если не прав, но с каких пор частота в нанометрах меряется?
К сожалению вопрос технического оснащения шлагбаумов gsm-модулями для меня пока темный лес, поинтересуюсь у заказчика, надеюсь они более подкованы, сообщу вам если будет какая-то инфа.
Добрый день, спасибо за положительный отзыв.

Залил на гитхаб, вот тут.

По поводу
Еще для разработки прикладных вещей на астериске мне кажется удобнее использовать AGI, а не ODBC

имхо, если единственное назначение скрипта коннектиться к базе и брать оттуда одно значение, то AGI становится просто лишним звеном, нецелесообразно. В вашей статье все-таки у скриптов есть логика помимо коннекта к базе, у вас это целесообразно. Ну и немаловажно, что вам, как программисту, удобно вынести логику в программирование, мне, как нубу в программировании — это гораздо сложнее:)
Планируете ли вы еще другим клиентам ставить такие системы?
в том виде, в котором это сейчас существует, это не коробочный продукт, который заинтересовал бы заказчика, но идеи по развитию проекта безусловно есть:)
Спасибо большое, не знал
Да, спасибо, немаловажный момент. Забыл отметить, что на симке подключены самые дешевые услуги рассылки, снимается порядка 1р в день и симка не блокируется.
Большое спасибо за комментарии к коду, очень полезно в моем случае, когда знаешь php чуть меньше, чем совсем не знаешь, потестирую с вашими изменениями:)
к сожалению моего знания php хватает только на такие запросы, был бы благодарен, если бы подсказали как правильно это делать
В самом начале статьи я писал:
Изначально на вашем сервере должны быть удовлетворены следующие зависимости:

python 2.7+
python-all-dev
Zabbix 2.4+
asterisk 1.8+
argparse 1.2.1+
pexpect 3.3+
posix-ipc 0.9.9+
wsgiref 0.1.2+

Не понимает name for name in find_commands
какая у вас версия питона? покажите вывод python --version

Пожалуйста. Рад, что вам пригодилось:)
А, теперь понял. Нет, к сожалению, пока это невозможно, скрипты смотрят только статус «registered» и отличные от него. Постараемя решить, как можно реализовать интересующий вас функционал:)
1

Информация

В рейтинге
Не участвует
Откуда
Дубна, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность