You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

配置FreeSWITCH+Elastic SIP Trunking遇No Route错误的问题求助

问题描述

通过Elastic SIP Trunking自定义配置FreeSWITCH处理呼叫,未使用mod_Signalwire,需实现多租户自定义路由。已成功创建Sofia配置文件和网关,两者状态均为Running且已注册,日志中能收到呼叫,但呼叫卡在拨号计划环节,出现错误:

switch_core_state_machine.c:312 No Route, Aborting

当前配置

Profile

<document type="freeswitch/xml">
    <section name="configuration">
        <configuration name="sofia.conf" description="sofia conf">
            <profiles>
                <profile name="MY_PROFILE">
                    <aliases/>
                    <gateways>
                        <gateway name="MY_GATEWAY">
                            <param name="username" value="MY_USER"/>
                            <param name="password" value="MY_PW"/>
                            <param name="proxy" value="fjfhjhhhk.sip.signalwire.com"/>
                            <param name="realm" value="ffjjhghjh.sip.signalwire.com"/>
                            <param name="from-domain" value="bhjhkhkkj.sip.signalwire.com"/>
                            <param name="register" value="true"/>
                            <param name="sip-trace" value="no"/>
                            <param name="sip-capture" value="no"/>
                            <param name="context" value="public"/>
                            <param name="extension" value="sip_uri"/>
                        </gateway>
                    </gateways>
                    <domains name="all" alias="true" parse="true"/>
                    <settings>
                        <params name="ext-sip-ip" value="$${external_sip_ip}"/>
                        <params name="ext-rtp-ip" value="$${external_rtp_ip}"/>
                        <params name="sip-port" value="5060"/>
                        <params name="auth-calls" value="true"/>
                    </settings>
                </profile>
            </profiles>
        </configuration>
    </section>
</document>

Directory

<document type="freeswitch/xml">
    <section name="directory">
        <domains>
            <domain name="ddsadaf.sip.signalwire.com">
                <params>
                    <param name="dial-string" value="{^^:sip_invite_domain=${dialed_domain}:presence_id=${dialed_user}@${dialed_domain}}${sofia_contact(*/${dialed_user}@${dialed_domain})},${verto_contact(${dialed_user}@${dialed_domain})}"/>
                </params>
                <variables>
                    <variable name="user_context" value="public"/>
                </variables>
                <groups>
                    <group>
                        <users>
                            <user id="jssip">
                                <params>
                                    <param name="$${default_password}" value="Chits123"/>
                                    <param name="vm-password" value="MY_PASSWORD"/>
                                </params>
                                <variables>
                                    <variable name="toll_allow" value="domestic, international, local"/>
                                    <variable name="accountcode" value="jssip"/>
                                    <variable name="user_context" value="dsadasdsad.sip.signalwire.com"/>
                                    <variable name="outbound_caller_id_name" value="$${outbound_caller_name}"/>
                                    <variable name="outbound_caller_id_number" value="$${outbound_caller_id}"/>
                                </variables>
                            </user>
                        </users>
                    </group>
                </groups>
            </domain>
        </domains>
    </section>
</document>

Dialplan

<document type="freeswitch/xml">
    <section name="dialplan" description="Dial Plan For FreeSwitch">
        <context name="public">
            <extension name="sip_uri">
                <condition field="destination_number" expression="^(MY_US_PHONE_NUMBER)$"> // ex 12345678901 - eleven US number with countr cde
                    <action application="sleep" data="10000"/>
                    <action application="bridge" data="sofia/gateway/GATEWAY_NAME/$1"/>
                    <action application="answer"/>
                </condition>
            </extension>
        </context>
    </section>
</document>
排查与修复步骤

1. 修复XML语法错误

XML不支持//格式的注释,当前拨号计划中的注释会破坏XML结构,导致拨号计划解析失败。将注释替换为合法的XML注释格式:

<!-- ex 12345678901 - 带国家码的11位美国号码 -->

2. 统一网关名称

拨号计划中bridge动作里的GATEWAY_NAME必须与Profile中配置的网关名称MY_GATEWAY完全一致,否则无法找到网关。修正后:

<action application="bridge" data="sofia/gateway/MY_GATEWAY/$1"/>

3. 调整拨号计划匹配规则

当前拨号计划仅匹配指定的MY_US_PHONE_NUMBER,如果呼入号码不匹配则会触发无路由错误。可以:

  • 将MY_US_PHONE_NUMBER替换为实际的SignalWire号码
  • 添加通用匹配规则,处理所有E.164格式的呼入号码

修正后的拨号计划示例:

<document type="freeswitch/xml">
    <section name="dialplan" description="Dial Plan For FreeSwitch">
        <context name="public">
            <extension name="sip_uri">
                <!-- 匹配你的SignalWire实际号码 -->
                <condition field="destination_number" expression="^(12345678901)$">
                    <action application="answer"/>
                    <action application="bridge" data="sofia/gateway/MY_GATEWAY/$1"/>
                </condition>
            </extension>
            <!-- 可选:添加通用规则处理所有数字号码呼入 -->
            <extension name="incoming_all">
                <condition field="destination_number" expression="^\+?[0-9]+$">
                    <action application="answer"/>
                    <action application="bridge" data="sofia/gateway/MY_GATEWAY/$1"/>
                </condition>
            </extension>
        </context>
    </section>
</document>

4. 修正Directory中的context配置

Directory里用户的user_context值应为存在的拨号计划context名称(如public),而非域名,避免呼出时找不到路由:

<variable name="user_context" value="public"/>

5. 验证配置加载

执行以下命令重新加载配置并验证:

# 重新加载XML配置
fs_cli -x "reloadxml"
# 查看public context下的拨号计划是否正确加载
fs_cli -x "dialplan show public"
# 查看呼入呼叫的详细日志(开启debug级别)
fs_cli -x "loglevel debug"

内容的提问来源于stack exchange,提问作者jack

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 18:02:03