【问题标题】:FreeSWITCH - how can i make the call, talk to the person and then add him to the conference?FreeSWITCH - 我如何拨打电话、与此人交谈,然后将他添加到会议中?
【发布时间】:2015-03-02 09:57:34
【问题描述】:

我关注了官方文档 (https://freeswitch.org/confluence/display/FREESWITCH/Conference+Add+Call+Example),但它对我不起作用。

当我给一个人打电话时,他没有加入会议,但是我如何让他加入会议并在我断开电话的情况下保持?

例如我正在尝试如下:

1 - 我和我的其他同事需要 Stackoverflow 专家咨询

2 - 我和我的其他同事加入了一个会议室

3 - 现在我们需要 stackoverflow 程序员给我们 30 分钟的讲座,所以我们给他打电话(我在这里是管理员)

4 - 当我与 stackoverflow 交谈时,会议中没有人听到 stackoverflow 专家。

那么我怎样才能把他带进会议呢?

<include>
  <!-- Sample dialplan for sending member or moderator to a conference where he/she can add/remove calls -->
  <!-- Dial 46xx for member, *46xx for moderator -->
    <extension name="Simple add-caller conf: member">
      <condition field="destination_number" expression="^(46\d{2})$">
    <action application="answer"/>
    <action application="conference" data="$1@simple"/>
     </condition>
    </extension>

    <extension name="Simple add-caller conf: moderator">
      <condition field="destination_number" expression="^\*(46\d{2}$)">
    <action application="answer"/>
    <!-- set up a few bind_digit_action (BDA) bindings for the moderator -->
        <action application="bind_digit_action" data="moderator,*1,exec:execute_extension,ASK_FOR_NUMBER__$1 XML default"/>
    <action application="bind_digit_action" data="moderator,*2,exec:execute_extension,CANCEL_LAST_CALL__$1 XML default"/>
    <action application="digit_action_set_realm" data="moderator"/>
    <action application="conference" data="$1@simple+flags{moderator}"/>
      </condition>
    </extension>

    <extension name="Add new OB call to conference">
      <condition field="destination_number" expression="^ASK_FOR_NUMBER__(\d+)$">
    <!-- ask caller for a number + #, collect into ${target_num} variable -->
    <action application="play_and_get_digits" data="4 20 1 5000 # ivr/ivr-enter_destination_telephone_number.wav ivr/ivr-that_was_an_invalid_entry.wav target_num \d+"/>
    <!-- add this call to the conference -->
    <action application="execute_extension" data="${target_num}"/>
      </condition>
    </extension>

    <extension name="Remove last OB call added to conference">
        <condition field="destination_number" expression="^CANCEL_LAST_CALL__(\d+)$">
          <!-- remove a call from the conference -->
           <action application="play_and_get_digits" data="4 11 1 5000 # ivr/ivr-enter_destination_telephone_number.wav ivr/ivr-that_was_an_invalid_entry.wav target_num \d+"/>
           <action application="set" data="res=${uuid_kill ${hash(select/domain-${domain_name}/last_user_${target_num})}}"/>
        </condition>
    </extension>

    <extension name="add that call">
    <!-- if we have a four-digit number then attempt to dial it as a user ... -->
      <condition field="destination_number" expression="^(\d{4})$" break="on-true">
        <action application="set" data="new_uuid=${create_uuid foo}" inline="true"/>
        <action application="hash" data="insert/domain-${domain_name}/last_user_$1/${new_uuid}" />
        <action application="set" data="res=${bgapi originate {origination_uuid=${new_uuid}}user/$1 &conference(${conference_name})}"/>
      </condition>
    <!-- if we have a five+ digit number then attempt to dial it as a gw connection ... -->
      <condition field="destination_number" expression="^(\d{5})$" break="on-true">
        <action application="set" data="new_uuid=${create_uuid foo}" inline="true"/>
        <action application="hash" data="insert/domain-${domain_name}/last_user_$1/${new_uuid}" />
        <action application="set" data="res=${bgapi originate {origination_uuid=${new_uuid}}sofia/gateway/voipbuster/$1 &conference(${conference_name})}"/>
      <!-- Alternatively, you can just use loopback, but that creates three call legs instead of one, so be warned -->
      <!--
                   <action application="set" data="res=${bgapi originate {origination_uuid=${new_uuid}}loopback/$1 &conference(${conference_name})}"/>
      -->
      </condition>
    <!-- ... otherwise inform moderator that the operation was not exactly successful -->
      <condition field="destination_number" expression="^$">
        <action application="playback" data="ivr/ivr-dude_you_suck.wav"/>
      </condition>
    </extension>
</include>

【问题讨论】:

    标签: voip freeswitch telecommunication


    【解决方案1】:

    请参阅 mod_conference 文档中的 bgdialdial

    你在做什么,看起来还不错,需要调试。但是使用conference dial 会更轻松。

    【讨论】:

    • 请问如何从 XML 中使用它?
    • 我的问题是我可以从会议呼叫但我无法将那个人连接到会议。
    • 另外,当我断开与他的通话时,他也断开了,想法是抱着他,让他加入会议,然后我必须离开,但他会继续对话。
    • 如果您构建一个我们可以一起查看的测试服务器,那将有所帮助。它需要调试并查看发生了什么。
    • 是的,我很容易找到 :)
    【解决方案2】:

    您应该使用电话会议,这将使您的目标更容易。

    使用 XML dialplan 调用的 Lua 脚本:

    function call_to_agent()
        session:execute("conference_set_auto_outcall","user/[user_that_you_want]")
        session:execute("conference","conference_name@default")
    end
    
    session:answer()
    call_to_agent()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多