Шаги ==== 1. Настроить сервер: # apt-get install -y freeswitch-imagick freeswitch-daemon freeswitch-lang-ru freeswitch-sounds-ru-ru-elena-* && \ sed -i "/default_password/s/1234/Pa##word/" /etc/freeswitch/vars.xml && \ sed -i "s/<include>/<include>\n<X-PRE-PROCESS cmd=\"set\" data=\"force_local_ip_v4=$(hostname -i)\"\/>\n<X-PRE-PROCESS cmd=\"set\" data=\"local_ip_v4=\$\${force_local_ip_v4}\"\/>/" /etc/freeswitch/vars.xml && \ sed -i "s/<\/modules>/<load module=\"mod_imagick\"\/><\/modules>/" /etc/freeswitch/autoload_configs/modules.conf.xml && \ sed -i "s/<context name=\"public\">/<context name=\"public\">\n<extension name=\"public_extensions\">\n<condition field=\"destination_number\" expression=\"^1007$\">\n<action application=\"answer\"\/>\n<action application=\"playback\" data=\"{lazy=1}\/etc\/freeswitch\/file.pdf\"\/>\n <\/condition>\n<\/extension>/" /etc/freeswitch/dialplan/public.xml && \ systemctl enable --now freeswitch && \ sleep 5 && \ systemctl status freeswitch --no-pager -l && \ fs_cli Не выходить из консоли для просмотра логов. 2. Поместить любые тестовые файлы pdf, gif в `/etc/freeswitch/file.{pdf,gif}`. 3. На клиенте с p10: # apt-get install -y linphone Настроить Linphone: - При запуске закрыть мастер настройки. - Открыть Опции > Параметры > вкладка по умолчанию Управление учётными записями SIP > в разделе Учётные записи нажать Добавить. - Ввести данные: - Ваш идентификатор SIP: sip:1001@<ip-адрес сервера c freeswitch> - Адрес SIP прокси: sip:<ip-адрес сервера c freeswitch>:5080 - Остальные параметры оставить по умолчанию. - При запросе ввести пароль по умолчанию (Pa##word). - Закрыть окно настроек. 4. Позвонить на номер 1007 с клиента. 5. Также можно попробовать с gif: # sed -i 's/file.pdf/file.gif/' /etc/freeswitch/dialplan/public.xml # fs_cli freeswitch@...> reloadxml и позвонить на тот же номер. Фактический результат ===================== Вывод в консоли: > 2025-06-23 16:22:22.113298 93.67% [INFO] mod_enum.c:884 ENUM Reloaded > 2025-06-23 16:22:22.113298 93.67% [INFO] switch_time.c:1436 Timezone reloaded 597 definitions > 2025-06-23 16:23:02.553272 99.77% [NOTICE] switch_channel.c:1142 New Channel sofia/external/1001@SERVER_IP [325176f2-b8e1-4171-8c7e-793ff7213580] > 2025-06-23 16:23:02.553272 99.77% [INFO] sofia.c:10460 sofia/external/1001@SERVER_IP receiving invite from <CALLER_IP>:52380 version: 1.10.12-release 64bit call-id: A2zwwjXUEg > 2025-06-23 16:23:02.553272 99.77% [INFO] mod_dialplan_xml.c:639 Processing 1001 <1001>->1007 in context public > EXECUTE [depth=0] sofia/external/1001@SERVER_IP answer() > 2025-06-23 16:23:02.593155 99.77% [INFO] switch_core_media.c:9560 Activating VIDEO RTCP PORT 9079 interval 1000 mux -1 > 2025-06-23 16:23:02.593155 99.77% [NOTICE] sofia_media.c:90 Pre-Answer sofia/external/1001@SERVER_IP! > 2025-06-23 16:23:02.593155 99.77% [NOTICE] mod_dptools.c:1406 Channel [sofia/external/1001@SERVER_IP] has been answered > EXECUTE [depth=0] sofia/external/1001@SERVER_IP playback({lazy=1}/etc/freeswitch/file.pdf) > 2025-06-23 16:23:02.593155 99.77% [ERR] switch_core_file.c:346 Invalid file format [pdf] for [/etc/freeswitch/file.pdf]! > 2025-06-23 16:23:02.593155 99.77% [NOTICE] switch_core_state_machine.c:382 sofia/external/1001@SERVER_IP has executed the last dialplan instruction, hanging up. > 2025-06-23 16:23:02.593155 99.77% [NOTICE] switch_core_state_machine.c:384 Hangup sofia/external/1001@SERVER_IP [CS_EXECUTE] [NORMAL_CLEARING] > 2025-06-23 16:23:02.613172 99.77% [NOTICE] switch_core_session.c:1762 Session 1 (sofia/external/1001@SERVER_IP) Ended > 2025-06-23 16:23:02.613172 99.77% [NOTICE] switch_core_session.c:1766 Close Channel sofia/external/1001@SERVER_IP [CS_DESTROY] Аналогично с gif: > 2025-06-23 16:33:07.733215 99.33% [ERR] switch_core_file.c:346 Invalid file format [gif] for [/etc/freeswitch/file.gif]! Ожидаемый результат =================== В окне с видео отображается pdf/gif-файл. Примечание: могут воспроизводится также и другие ошибки: * https://bugzilla.altlinux.org/47326 * https://bugzilla.altlinux.org/47382 Воспроизводимость ================= Воспроизводится на виртуальных машинах: [sisyphus] ALT Server 11.0 x86_64 freeswitch-daemon-1.10.12-alt4.x86_64 [p11] ALT Server 11.0 x86_64 freeswitch-daemon-1.10.12-alt2.x86_64 [p10] ALT Workstation 11.0 x86_64 freeswitch-daemon-1.10.11-alt1.x86_64
Воспроизводится и с модулем mod_http_cache (подставить MEDIA_URL): # MEDIA_URL="http://example.com/file.wav" && \ sed -i 's|</modules>|<load module="mod_http_cache"/></modules>|' /etc/freeswitch/autoload_configs/modules.conf.xml && \ sed -i 's|<context name="public">|<context name="public">\n<extension name="public_extensions">\n<condition field="destination_number" expression="^1017$">\n<action application="answer"/>\n<action application="playback" data="http_cache://MEDIA_URL"/>\n </condition>\n</extension>|' /etc/freeswitch/dialplan/public.xml sed -i "s|MEDIA_URL|$MEDIA_URL|" /etc/freeswitch/dialplan/public.xml && \ fs_cli -x "reloadxml" && \ fs_cli Позвонить на 1017 с клиента. > 2025-06-23 19:09:16.160182 99.83% [ERR] switch_core_file.c:346 Invalid file format [http_cache] for [http://git.testlink.ipa.basealt.ru/bigdata/multimedia/audio_files/file.wav]!