Команда Asterisk GotoIf неправильно попадает в ветку

#asterisk #dialplan

Вопрос:

Это код в моем файле .conf для asterisk freepbx, который я точно знаю, заблокирован, это правда

 same => n,Noop(${Blocked})
same => n,GotoIf($["${Blocked}"=="TRUE"]?blah-ivr-v5-difficulties,s,1)
same => n,Noop("The code reaches here and doesnt hit the context at the top but its value is true")
 

Это журналы из asterisk, в которых говорится, что заблокировано, это правда

 [2021-10-28 11:53:08] VERBOSE[11267][C-001e313b] pbx.c: Executing [s@blah-ivr-v5-pinreset-2:11] NoOp("SIP/blah-00245082", "true") in new stack

[2021-10-28 11:53:08] VERBOSE[11267][C-001e313b] pbx.c: Executing [s@blah-ivr-v5-pinreset-2:12] GotoIf("SIP/blah-00245082", "0?blah-ivr-v5-difficulties,s,1") in new stack
 

Есть идеи, почему она не разветвляется правильно?

Комментарии:

1. Пожалуйста, позаботьтесь о том, чтобы правильно помечать свои вопросы. Этот вопрос не имеет ничего общего с PHP или FreePBX.

Ответ №1:

К сожалению, asterisk ничего не знает о машинном обучении и т. Д. И Не думает, что

 "true" == "TRUE"
 

В этом случае оба являются строками, причем строками с заглавными буквами, отличными от строчных строк (см. Таблицу UTF-8).

Более того, логическое значение asterisk равно 1 (целое число)

https://unicode-table.com/en/

http://www.asteriskdocs.org/en/2nd_Edition/asterisk-book-html-chunk/asterisk-APP-B-89.html

https://wiki.asterisk.org/wiki/display/AST/Manipulating Переменные Основы