Freeswitch:mod_xml_curl和呼叫组

时间:2016-02-24 15:52:37

标签: freeswitch

我目前正在从静态配置切换到使用mod_xml_curl,并且在设置呼叫组时遇到了问题。

在我的拨号方案内(动态提供,按预期工作)我正在接通一个小组:

<action application="bridge" data="${group_call(call-group@domain-a.com)}"/>

Freeswitch正在向网络服务器发出section=directory&action=group_call请求,我将回复一个包含该组和所有相关用户的目录块:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="freeswitch/xml">
    <section name="directory">
        <domain name="domain-a.com">
            <params>
                <param name="dial-string" value="{presence_id=${dialed_user}@${dialed_domain}}${sofia_contact(${dialed_user}@${dialed_domain})}" />
            </params>
            <variables>
                <variable name="user_context" value="domain-a.com" />
            </variables>
            <group name="call-group">
                <users>
                    <user id="john" number-alias="1000">
                        <params>
                            <param name="password" value="1234" />
                            <param name="vm-password" value="1000" />
                        </params>
                        <variables>
                            <variable name="toll_allow" value="domestic,international,local" />
                            <variable name="accountcode" value="1000" />
                            <variable name="outbound_caller_id_name" value="John at domain-a.com" />
                            <variable name="outbound_caller_id_number" value="1234567" />
                        </variables>
                    </user>
                    <user id="lucy" number-alias="1001">
                        <params>
                            <param name="password" value="1234" />
                            <param name="vm-password" value="1000" />
                        </params>
                        <variables>
                            <variable name="toll_allow" value="domestic,international,local" />
                            <variable name="accountcode" value="1001" />
                            <variable name="outbound_caller_id_name" value="Lucy" />
                            <variable name="outbound_caller_id_number" value="12345678" />
                        </variables>
                    </user>
                </users>
            </group>
        </domain>
    </section>
</document>

然而,group_call()似乎失败了,在日志中我得到了``:

2016-02-24 10:42:14.249534 [DEBUG] mod_dptools.c:1498 SET sofia/internal/michael@domain-a.com [call_timeout]=[15]
2016-02-24 10:42:14.529107 [CONSOLE] mod_xml_curl.c:323 XML response is in /tmp/2f772a8a-4c3a-46f2-834f-b9ba2c735feb.tmp.xml
EXECUTE sofia/internal/michael@domain-a.com bridge(error/NO_ROUTE_DESTINATION)

也许任何人都有使用mod_xml_curl设置群组通话的经验,并可以解释Freeswitch在回复中的期望是什么?

2 个答案:

答案 0 :(得分:1)

咬牙切齿后,我开始工作了。线索是在 group_call 描述下面的 here

<块引用>

请注意:如果您需要在分支 B 中设置传出用户变量, 请确保您没有拨号字符串和组拨号字符串 域或拨号组变量列表;而是设置拨号字符串或 用户默认组中的 group-dial-string。这条路 group_call 将返回 user/101 和 user/ 将设置您的所有用户 腿 B 通道的变量。

因此,当您收到类型为 group_call 的操作时,将 dial-string 参数移动到组级别,而不是

<domain name="domain-a.com">
    <params>
        <param name="dial-string" value="{presence_id=${dialed_user}@${dialed_domain}}${sofia_contact(${dialed_user}@${dialed_domain})}" />
    </params>
    <variables>
        <variable name="user_context" value="domain-a.com" />
    </variables>
    <group name="call-group">
        <users>
            <user id="john" number-alias="1000">
    ...

发送这个

<domain name="domain-a.com">
    <variables>
        <variable name="user_context" value="domain-a.com" />
    </variables>
    <group name="call-group">
        <params>
            <param name="dial-string" value="{presence_id=${dialed_user}@${dialed_domain}}${sofia_contact(${dialed_user}@${dialed_domain})}" />
        </params>
        <users>
            <user id="john" number-alias="1000">
    ...

在我做出改变之后,一切都变得笨拙了。干杯!

答案 1 :(得分:0)

它与您的拨号方案有关。它没有完美生成。只需检查拨号方案中的domain-a.com上下文。