freeswitch对接mrcp,想用lua脚本把结果取出来然后判断结果

也是从网上找的例子,但是我想解析这个xml,判断如果是yes,播放1.mp3,no播放2.MP3,该怎么做呢,有大神知道吗,我不会lua

代码如下:

tryagain = 1
while (tryagain == 1) do

    session:execute("play_and_detect_speech",welcome .. "detect:unimrcp {start-input-timers=false,no-input-timeout=" .. no_input_timeout .. ",recognition-timeout=" .. recognition_timeout .. "}" .. grammar)
    xl = session:getVariable('detect_speech_result')

    if (xl == nil) then
        freeswitch.consoleLog("CRIT","电话挂断\n")
        tryagain = 0
    else
        freeswitch.consoleLog("CRIT","Result is '" .. xl .. "'\n")
        这里取结果,判断
        session:execute("playback", huifu2)
        tryagain = 0
    end
end

得到的xml如下

<result>
     <interpretation grammar="" confidence="1.0">
         <instance>
             <callId>hostname-4418_35629.1554048033766857898-841227</callId>
             <logId>EDC18579-98CC-4649-9E60-6D5A1C71FEE0_-1</logId>
             <rolecategory>CLIENT</rolecategory>
             <extJson>
                <snStartTime>00:06.559</snStartTime>
                <snStopTime>00:07.519</snStopTime>
                <speed>1.04</speed></extJson>
             <categotyId>TXT</categotyId>
         </instance>
         <input mode="speech">yes,</input>
     </interpretation>
</result>

1个回答

将XML文件转Table,然后取Table的对应key, value,就可以获取yes or no 的值,识别不到的时候,也可能获取到空值

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
freeswitch mrcp 源码分析--数据解析
/** Parse message by raising corresponding event handlers */ APT_DECLARE(apt_message_status_e) apt_message_parser_run(apt_message_parser_t *parser, apt_text_stream_t *stream, void **message) { const
Freeswitch MRCP服务端中间件
随着人工智能的发展,ASR和TTS在通讯里面的应用越来越多,之前也陆续做过很多相关的项目,通讯和人工智能应用结合我们做的最多的项目就是自动外呼,关于外呼的模式和原理说明可以参考我的另一篇文章,外呼系统分类说明,自动外呼是完全无人工交互外呼模式,交换机将名单外呼,客户接通后转移给IVR,IVR负责和客户交互,IVR通过ASR和TTS实现完全无人工干预。 从目前做的项目总结一下目前这些应...
搭建百度Mrcp Server与Freeswitch的mod_unimrcp对接实现智能客服
媒体资源控制协议(MRCP)是基于客户端/服务器模型的网络协议。MRCP允许客户端应用程序控制驻留在服务器中的媒体服务资源。该协议的第一个版本作为信息文件发布,而其后续版本MRCPv2目前是一个提议的标准。百度MrcpServer提供了在unimrcp中集成百度ASR语音识别,提供给Freeswitch或者Asterike调用实现智能客服! 一、搭建MrcpServer 环境需求: Linu...
freeswitch mrcp 源码分析--数据包的发送
在MRCP 开始语音识别后会调用recog_channel_start()函数 static switch_status_t recog_channel_start(speech_channel_t *schannel) { switch_status_t status = SWITCH_STATUS_SUCCESS; switch_hash_index_t *egk;
freeswitch mrcp 源码分析--数据接收(下)
在前两篇我们介绍了mrcp接收后的处理,最后会调用apr_queue_push扔到消息队列里面。 对应的,在apt_consumer_task.apt_consumer_task_run()中会循环调用pr_queue.apr_queue_pop()从队列里面取出数据:apt_consumer_task.apt_consumer_task_run –> apr_queue.apr_queue_p
FreeSWITCH之lua脚本事件订阅
FreeSWITCH中通过订阅事件,我们能获取到各种实时信息,进而可以对通话进行精确的控制。在lua中我们既能方便地订阅各种事件,也能自己生成所需的事件。   相关接口简要说明 freeswitch.Event创建一个事件,然后添加内容,最后发出 event:addBody event:addHeader event:fire   freeswitch.Eve...
freeswitch会议模块lua脚本
--[[   --会议lua模块 lua ]]    -- //===========func start================ -- Function :: Determine how many other participants are already in the conference   function Get_Partici
freeswitch mrcp 源码分析--event事件产生
event事件的构建主要在speech_thread()函数里面。static void *SWITCH_THREAD_FUNC speech_thread(switch_thread_t *thread, void *obj) { struct speech_thread_handle *sth = (struct speech_thread_handle *) obj; swit
小程序人脸识别结果对接
项目将应用tornado、pymongo、ip2region、dlib、pillow、opencv等技术打造一个完整的人脸识别微信小程序。我将在实战过程中带大家快速掌握python mtv的设计模式、API接口设计、人脸特征|框选|截取|勾勒|化妆功能封装、微信授权登录、小程序组件开发、IP地址解析、UA访问跟踪、后台管理系统开发以及基于线程池的异步io非阻塞等技术。
jsp根据关键词搜索,然后把结果分页显示
[code=text]<%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" errorPage="" %>rnrnrnrn rn 无标题文档rnrn rnrnrn 模糊查询 rn rn请输入查询的姓名: rn rn rn<%! rnString getS(String str) rn try rn byte b[]=str.getBytes("iso-8859-1"); rn str=new String(b); rn rn catch(Exception e) str="出现异常"; rn return str; rn rn%> rn 分页显示数据库记录 rn rn rn ID号 姓名 性别 年龄 rn<% try rnboolean flag; rnString str=request.getParameter("name"); rnstr=getS(str.trim()); rnif(str=="") rnflag=false; rn rnelse rnflag=true; rn rnString driverName="sun.jdbc.odbc.JdbcOdbcDriver"; rnString dbName="test"; rnString tableName="t1"; rn rnClass.forName(driverName).newInstance(); rnConnection conn=DriverManager.getConnection("jdbc:odbc:123"); rnStatement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY); rn rnString sql;rnif(flag) rnsql="select * from Invitation where invitation_theme like '%"+str+"%' or invitation_content like '%"+str+"%'"; rn rnelse rnsql="select * from Invitation"; rn rnResultSet rs=stmt.executeQuery(sql);//这一句报错! rnint intPageSize; rnint intRowCount; rnint intPageCount; rnint intPage; rnString strPage; rnint i; rnintPageSize=3; rnstrPage=request.getParameter("page"); rnif(strPage==null) rnintPage=1; rnelse rnintPage=java.lang.Integer.parseInt(strPage); rnif(intPage<1) rnintPage=1; rnrs.last(); rnintRowCount=rs.getRow(); rnintPageCount=(intRowCount+intPageSize-1)/intPageSize; rnif(intPage>intPageCount) intPage=intPageCount; rnif(intPageCount>0) rnrs.absolute((intPage-1)*intPageSize+1); rn rni=0; rnwhile(i <%=rs.getString(1)%> rn <%=rs.getString(2)%> rn <%=rs.getString(3)%> rn <%=rs.getString(4)%> rn<% rnrs.next(); rni++; rn rnrs.close(); rnstmt.close(); rnconn.close(); rn%> rn rn共<%=intRowCount%>个记录,分<%=intPageCount%>页显示,当前页是:第<%=intPage%>页 rn<% rnfor(int j=1; j<=intPageCount; j++) rnout.print(" "+j+""); rn%> rn<% catch(Exception e) e.printStackTrace(); %> rnrn[/code]rnrn刚搜索出来能显示,就是点击第二页就不能显示了rn[img=https://img-bbs.csdn.net/upload/201406/29/1404013040_816450.jpg][/img]rn[img=https://img-bbs.csdn.net/upload/201406/29/1404013051_636760.jpg][/img]
FreeSwitch 用Lua脚本写个小游戏
1. 编写目的 编写一个特别简单脑残的小游戏,算是记录一下在FreeSwitch通话时,如何记录用户的按键信息的一个小例子。 2. 效果展示 用户连接FreeSwitch并拨打 1236 后,接通后可以听到背景音乐,然后按键,可以在FreeSwitch控制台看到按键信息的结果。 具体规则:按0~9中的数x,输出40X;按 * 时输出40和(x-1);按 # 时输出40和(x+1)。 如图所示: ...
freeswitch mrcp 源码分析--数据接收(上)
apt_poller_tas.apt_poller_task_run–> mrcp_client_connection.mrcp_client_poller_signal_process–> sendrecv.apr_socket_recv –> mrcp_stream.mrcp_parser_run –> mrcp_client_connection.mrcp_client_message_
怎么把数据库里面的一列求和,然后把结果取出来显示在jsp页面上??
我是新手啊,我把数据里的数据全取出来放在ArrayList里面了,但是我想让km(数据库第十列)这一列的数求和,然后把结果显示在jsp页面上,该怎么做?jsp页面上怎么接收?拜求各位大神帮忙指导啊。我具体的servlet代码如下rnpackage bao;rnrnimport java.io.IOException;rnimport java.sql.Connection;rnimport java.sql.DriverManager;rnimport java.sql.PreparedStatement;rnimport java.sql.ResultSet;rnimport java.sql.SQLException;rnimport java.sql.Statement;rnimport java.util.ArrayList;rnrnimport javax.servlet.ServletException;rnimport javax.servlet.http.HttpServlet;rnimport javax.servlet.http.HttpServletRequest;rnimport javax.servlet.http.HttpServletResponse;rnrnrnpublic class Insert extends HttpServlet rn private static final long serialVersionUID = 1L;rn public static final String DBURL="jdbc:mysql://localhost:3306/test";rn public static final String DBUSER="root";rn public static final String DBPASS="";rn rn /**rn * @see HttpServlet#HttpServlet()rn */rn public Insert() rn super();rn // TODO Auto-generated constructor stubrn rnrn /**rn * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)rn */rn protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException rn doPost(request,response);rn rnrn /**rn * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)rn */rn protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException rn response.setContentType("text/html;charset=UTF-8");rn request.setCharacterEncoding("UTF8") ;rn response.setCharacterEncoding("utf-8") ;rn String day=request.getParameter("day");rn String classt=request.getParameter("classt");rn String starttingtime1=request.getParameter("starttingtime");rn int starttingtime=Integer.parseInt(starttingtime1);rn String finishtime1=request.getParameter("finishtime");rn int finishtime=Integer.parseInt(finishtime1);rn String origin=request.getParameter("origin");rn String finish=request.getParameter("finish");rn String startkm1=request.getParameter("startkm");rn int startkm=Integer.parseInt(startkm1);rn String finishkm1=request.getParameter("finishkm");rn int finishkm =Integer.parseInt(finishkm1);rn int km; rn int allowance=0;rn km=finishkm-startkm;rnrn tryrn Connection conn=null;rn Statement st=null;rn Class.forName("com.mysql.jdbc.Driver");rn conn =DriverManager.getConnection("jdbc:mysql://localhost:3306/test?user=root&password=&useUnicode=true&characterEncoding=utf-8");rn st =conn.createStatement();rn String sql="insert into jixiao2(day,classt,starttingtime,finishtime,origin,finish,startkm,finishkm,km,allowance)"+"values('"+day+"', '"+classt+"', '"+starttingtime+"', '"+finishtime+"','"+origin+"','"+finish+"', '"+startkm+"','"+finishkm+"','"+km+"','"+allowance+"')";rn st.execute(sql);rnrn rn catch (Exception e)rn rn e.printStackTrace();rn rn tryrn rn Class.forName("com.mysql.jdbc.Driver");rn Connection conn=DriverManager.getConnection(DBURL,DBUSER,DBPASS);rn ArrayList list =new ArrayList();rn String sql ="select * from jixiao2";rn// String sql1="select sum(km) as sumkm from jixiao2";rn PreparedStatement pstmt =conn.prepareStatement(sql);rn// Statement stmt=conn.createStatement();rn// ResultSet rssumkm1=stmt.executeQuery(sql1); rn ResultSet rs=pstmt.executeQuery();rn while(rs.next())rn rn Jixiao jx=new Jixiao();rn rn jx.setId(rs.getInt(1));rn jx.setDay(rs.getString(2));rn jx.setClasst(rs.getString(3));rn jx.setStarttingtime(rs.getInt(4));rn jx.setFinishtime(rs.getInt(5));rn jx.setOrigin(rs.getString(6));rn jx.setFinish(rs.getString(7));rn jx.setStartkm(rs.getInt(8));rn jx.setFinishkm(rs.getInt(9));rn jx.setKm(rs.getInt(10));rn jx.setAllowance(rs.getInt(11));rnrn list.add(jx);rn rn rn request.setAttribute("list", list);rn request.getRequestDispatcher("Showlist.jsp").forward(request, response);rn rn rn rn rn catch (ClassNotFoundException e)rn rn e.printStackTrace();rn catch (SQLException e)rn rn e.printStackTrace();rn rn rn rn rnrnrn
freeswitch对接讯飞语音识别模块
freeswitch对接讯飞语音识别模块源码分享,从头开始编译
freeswitch对接北京移动IMS
freeswitch对接北京移动IMS
把mybatis做统计的字段结果取出来 DATEDIFF
解决方案:在表对象SajIot里添加private int expireSum;自定义字段 想要保证expireSum里有值,SELECT , DATEDIFF(a.EXPIRE_DATE,CURDATE()) AS "expireSum"  FROM saj_iot a 需要注意a.EXPIRE_DATE 要是不添加a.  取得的值为0          SELECT ,
把查询结果放入数组,怎么取出来呢?在线等
数据库查询结果:rn[code=SQL]rn ID name rn 1 aarn 2 bbrn 3 ccrn[/code]rnrn然后我把结果放进数组:rn[code=C#]rnstring[] str=string[2];rnif(dr.Read())rnrn str[0]=dr[0].tostring();rn str[1]=dr[1].tostring();rnrnreturn str;rn[/code]rnrn然后我在后台得到这个数组,rnstring[] str = bll.get();//这方法返回数组rnrn可我怎么得到对应的数据呢?rn我以为是 rnstr[0][0] ,就得出 1 了,rnstr[1][0] ,就得出aa了,rnrnstr[0][1] ,就得出 2 了,rnstr[1][1] ,就得出bb了,rnrnstr[0][2] ,就得出 3 了,rnstr[1][2] ,就得出cc了,rnrn哎呀可是结果十分糟糕。根本不是这样的。rn求高人给指点下,万分感谢!rn
51Nod-1140-矩阵相乘结果的判断
ACM模版描述题解矩阵乘法的复杂度是 O(n^3),大概会超时,所以需要降维,可以构造一个 X 矩阵,根据矩阵乘法结合律来判断 X * A * B == X * C,但是这种解法存在一个隐患,也就是降维会存在信息的丢失,最后可能出现结果不对的情况,虽然这种情况出现的几率十分低,但是处于安全的考虑,还是随机生成 X 矩阵比较好,并且在时间允许的范围内进行双 X 矩阵判定更安全,具体的看代码吧~~~代码
if then 判断多个结果怎么做
比如我写上 IF button1.setfocus then 后面我想写显示窗体2 关闭窗体1 类似登陆窗口那个怎么实现啊rn我支持写上FORM2.SHOWModal 或写 form1.close 我想同时表达那2种意思 请高手帮我解答一下
第二章 判断结果 作业
E201_02_02判断闰年题目要求:闰年的条件public class E201_02_02判断闰年 { /* 1.输入年数 2.先运算她是否可以被4整除,但不能被100整除 3.或者是或能被4整除,又能被400整除。 4.如果符合说明他是闰年 */ public static void main(String...
查询结果逐条判断!
[color=#FF0000]就是这样:rn比如 A表有数据的数据,B表没有;B有的,A表不一定会有.就会出现三种不同的情况:A1B0:A1B1:A0B1 rn 然后我查询A表中的一个数据看它在A或B中的存在情况,如果在A表里面就显示 1;如果在B表里面,就显示2;如果两个表都有就显示3.[/color]
怎样判断结果????
我想做一个用户登陆网页,当用户名和密码为真时就进入正确网页,当用户名或密码为空或者错误时就进入错误网页,这个程序用PHP+MYSQL应该怎么写才对。。rnrn例:rn$SQL="select * from user_table where user_name='".$uname."' and password='".$upass."'";rn//下面是判断用户名和密码的rnif 结果为真是进入正确页面rnrnelsern 结果为假时进入错误页rnrn各位大虾。请问这个程序应该怎么写。。请教了。。
查询结果判断
我如何判断我的查询结果中有几条记录?或是没有查到?
第二章 判断结果
public class E_201_02_01_求最大值 { public static void main(String[] args) { //1.提示输入两个数 //2.接受输入两个数啊,a,b //3.计算较大值(如果a大于b则把a存入max,否则把b存在max中) //4.输出结果 System....
判断二叉搜索树后序遍历结果
问题描述: 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。数组为空为NO 思路: 如下图所示,搜索树后序遍历结果满足:最后一位为该树的root,其余数可视为两部分,它的左子树和右子树,并且左子树中所有点均小于root,右子树中所有点均大于root; 如果有出现在左子树中数大于root,或右子树中
完成【结果判断方法】
本课程适合JAVA初学者,如果你学过java的基础知识,但是没有项目经验,那么这个项目是你的佳选择。
矩阵相乘结果的判断
给出三个N*N的矩阵A, B, C,问A * B是否等于C? Input 第1行,1个数N。(0 &amp;lt;= N &amp;lt;= 500) 第2 - N + 1行:每行N个数,对应矩阵A的元素。(0 &amp;lt;= M[i] &amp;lt;= 16) 第N + 2 - 2N + 1行:每行N个数,对应矩阵B的元素。(0 &amp;lt;= M[i] &amp;lt;= 16) 第2N + 2...
判断输出结果(指针)
#include &amp;lt;stdio.h&amp;gt; #include &amp;lt;stdlib.h&amp;gt; int main() { int a=10, *pa = &amp;amp;a; func(pa); printf(&quot;%d\n&quot;,*pa); return 0; } int func(int *pa){ //func()函数的功能是生成一个指针,值为30。与原指...
判断数据查询结果
select top 1 "column name1" from table where column name2= 123456rn用什么方法判断查询结果,如有数据则TEXTBOX.TEXT = column_name1查询出来的值,如果找不到数据则提示信息
判断输出结果
[code=&quot;java&quot;] public class Chess extends BoardGame { Chess() { super(11); System.out.println(&quot;Chess constructor&quot;); } public static void main(String[] args) { Chess x = new Chess(); ...
51nod-1140-矩阵相乘结果的判断
给出三个N*N的矩阵A, B, C,问A * B是否等于C?
添加判断结果
<p>n 本课程旨在帮助学习者快速入门R语言:n</p>n<p>n </p><ul><li>n <img src="https://img-bss.csdn.net/201906011317058511.png" alt="" />课程系统详细地介绍了使用R语言进行数据处理的基本思路和方法。n </li>n <li>n 课程能够帮助初学者快速入门数据处理。n </li>n <li>n 课程通过大量的案例详细地介绍了如何使用R语言进行数据分析和处理n </li>n <li>n 课程操作实际案例教学,通过编写代码演示R语言的基本使用方法和技巧n </li>n </ul><p>n <br /></p>n<p>n <img src="https://img-bss.csdn.net/201906011318077287.png" alt="" /></p>
多线程并行执行,然后汇总结果
代码下载地址:https://download.csdn.net/download/hekf2010/10926623 很多时间,需要多线程并行处理,然后汇总处理结果,例如,因为请参数数据量非常大,所以只能分批查询,然后将分批查询的结果汇总到一个数组中。 一、多线程类 import java.util.ArrayList; import java.util.List; import jav...
把结果统计出来
[img=http://hi.csdn.net/attachment/2901489_13094070357pye.jpg][/img]rn怎么得到: goodsNo goodsName oldPrice newPrice SellCount sumMoney(总价格 图中数据有错)rn 0110 果冻布丁 310 310 9 2790(newPrice*SellCount)rn 085 D.G.B 136 136 2 272rn......rnrnsumMonye的值是添加进去的,不用Sql语句计算。rn怎么统计?
把passwordFormat修改后的结果?
web.configrn ==>PasswordFormat.rnrn想要实现获取密码.(EnablePasswordRetrieval)rn比如把Hashed->Encrypted, 那么已经存在的密码还是hashed,那对于这部分用户就无法get password了?rn如何办?
怎样把结果这样了?
从网上获得了数据 rn rn 像 姓名 年龄("jones",20),姓名 年龄("marys",21)...... rnrn 把它转化为这种形式如:rn 姓名 年龄 rn marys 21 rn jones 20 rn ...... rn 其中可提供部分代码如:rn [color=#FF0000]void createTxt(String content,String fileName)rn FileWriter fw = null;rn BufferedWriter bw = null;rn rn try rn System.out.println("sssssss");rn fw = new FileWriter("D:/"+fileName+".excel");rn //构建一个带缓存的输出流rn bw = new BufferedWriter(fw);rn bw.write(content);rn //把缓存中的内容全部推到文件中rn bw.flush();rn catch (IOException e) rn // TODO Auto-generated catch blockrn e.printStackTrace();rn finallyrn try rn bw.close();rn fw.close();rn catch (Exception e2) rn bw = null;rn fw = null;rn rn rn [/color]rn rn 怎么解决啊,可从上面代码中规定一种格式,求解
怎样把的结果传给
怎样把的结果传给作为它的 value??谢谢,,,
freeswitch学习笔记:将电话路由到Lua脚本
在快速测试的情况下,可以直接使用如下的originate命令在FreeSWITCH中外呼一路通话,并在电话的本端执 行Lua脚本: originate user/1000 &amp;lua(test.lua) 其中,lua是一个App,它的参数就是脚本的名字,脚本的默认路径在安装路径的scripts目录下,当然你也可 以指定一个绝对路径,如/tmp/test.lua。 在Dialplan XML...
freeswitch 利用数据库与lua脚本管理user
1,在freeswitch conf 修改,使用user.lua 去做用户管理 autoload_configs/lua.conf.xml: &amp;lt;param name=&quot;xml-handler-script&quot; value=&quot;user.lua&quot; /&amp;gt; autoload_configs/lua.conf.xml- &amp;lt;param name=&quot;xml-handler-bi...
两个查询结果,一个结果中包含另一结果,怎么把包含的结果去掉
两个查询结果,一个结果中包含另一结果,怎么把包含的结果去掉
相关热词 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池 c#5.0 安装程序 c# 分页算法