суббота, 7 ноября 2009 г.

FreeSWITCH, сервис эха.

Обычно эхо делается так:

  • приветствуем

  • бибикаем

  • портим текст записываем в файл

  • бибикаем

  • проигрываем файл

  • откладываем скрипку прощаемся



Во FreeSWITCH есть более изящный вариант - приложение delay_echo. Единственный параметр это длительность задержки (буфера) перед воспроизведением звука обратно. Буфер размещается в памяти, диск не дергается, система не упирается в диск, но любит память. По моему восхитительно, учитывая еще и необходимость файлы стирать.


 1     <extension name="delay_echo">
 2       <condition field="destination_number" expression="^echo123$">
 3         <action application="answer"/>
 4         <action application="sleep" data="1000"/>
 5         <action application="playback" data="/opt/freeswitch/sounds/ru/RU/elena/voicemail/8000/vm-greeting.wav"/>
 6         <action application="playback" data="/opt/freeswitch/sounds/ru/RU/elena/voicemail/8000/vm-record_message.wav"/>
 7         <action application="sleep" data="1000"/>
 8         <action application="gentones" data="%(200,0,800)"/>
 9         <!--action application="sched_broadcast" data="+10 gentones::%(200,0,800)"/-->
10         <action application="sched_transfer" data="+20 after_echo XML public"/>
11         <action application="delay_echo" data="10000"/>
12       </condition>
13     </extension>
14
15     <extension name="delay_echo_next">
16       <condition field="destination_number" expression="after_echo">
17         <action application="sleep" data="1000"/>
18         <action application="playback" data="/opt/freeswitch/sounds/ru/RU/elena/voicemail/8000/vm-goodbye.wav"/>
19         <action application="sleep" data="1000"/>
20         <action application="hangup"/>
21       </condition>
22     </extension>
23