Как я могу выполнить некоторые действия перед захватом файлов вызовов в Astersik?

#asterisk

#asterisk

Вопрос:

Я использую файл вызовов в asterisk для автоматического набора номера. Как я могу выполнить некоторые действия перед вызовом? В asterisk есть обработчик предварительного набора, но он работает с приложением dial или FollowMe. обратите внимание, что я использую call file.

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

1. Почему бы вам просто не создать специальный контекст для ваших файлов вызовов, чтобы выполнять ваши действия перед фактическим подключением к одноранговому узлу?

2. Я новичок в asterisk. сначала asterisk вызывает получателя, а затем выполняет команды расширений. Это правильно? как я могу выполнять команды в контексте перед вызовом?

Ответ №1:

Создайте новый контекст для выполнения команд перед вызовом, например:

 [precall]

exten => _X.,1,NoOp(Precall processing)
same => n,System(echo ${EXTEN} call >> /tmp/call.log)
same => n,Dial(SIP/${EXTEN})
  

А затем в вашем файле вызовов:

 Channel: Local/1000@precall
Context: from-internal
Extension: 2000
  

В этом случае:

  • Asterisk запустится в precall контексте с расширением 1000,1
  • Он выполнит echo 1000 call >> /tmp/call.log системную команду
  • Вызываю SIP/1000 и жду ответа
  • При SIP/1000 ответе на вызов Asterisk переходит к from-internal контексту, расширению 2000,1
  • Если у вас обычная конфигурация, она наберет номер 2000