Добрый день. Есть система на настроенным 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,567 раз
Обновлен: 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 )редактировать