Я пытаюсь использовать свой диалплан для воспроизведения записей с помощью WaitForSilence, чтобы убедиться, что он ждет, пока человек не закончит говорить или сообщение не останется в голосовой почте. Однако, похоже, он не ждет 5 секунд тишины. Даже если я говорю, он все равно обнаружит тишину.
Мой план набора AEL таков:
100 => {
Answer();
WaitForSilence(5000,2,60);
AGI(agi://127.0.0.1/playmessage,${CALLID});
AGI(agi://127.0.0.1/saytext,"Goodbye.");
Hangup();
}
Выходы
== Using SIP RTP CoS mark 5
> Channel SIP/twilio-0000006e was answered
-- Executing [100@makeCall:1] Answer("SIP/twilio-0000006e", "") in new stack
-- Executing [100@makeCall:2] WaitForSilence("SIP/twilio-0000006e", "5000,2,60") in new stack
-- Waiting 2 time(s) for 5000 ms silence with 60 timeout
-- Exiting with 5000ms silence >= 5000ms required
-- Exiting with 5000ms silence >= 5000ms required
-- Executing [100@makeCall:3] AGI("SIP/twilio-0000006e", "agi://127.0.0.1/playmessage,45") in new stack
-- Playing '/var/nam/data/outgoing/60' (escape_digits=#) (sample_offset 0)
> 0x7f2179cf7990 -- Probation passed - setting RTP source address to 54.172.61.251:18920
-- Playing '/var/nam/data/tts/9eccb3f2ed77972157becdfbbac7232c' (escape_digits=1#) (sample_offset 0)
-- <SIP/twilio-0000006e>AGI Script agi://127.0.0.1/playmessage completed, returning 4
== Spawn extension (makeCall, 100, 3) exited non-zero on 'SIP/twilio-0000006e'
Даже если я добавлю AMD (), он всегда будет определять все как машину и все равно не будет слушать тишину. Что-то не так в моей конфигурации, что Asterisk не знает, что такое тишина?
Или я неправильно понимаю, как ждать тишины, чтобы начать воспроизведение сообщения?
Спасибо за вашу помощь. Наконец, я где-то читал, что запись звонков может быть полезной, поэтому я начал использовать приложение Monitor (). Наконец, я обнаружил, что Asterisk не слушание для тишины до после он проиграл запись первый. Я обнаружил это, осознав, что Monitor () не начинал запись, пока что-то не было воспроизведено Asterisk, а не когда другая сторона начала говорить.
Чтобы исправить это, я просто проиграл минуту тишины перед ожиданием:
100 => {
Answer();
// Monitor(wav,"playback-${CALLID}",m);
Playback(silence/1);
WaitForSilence(1000,1,60);
AGI(agi://127.0.0.1/playmessage,${CALLID});
AGI(agi://127.0.0.1/saytext,"Goodbye.");
Hangup();
}
Вы можете увидеть выше мой простой код с закомментированным Monitor (). Вышеуказанные работы просто хорошо для автоответчиков тоже.
Дождитесь тишины, и оба они ждут периода, когда нет значительного звука
Так что на вашем канале всегда ЕСТЬ звук.
Скорее всего причина - некачественная линия.
Вы можете попробовать исправить это, изменив порог тишины.
Для AMD это последний параметр
AMD([|initialSilence][|greeting][|afterGreetingSilence][|totalAnalysisTime][|minimumWordLength][|betweenWordsSilence][|maximumNumberOfWords][|silenceThreshold])
В новых версиях вы также можете изменить порог в dsp.conf
Если вы установите это значение достаточно высоко, он будет думать, что тишина всегда. Так что вам нужно поэкспериментировать.