В процессе настройки Asterisk возникает необходимость совершить ряд тестовых звонков. Поделюсь с вами набором extension’ов, которые используются мною.
[echo-test]
exten => 801,1,Playback(demo-echotest)
exten => 801,2,Echo
exten => 801,3,Playback(demo-echodone)exten => 802,1,Ringing()
exten => 802,n,Wait(3)
exten => 802,n,Answer()
exten => 802,n,Playback(dir-multi3)
exten => 802,n,Wait(1)
exten => 802,n,agi(googletts.agi,${CALLERID(num)},ru)
exten => 802,n,Wait(1)
exten => 802,n,agi(googletts.agi,"Канал.",ru)
exten => 802,n,Wait(1)
exten => 802,n,agi(googletts.agi,${CHANNEL},en)
exten => 802,n,Wait(1)
exten => 802,n,Set(encryption="Этот канал зашифрован.")
exten => 802,n,GotoIF($["${CHANNEL(secure_signaling)}" != "1"]?insecure)
exten => 802,n,GotoIF($["${CHANNEL(secure_media)}" != "1"]?insecure)
exten => 802,n(playencryption),agi(googletts.agi,${encryption},ru)
exten => 802,n,Wait(1)
exten => 802,n,agi(googletts.agi,"Вы переключаетесь в режим эхо-теста. Произнесите контрольную фразу и нажмите клавишу с символом решетки.",ru)
exten => 802,n,Record(/tmp/802-${UNIQUEID}.wav,0,30)
exten => 802,n,agi(googletts.agi,"Прослушайте свою контрольную фразу.",ru)
exten => 802,n,Playback(/tmp/802-${UNIQUEID})
exten => 802,n,System(rm /tmp/802-${UNIQUEID}.wav)
exten => 802,n,Wait(1)
exten => 802,n,Playback(demo-echodone)
exten => 802,n,Hangup()
exten => 802,n(insecure),Set(encryption="Этот канал незашифрован.")
exten => 802,n,Goto(playencryption)exten => 803,1,Answer
exten => 803,n,MusicOnHold()
exten => 803,n,Hangup()exten => 804,1,agi(googletts.agi,"Ждите звонка.",ru)
exten => 804,n,System(/etc/asterisk/scripts/echo-callback.sh ${CALLERID(num)} &)
exten => 804,n,Hangup()
Возможно вы заметили, что в предложенном плане нумерации используется синтезатор речи Google. Для тех, кто предпочитает стандартный (core-sounds) и расширенный (extra-sounds) набор звуков Asterisk существует другая редакция:
[echo-test]
exten => 801,1,Playback(demo-echotest)
exten => 801,2,Echo
exten => 801,3,Playback(demo-echodone)exten => 802,1,Ringing()
exten => 802,n,Wait(3)
exten => 802,n,Answer()
exten => 802,n,Playback(dir-multi3)
exten => 802,n,Wait(1)
exten => 802,n,SayDigits(${CALLERID(num)})
exten => 802,n,Wait(1)
exten => 802,n,Playback(channel)
exten => 802,n,Wait(1)
exten => 802,n,SayAlpha(${CHANNEL})
exten => 802,n,Wait(1)
exten => 802,n,Set(encryption=channel-secure)
exten => 802,n,GotoIF($["${CHANNEL(secure_signaling)}" != "1"]?insecure)
exten => 802,n,GotoIF($["${CHANNEL(secure_media)}" != "1"]?insecure)
exten => 802,n(playencryption),Playback(${encryption})
exten => 802,n,Wait(1)
exten => 802,n,Playback(demo-echotest)
exten => 802,n,Record(/tmp/802-${UNIQUEID}.wav,0,30)
exten => 802,n,Playback(system-status-msg)
exten => 802,n,Playback(/tmp/802-${UNIQUEID})
exten => 802,n,System(rm /tmp/802-${UNIQUEID}.wav)
exten => 802,n,Wait(1)
exten => 802,n,Playback(demo-echodone)
exten => 802,n,Hangup()
exten => 802,n(insecure),Set(encryption=channel-insecure-warn)
exten => 802,n,Goto(playencryption)exten => 803,1,Answer
exten => 803,n,MusicOnHold()
exten => 803,n,Hangup()exten => 804,1,Playback(thank-you-for-calling)
exten => 804,n,System(/etc/asterisk/scripts/echo-callback.sh ${CALLERID(num)} &)
exten => 804,n,Hangup()
Оба варианта идентичны, различия только в способе озвучивания событий.
Дадим некоторые пояснения, что делает каждый из extension’ов. 801 – стандартный эхо-тест встроенными средствами Asterisk. Т.е. вы в реальном времени но с некоторой задержкой слышите все, что говорите в микрофон. Основной недостаток данного теста заключается в том, что в нем может возникать самовозбуждение голосового канала.
802 – самый комплексный эхо-тест из представленных. При звонке первоначально проговаривается номер звонящего, идентификатор канала и зашифрована ли передача голоса. Затем записывается и проигрывается некоторая контрольная фраза. Этот тест полезен для оценки качества записи и воспроизведения голоса на абонентском терминале и при внедрении SIP TLS + SRTP.
803 – просто проигрывает музыку, которая используется при удержании звонков, до тех пор, пока абонент не положит трубку. Удобно использовать в тех случаях, когда вам необходимо, что бы звонок длился долгое время, пока вы его сами не прервете. Например, что бы выяснить какие-либо детали в CLI Asterisk.
804 – это эхо-тест из 802 совмещенный с обратным звонком. Т.е. абонент набирает 804, его благодарят за звонок и кладут трубку. Приблизительно через 10 секунд Asterisk сам перезванивает и запускает эхо-тест. Такая процедура может понадобиться для отладки входящих звонков до SIP-клиента через NAT или при внедрении SIP TLS + SRTP.
Далее следует текс shell-скрипта, который генерирует .call-файл для исходящего звонка Asterisk. В нем вам следует, как минимум, исправить контекст плана нумерации в строке "Channel:".
#!/bin/sh
NUMBER=$1sleep 10
echo "Channel: Local/${NUMBER}@staff
CallerID: Echo test
MaxRetries: 1
RetryTime: 10
WaitTime: 30
Account: 802
Context: echo-test
Extension: 802
Priority: 1
AlwaysDelete: Yes" >/var/spool/asterisk/tmp/${NUMBER}mv /var/spool/asterisk/tmp/${NUMBER} /var/spool/asterisk/outgoing/${NUMBER}
exit 0
Вот архив для скачивания с предлагаемым планом нумерации и shell-скриптом.
простой эхотест:
exten => 5,1,Answer
exten => 5,n,Wait(1)
exten => 5,n,agi(googletts.agi,"Говори после сигнала.",ru)
exten => 5,n,Wait(1)
exten => 5,n,agi(googletts.agi,"Пиииииии.",ru)
exten => 5,n,Set(filename=echotest_${STRFTIME(${EPOCH},,%Y%m%d)}_${STRFTIME(${EPOCH},,%H%M%S)}_${CALLERID(name)}_${EXTEN}.wav)
exten => 5,n,MixMonitor(/var/spool/asterisk/monitor/${filename})
exten => 5,n,Wait(5)
exten => 5,n,StopMixMonitor
exten => 5,n,Wait(1)
exten => 5,n,Playback(/var/spool/asterisk/monitor/${filename:0:-4})
exten => 5,n,Hangup
Тоже хороший вариант 💡