我有一个 ODBC 函数,它从我的数据库中提取多个值并将它们存储在一个变量数组中。后来在拨号方案中我使用了那个变量,但是所有的双引号都被删除了——单引号没有被触及。如果我将值直接存储到变量(而不是数组)中,则会保留引号,但是逗号分隔的字符串当然不是很有用。
拨号方案:
exten => 123,1,Set(ARRAY(FOO,BAR)=${MY_FUNC()})
exten => 123,2,NoOp(The value is now '${FOO}')
exten => 123,3,Set(FOO=${MY_FUNC()})
exten => 123,4,NoOp(The value is now '${FOO}')
输出:
Executing [123@mycontext:1] Set("SIP/7040-0000105b", "ARRAY(FOO,BAR)=I am "testing" it,23") in new stack
Executing [123@mycontext:2] NoOp("SIP/7040-0000105b", "The value is now 'I am testing it'") in new stack
Executing [123@mycontext:3] Set("SIP/7040-0000105b", "FOO=I am "testing" it,23") in new stack
Executing [123@mycontext:4] NoOp("SIP/7040-0000105b", "The value is now 'I am "testing" it,23'") in new stack
我尝试将函数调用用引号括起来,我尝试在数据库级别添加反斜杠前缀。似乎没有任何效果,它们总是被删除。
按照下面的建议使用HASH
不会改变任何东西:
exten => 123,1,Set(HASH(FOO)=${MY_FUNC()})
exten => 123,2,NoOp(The value is now '${HASH(FOO,data1)}')
输出:
Executing [123@mycontext:1] Set("SIP/7040-00002bf9", "HASH(FOO)=I am "testing" it,23") in new stack
Executing [123@mycontext:2] NoOp("SIP/7040-00002bf9", "The value is now 'I am testing it'") in new stack
将数据存储在数组中不是必需的,但我从数据库中提取多个值并且需要在不破坏值的情况下访问它们,并且不诉诸多个函数,每个函数都提取一个值。