Прежде всего, может показаться, что вы не совсем понимаете, как работает диалплан Asterisk. Кодовый блок, который вы поставили, просто неверен, Asterisk не будет жаловаться - так как диалплан не должен этого делать.
Давайте рассмотрим по одному:
[macro-queue]
exten => s, 1, Queue(${ARG1})
[default]
exten => s, 1, Answer
exten => s/9999, 2 ,Hangup
exten => s, 2, BackGround(welcome)
exten => s, 3, Macro(queue,operator)
Причина, по которой вышеприведенное неверно, заключается в том, что вы не можете поместить соответствие CALLERID в одну строку расширения - оно должно быть полностью Технически вам понадобится:
[macro-queue]
exten => s, 1, Queue(${ARG1})
[default]
exten => s/9999, 1, Answer
exten => s/9999, 2 ,Hangup
exten => s/9999, 2, BackGround(welcome)
exten => s/9999, 3, Hangup
exten => s, 1, Answer
exten => s, 2 ,Hangup
exten => s, 2, BackGround(welcome)
exten => s, 3, Macro(queue,operator)
Так вот, это неправильный способ сделать это - просто потому, что вы будете повторять строки снова и снова. Правильный способ сделать это очень похож на предыдущий ответ, однако, это то, что я бы сделал:
exten => s, 1, Answer
exten => s, n, Gotoif($["${CALLERID(num)}" = "9999"]?reject:continue)
exten => s, n(continue), Background(Welcome)
exten => s, n, Macro(queue, operator)
exten => s, n(reject), Hangup()
Теперь вы можете расширять различные номера CALLERID, которые хотите заблокировать. Опять же, предполагая, что это результат, которого вы хотели достичь.