пятница, 18 ноября 2016 г.

FreeSWITCH: меняем правила voicemail

Пробема с voicemail в том, что диалог вписан в код. Если требуется чуть изменить текст - можно менять фразы, штатно это файлы
/etc/freeswitch/lang/%lang%/vm/sounds.xml
Но структура там - оставили сообщение, а потом "нажмите ... чтобы прослушать, нажмите ... чтобы пометить важным" итд. А нужно скинуть звонок сразу после сохранения.
Второй момент - даже если убирать "лишние" play-file, тишину в 10-15с (ожидание ввода) штатно не убрать.
Но есть хитрость: открываем доку https://freeswitch.org/confluence/display/FREESWITCH/Speech+Phrase+Management и ближе к концу видим  Action functions. Список там конечно небольшой...

  • execute - calls the FreeSWITCH execute API (you can execute any other API's)
  • play-file - play a specific audio file or play a macro using phrase:macro_name
  • say - Call the specific "type" say api as below. The method is used to modify the way the data is annunciated (counted, iterated, or pronounced).
  • speak-text - Speak some text using the TTS engine
  • break - Stop parsing any more input patterns.

Но на помощь нам приходит execute. Итак: ищем блок voicemail_record_file_check, и приводим к виду
      <match>
        <action function="play-file" data="voicemail/vm-message.wav"/>
        <action function="play-file" data="voicemail/vm-saved.wav"/>
        <action function="play-file" data="voicemail/vm-goodbye.wav"/>
        <action function="execute" data="hangup()"/>
      </match>

Всё, теперь скажет "сообщение сохранено, до свидания" и сбросит звонок.