FreeSwitch通過遠程接口返回IVR控制流程


學習杜老大的 用FreeSWITCH實現IVR

http://www.freeswitch.org.cn/blog/past/2010/3/21/yong-freeswitchshi-xian-ivr/

在我測試的時候,通過命令FS> originate user/1001 &ivr(welcome)沒有問題,但是通過sip客戶端撥號,就聽不到導航音

后來請教別人,發現在用戶信息配置里面的user_context是default(<variable name="user_context" value="default"/>),但是杜老大的文章里面,介紹的配置卻在public下面(一般來說,來話會先到達public dialplan,所以,你可以在conf/dialplan/public.xml中加入一個extension)

問題就出在這個地方,我把用戶信息配置里面的user_context改成public,成功了!

下一步,就是在xml_curl.conf.xml 里面,讀取遠程的IVR控制流程

2012/8/2

今天終於把讀取遠程IVR控制流程,也試通了。之前一下呼不出去,返回“No Route, Aborting”。剛才又把各個XML腳本看了一遍,發現了問題所在。

1、來是把xml_curl.conf.xml中diaplan的bindings寫錯了,這個diaplan是復制directory的,所以bindings就沒有改。

之前不成功的

<binding name="dialplan">
<param name="gateway-url" value="http://localhost:12569/Ivr.ashx" bindings="directory"/>
</binding>

修改后,成功的

<configuration name="xml_curl.conf" description="cURL XML Gateway">
  <bindings>
 <!-- <binding name="directory">
      <param name="gateway-url" value="http://localhost:12569/Fs.ashx" bindings="directory"/>
    </binding> -->
 <binding name="dialplan">
  <param name="gateway-url" value="http://localhost:12569/Ivr.ashx" bindings="dialplan"/>
 </binding>
  </bindings>
</configuration>

2、Ivr.ashx里面的輸出xml寫的也不對,剛才又參考了杜老大的萬能腳本那篇文章,寫了一下。成功的腳本如下

using System.Web;

namespace Web
{
    /// <summary>
    /// Ivr 的摘要說明
    /// </summary>
    public class Ivr : IHttpHandler
    {

        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";
            context.Response.Write(OutPut());
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }

        public string OutPut()
        {
            var sFs = "<document type=\"freeswitch/xml\">";
            sFs = sFs + "<section name=\"dialplan\">";
            sFs = sFs + "<context name=\"default\">";
            sFs = sFs + "<extension name=\"incoming_call\">";
            sFs = sFs + "<condition field=\"destination_number\" expression=\"1000\">";
            sFs = sFs + "<action application=\"answer\" data=\"\"/>";
            sFs = sFs + "<action application=\"sleep\" data=\"1000\"/>";
            sFs = sFs + "<action application=\"ivr\" data=\"welcome\"/>";
            sFs = sFs + "</condition>";
            sFs = sFs + "</extension>";
            sFs = sFs + "</context>";
            sFs = sFs + "</section>";
            sFs = sFs + "</document>";

            return sFs;
        }
    }
}

總結:看來遠程返回的腳本,都是要用下面這種格式的。

<document type="freeswitch/xml">
<section name="dialplan">
</section>
</document>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM