Добрый день. Есть система на настроенным frePBX 14. ODBC настроен и работает. логи пишутся. При попытке создать функцию в func_odbc.conf, увидел, что такого файла нет. Создал его вручную, прописал туда функцию в формате
[SET_CALLED] dsn=MySQL-asterisk writesql=UPDATE queue_log set called='1' where id='${ARG1}'
После чего попытался презагрузить модуль. Появилась ошибка о том, что модуль не загружен
pbx*CLI> module reload func_odbc.so The module 'func_odbc.so' was not properly initialized. Before reloading the module, you must run "module load func_odbc.so" and fix whatever is preventing the module from being initialized.
После попытки загрузить модуль получил ошибку
pbx*CLI> module load func_odbc.so Unable to load module func_odbc.so Command 'module load func_odbc.so' failed. [2018-01-15 13:33:28] ERROR[19284]: pbx_functions.c:394 __ast_custom_function_register: Function ODBC_FETCH already registered. [2018-01-15 13:33:28] WARNING[19284]: pbx_app.c:117 ast_register_application2: Already have an application 'ODBCFinish' == Parsing '/etc/asterisk/func_odbc.conf': Found == Registered custom function 'ODBC_SET_CALLED' [2018-01-15 13:33:28] ERROR[19284]: pbx_functions.c:394 __ast_custom_function_register: Function SQL_ESC already registered. [2018-01-15 13:33:28] WARNING[19284]: cli.c:2263 __ast_cli_register: Command 'odbc write' already registered (the same ast_cli_entry) [2018-01-15 13:33:28] WARNING[19284]: cli.c:2263 __ast_cli_register: Command 'odbc read' already registered (the same ast_cli_entry)
После чего такая функция в системе появляется
pbx*CLI> core show function ODBC_SET_CALLED -= Info about function 'ODBC_SET_CALLED' =- [Synopsis] Runs the referenced query with the specified arguments [Description] Runs the following query, as defined in func_odbc.conf, performing substitution of the arguments into the query as specified by ${ARG1}, ${ARG2}, ... ${ARGn}. The values are provided either in whole as ${VALUE} or parsed as ${VAL1}, ${VAL2}, ... ${VALn}. This function may only be set. SQL: UPDATE `queue_log` SET `called`='1' WHERE `id`='${ARG1}' [Syntax] ODBC_SET_CALLED(<arg1>[...[,<argN>]]) [Arguments] Not available [See Also] Not available
Но при её вызове в диалплане появляется ошибка о том, что невозможно вызвать данныую функцию. При этом сам модуль func_odbc не запущен
pbx*CLI> module show like func_odbc.so Module Description Use Count Status Support Level func_odbc.so ODBC lookups 0 Not Running core 1 modules loaded
Не могу понять, в чем может быть ошибка и почему не запускается модуль. Подскажите, пожалуйста
Задан: 2018-01-15 15:41:41 +0400
Просмотрен: 1,732 раз
Обновлен: Jan 16 '18
Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией GNU GPL.
res_odbс.so где?
zzuz ( 2018-01-15 17:02:14 +0400 )редактироватьв чем угодно. почему вы заекранировали неревалентный вывод и не заекранировали реально нужный конфиг? почему у вас в конфиге одна строчка?каждая функция должна быть задекларирована минимум двумя.
meral ( 2018-01-16 19:28:31 +0400 )редактироватьМодуль res_odbc.so есть
pbx*CLI> module show like resodbc.so Module Description Use Count Status Support Level resodbc.so ODBC resource 0 Running core 1 modules loaded
meral, не уверен, что понял, какой именно конфиг я не написал ?
A66aT ( 2018-01-17 12:01:54 +0400 )редактировать/etc/asterisk/resconfigodbc.conf
meral ( 2018-01-18 12:35:21 +0400 )редактироватьУ меня FreePBX, так что конфиг хранится в /etc/asterisk/resodbcadditional.conf
[asteriskcdrdb] enabled=>yes dsn=>MySQL-asteriskcdrdb pre-connect=>yes max_connections=>5 username=>freepbxuser password=>password database=>asteriskcdrdb
Сам по себе ODBC работает, данные в таблицу CDR пишутся через него. У меня возникла проблема при попытке добавить кастомную функцию в Астериск
A66aT ( 2018-01-22 12:52:52 +0400 )редактироватьв freepbx нет такой проблемы. очевидно ваша проблема состоит в том, что вы не читаете документацию. попробуйте функцию из документации. Она неожиданно будет работать. Потом сравните со своей.
meral ( 2018-01-22 20:59:03 +0400 )редактировать