Мучаю тут FreeSWITCH и не могу почему-то победить довольно-таки простую вещь - трансфер.
С FreeSWITCH занимаюсь всего пару дней, до этого ни разу не щупал, поэтому не все понимаю... ;(
Схема такая:
Инициатор вызова из города -> FS -> IVR -> Город -transfer-> FS -> Город
Словами:
Вызов приходит из города, поступает в IVR, нажимается в меню цифра 1:
Код: Выделить всё
<entry action="menu-exec-app" digits="1" param="transfer 300 XML fmc-context"/>
Абонент 3XX тыкает кнопки *4301#, слушаем замечательную музыку, вызов уходит на короткий FMC номер 301 опять в город.
Абоненты 300 и 301 разговаривают друг с другом, а дальше - облом. Если повесить трубку на абоненте 300, то на 301
вызов завершается. При этом инициируемый вызов абонент остается на линии слушать тишину до бесконечности...
Описание вызова att_xfer:
Код: Выделить всё
<action application="bind_meta_app" data="4 b s execute_extension::att_xfer_kik XML ${context}"/>
Код: Выделить всё
<extension name="att_xfer_kik">
<condition field="destination_number" expression="^att_xfer_kik$">
<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}@${context}"/> --> <!-- не работает, т.к. это не зарегистрированный юзер -->
<action application="set" data="sip_h_X-return=true"/> <!-- в интернете предлагали -->
<action application="att_xfer" data="<fmc_group=<GROUP>>loopback/${digits}"/>
<!-- <action application="transfer" data="${digits} XML ${context}"> -->
</condition>
</extension>
Нужно направлять именно в контекст, т.к. вызываться может не только внешний номер, но и зарегистрированный юзер.