При первичной настройке Asterisk или дальнейшей отладке очень часто может возникнуть потребность в совершении звонка без использования физического телефона или софтфона.
К примеру, изменились настройки фаерволла, транка или экстеншена и необходимо при каждом изменении совершать тестовые исходящие звонки. Подобную функцию выполняет команда «Dial», но в данном случае необходимо создать так называемый «call» файл, просто текстовый файл, который содержит следующие строки:
Channel: SIP/flowroute/84951112233 MaxRetries: 1 RetryTime: 60 WaitTime: 30 Context: test_forcall Extension: 1 Priority: 1 Set: variablename=variablevalue CallerID: Test <84954445566>
Первая строчка определяет канал, который будет использоваться для совершения вызова и экстеншен, в данном случае – любой номер телефона, в данном примере 84951112233. Следующая строка – параметр, определяющий сколько раз Asterisk произведет попыток вызова на данный номер. Далее – временной интервал между вызовами и начальное время ожидания перед первым звонком. Параметр «Context» отвечает соответственно за контекст, через который пойдет вызов, экстеншен и приоритет.
Кроме того, можно настроить CallerID (номер вызывающего абонента), в данном случае - Test <84954445566>.
Для того, что бы Астериск прочел и использовал .call файл, его необходимо поместить в директорию /var/spool/asterisk/outgoing/ - важно, что он должен быть именно перемещён в неё с помощью команды «mv», а не создан в самой директории. Кроме того, необходимо, что бы Астериск имел достаточно прав для того, чтобы удалить этот файл после использования.
Суммируя вышесказанное, необходимо:
- Создать .call файл с необходимым наполнением
- Настроить необходимые разрешения с помощью команды chmod
chmod 777 callfile.call
3. Переместить файл в директорию для его исполнения командой mv
mv callfile.call /var/spool/asterisk/outgoing/
Так как файл совершает вызов с использованием контекста, экстеншена и приоритета, ниже приведён пример контекста, который использовался для данного примера:
[test_forcall] exten => 1,1,Answer() exten => 1,n,Record(/home/test/asterisk_sounds/rec/incoming_call.gsm,5,30) exten => 1,n,Playback(vm-goodbye) exten => 1,n,Hangup()
В описании данного контекста нет никакой специфики, кроме того что необходимо зарегистрировать экстеншен с номером 1, так как через него идет вызов (.call файл в начале статьи).
Если изменить дату создания .call файла, то Asterisk совершит вызов в указанный момент. Для этого используется команда touch, как указано ниже.
touch -t YYYYMMDDHHMM.SS filename // формат использования команды
touch -t echo date('YmdHi'); .00 callfile.call // изменение даты файла так, что Asterisk совершит вызов echo date('d'); function getMonthRus($num_month = false){ if(!$num_month){ $num_month = date('n'); } $monthes = array( 1 => 'января', 2 => 'февраля', 3 => 'марта', 4 => 'апреля', 5 => 'мая', 6 => 'июня', 7 => 'июля', 8 => 'августа',9 => 'сентября', 10 => 'октября', 11 => 'ноября', 12 => 'декабря' ); $name_month = $monthes[$num_month]; return $name_month; } echo getMonthRus(); echo date('Y'); года в echo date('H:i'); .
Это если Вы решите позвонить прямо сейчас :)
Если необходимо проверить список файлов, которые ожидают исполнения, необходимо ввести следующую команду:
ls --full-time /var/spool/asterisk/outgoing/
Таким образом, можно генерировать файлы для совершения автодозвона в целях тестирования, в любое необходимое время – к примеру, можно проверять работоспособность АТС в критичные моменты.