Вы должны понимать, как работают звёздные каналы.
У него две ноги.
Одна нога вызывает одного (A), другая (B) может перейти на план набора и / или звонящего..
Когда ответивший ответ А ответил, он идет В и соединяется
Что делает макрос в вызове.Это задерживает мост, вместо этого выполняйте свои операции (да, может быть любой, включая AMD).Когда операции заканчиваются, он проверяет состояние и мост, если только вы не настроили выходную переменную MACRO_RESULT
MACRO_RESULT - If set, this action will be taken after the macro finished executing.
ABORT - Hangup both legs of the call
CONGESTION - Behave as if line congestion was encountered
BUSY - Behave as if a busy signal was encountered
CONTINUE - Hangup the called party and allow the calling party to continue dialplan execution at the next priority
GOTO:[[<CONTEXT>^]<EXTEN>^]<PRIORITY> - Transfer the call to the specified destination.
Таким образом, у вас есть два варианта
- делать AMD в макросе, если это не подходит для вас (машинаили что-то в этом роде), установите MACRO_RESULT на BUSY или CONGESTION
- do AMD в диалплане ветви B (не используйте макрос), если для вас все в порядке, наберите номер агента.
Большинство звонилки используютВторой вариант, потому что это проще для мониторинга.
Вы можете прочитать код номеронабирателей с открытым исходным кодом, как Vicidial или Wombat.Вы также можете лицензировать ядро.
PS ДЕЙСТВИТЕЛЬНО много проблем при написании собственного ядра.