Помогите - убился уже, не могу понять, где с типом напутано.
Нужно проверить зарегистрирован ли номер. Проверяю по наличию в базе записи SIP/Registry
Хочу считать из базы адрес и проверить, если пусто, то соответственно не зарегистрирован.
exten => s,n,NoOp(DB(SIP/Registry/2501) = $[DB(SIP/Registry/2501)])
exten => s,n,GotoIf($[${ISNULL(DB(SIP/Registry/2501))}]?error:ok)
В консоли получаю:
[Apr 25 09:59:40] WARNING[9372][C-00000002]: ast_expr2.y:1497 op_div: non-numeric argument
[Apr 25 09:59:40] NOTICE[9372][C-00000002]: ast_expr2.y:763 compose_func_args: argbuf allocated 26 bytes;
[Apr 25 09:59:40] NOTICE[9372][C-00000002]: ast_expr2.y:782 compose_func_args: argbuf uses 1 bytes;
[Apr 25 09:59:40] WARNING[9372][C-00000002]: func_db.c:146 function_db_read: DB requires an argument, DB(<family>/<key>)
-- Executing [s@jabber-messages:19] NoOp("Message/ast_msg_queue", "DB(SIP/Registry/2501) = 0") in new stack
-- Executing [s@jabber-messages:20] GotoIf("Message/ast_msg_queue", "0?error:ok") in new stack
В базе есть запись:
/SIP/Registry/2501 : 172.16.2.11:65285:120sip:2501@172.16.2.11:65285;rinstance=411e5038976e2296
Кавычил и "2501" и полностью "SIP/Registry/2501", во втором варианте получаю в консоль немного другое:
[Apr 25 10:05:34] NOTICE[9372][C-00000002]: ast_expr2.y:763 compose_func_args: argbuf allocated 20 bytes;
[Apr 25 10:05:34] NOTICE[9372][C-00000002]: ast_expr2.y:782 compose_func_args: argbuf uses 19 bytes;
[Apr 25 10:05:34] WARNING[9372][C-00000002]: func_db.c:146 function_db_read: DB requires an argument, DB(<family>/<key>)
-- Executing [s@jabber-messages:19] NoOp("Message/ast_msg_queue", "DB("SIP/Registry/2501") = 0") in new stack
-- Executing [s@jabber-messages:20] GotoIf("Message/ast_msg_queue", "0?error:ok") in new stack
Пробовал использовать DB_EXISTS(family/key) для проверки наличия ключа - оно правильней все-таки, но тоже самое происходит.
Но хрен редьки не слаще. В чем может быть проблема?