Вроде как перевод должен работать из коробки, т.к. в дефолтовых конфигах уже есть нужные записи, описанные в мануале здесь
https://wiki.freeswitch.org/wiki/Misc._ ... s_att_xfer.
В features.xml:
Код:
<extension name="att_xfer">
<condition field="destination_number" expression="^att_xfer$">
<action application="read" data="3 4 'tone_stream://%(10000,0,350,440)' digits 30000 #"/>
<action application="set" data="origination_cancel_key=#"/>
<action application="att_xfer" data="user/${digits}@$${domain}"/>
</condition>
</extension>
В default.xml:
Цитата:
<extension name="Local_Extension">
<condition field="destination_number" expression="^(10[01][0-9])$">
<action application="export" data="dialed_extension=$1"/>
<!-- bind_meta_app can have these args <key> [a|b|ab] [a|b|o|s] <app> -->
<action application="bind_meta_app" data="1 b s execute_extension::dx XML features"/>
<action application="bind_meta_app" data="2 b s record_session::$${recordings_dir}/${caller_id_number}.${strftime(%Y-%m-%d-%H-%M-%S)}.wav"/>
<action application="bind_meta_app" data="3 b s execute_extension::cf XML features"/>
<action application="bind_meta_app" data="4 b s execute_extension::att_xfer XML features"/>
<action application="set" data="ringback=${us-ring}"/>
<action application="set" data="transfer_ringback=$${hold_music}"/>
<action application="set" data="call_timeout=30"/>
<!-- <action application="set" data="sip_exclude_contact=${network_addr}"/> -->
<action application="set" data="hangup_after_bridge=true"/>
<!--<action application="set" data="continue_on_fail=NORMAL_TEMPORARY_FAILURE,USER_BUSY,NO_ANSWER,TIMEOUT,NO_ROUTE_DESTINATION"/> -->
<action application="set" data="continue_on_fail=true"/>
<action application="hash" data="insert/${domain_name}-call_return/${dialed_extension}/${caller_id_number}"/>
<action application="hash" data="insert/${domain_name}-last_dial_ext/${dialed_extension}/${uuid}"/>
<action application="set" data="called_party_callgroup=${user_data(${dialed_extension}@${domain_name} var callgroup)}"/>
<action application="hash" data="insert/${domain_name}-last_dial_ext/${called_party_callgroup}/${uuid}"/>
<action application="hash" data="insert/${domain_name}-last_dial_ext/global/${uuid}"/>
<!--<action application="export" data="nolocal:rtp_secure_media=${user_data(${dialed_extension}@${domain_name} var rtp_secure_media)}"/>-->
<action application="hash" data="insert/${domain_name}-last_dial/${called_party_callgroup}/${uuid}"/>
<action application="bridge" data="user/${dialed_extension}@${domain_name}"/>
<action application="answer"/>
<action application="sleep" data="1000"/>
<action application="bridge" data="loopback/app=voicemail:default ${domain_name} ${dialed_extension}"/>
</condition>
</extension>
Т.о при нажатии *4 должен происходить трансфер. Только вот FS ни на какие нажатия не реагирует. Хотя в логе их отображает:
Код:
2013-09-10 22:38:29.880630 [DEBUG] switch_rtp.c:5117 RTP RECV DTMF *:1120
2013-09-10 22:38:29.880630 [DEBUG] switch_channel.c:471 RECV DTMF *:1120
2013-09-10 22:38:29.880630 [DEBUG] switch_ivr_bridge.c:458 Send signal sofia/sipinterface_1/sip:1100@178.66.135.248:5060 [BREAK]
2013-09-10 22:38:29.900633 [DEBUG] switch_rtp.c:3829 Send start packet for [*] ts=1224060 dur=160/160/1120 seq=50253 lw=1224060
2013-09-10 22:38:29.920771 [DEBUG] switch_rtp.c:3729 Send middle packet for [*] ts=1224060 dur=320/320/1120 seq=50254 lw=1224220
2013-09-10 22:38:29.940630 [DEBUG] switch_rtp.c:3729 Send middle packet for [*] ts=1224060 dur=480/480/1120 seq=50255 lw=1224380
2013-09-10 22:38:29.960630 [DEBUG] switch_rtp.c:3729 Send middle packet for [*] ts=1224060 dur=640/640/1120 seq=50256 lw=1224540
2013-09-10 22:38:29.980633 [DEBUG] switch_rtp.c:3729 Send middle packet for [*] ts=1224060 dur=800/800/1120 seq=50257 lw=1224700
2013-09-10 22:38:30.000631 [DEBUG] switch_rtp.c:3729 Send middle packet for [*] ts=1224060 dur=960/960/1120 seq=50258 lw=161
2013-09-10 22:38:30.020630 [DEBUG] switch_rtp.c:3729 Send end packet for [*] ts=1224060 dur=1120/1120/1120 seq=50259 lw=1
2013-09-10 22:38:30.020630 [DEBUG] switch_rtp.c:3729 Send end packet for [*] ts=1224060 dur=1120/1120/1120 seq=50260 lw=1
2013-09-10 22:38:30.020630 [DEBUG] switch_rtp.c:3729 Send end packet for [*] ts=1224060 dur=1120/1120/1120 seq=50261 lw=1
2013-09-10 22:38:30.400630 [DEBUG] switch_rtp.c:5117 RTP RECV DTMF 4:960
2013-09-10 22:38:30.400630 [DEBUG] switch_channel.c:471 RECV DTMF 4:960
2013-09-10 22:38:30.400630 [DEBUG] switch_ivr_bridge.c:458 Send signal sofia/sipinterface_1/sip:1100@178.66.135.248:5060 [BREAK]
2013-09-10 22:38:30.420630 [DEBUG] switch_rtp.c:3829 Send start packet for [4] ts=1228540 dur=160/160/960 seq=50275 lw=1228540
2013-09-10 22:38:30.440632 [DEBUG] switch_rtp.c:3729 Send middle packet for [4] ts=1228540 dur=320/320/960 seq=50276 lw=1228700
2013-09-10 22:38:30.460629 [DEBUG] switch_rtp.c:3729 Send middle packet for [4] ts=1228540 dur=480/480/960 seq=50277 lw=1228860
2013-09-10 22:38:30.480628 [DEBUG] switch_rtp.c:3729 Send middle packet for [4] ts=1228540 dur=640/640/960 seq=50278 lw=1229020
2013-09-10 22:38:30.500630 [DEBUG] switch_rtp.c:3729 Send middle packet for [4] ts=1228540 dur=800/800/960 seq=50279 lw=1229180
2013-09-10 22:38:30.520630 [DEBUG] switch_rtp.c:3729 Send end packet for [4] ts=1228540 dur=960/960/960 seq=50280 lw=1
2013-09-10 22:38:30.520630 [DEBUG] switch_rtp.c:3729 Send end packet for [4] ts=1228540 dur=960/960/960 seq=50281 lw=1
2013-09-10 22:38:30.520630 [DEBUG] switch_rtp.c:3729 Send end packet for [4] ts=1228540 dur=960/960/960 seq=50282 lw=1