в итоге задача решилась установкой FeeSWITCH с небольшим патчем:
Код: Выделить всё
diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.c b/src/mod/endpoints/mod_sofia/mod_sofia.c
--- a/src/mod/endpoints/mod_sofia/mod_sofia.c
+++ b/src/mod/endpoints/mod_sofia/mod_sofia.c
@@ -1075,6 +1075,11 @@ static switch_status_t sofia_send_dtmf(switch_core_session_t *session, const swi
                                switch_yield(500000);
                        } else if (dtmf->digit == 'W') {
                                switch_yield(1000000);
+                       } else if (dtmf->digit == 'F') {
+                               snprintf(message, sizeof(message), "Signal=hf\r\n");
+                               switch_mutex_lock(tech_pvt->sofia_mutex);
+                               nua_info(tech_pvt->nh, SIPTAG_CONTENT_TYPE_STR("application/hook-flash"), SIPTAG_PAYLOAD_STR(message), TAG_END());
+                               switch_mutex_unlock(tech_pvt->sofia_mutex);
                        } else {
                                snprintf(message, sizeof(message), "Signal=%c\r\nDuration=%d\r\n", dtmf->digit, dtmf->duration / 8);
                                switch_mutex_lock(tech_pvt->sofia_mutex);
в сторону DVG создается отдельный sofia-профиль с  <param name="dtmf-type" value="info"/>
сильно упрощенный диалплан:
Код: Выделить всё
<?xml version="1.0" encoding="utf-8"?>
<include>
<context name="default">
    <extension name="Outbound">
      <condition field="destination_number" expression="^(10[0-9]|11[0-6])$">
        <action application="export" data="dialed_extension=$1"/>
        <action application="bind_meta_app" data="9 a o send_dtmf::F"/> <!-- Send hook-flash INFO -->
        <action application="bridge" data="sofia/gateway/dvg/$1"/>
      </condition>
    </extension>
</context>
<context name="public">
    <extension name="Incoming">
      <condition field="destination_number" expression="^(10[01][0-9])$">
        <action application="bind_meta_app" data="9 b o send_dtmf::F"/> <!-- Send hook-flash INFO -->
        <action application="bridge" data="user/$1"/>
      </condition>
    </extension>
</context>
</include>
hook-flash передается на шлюз после нажатия *9 дальше донабор нужного номера
если подключен шлюз с FXS, то срабатывает и кнопка FLASH аппарата
решение позволяет делать перевод как на стороне Freeswitch, так и на стороне внешней станции