freeSwitch API 调用自定义参数分隔符
2026/6/1 1:03:25 网站建设 项目流程

在工作中调查一个解析asr识别结果错误问题时顺带看了下源码,发现里面支持自定义传参分隔符:

——识别结果的XML内容里面包含|

方式1:

SWITCH_DECLARE(unsigned int) switch_separate_string(char *buf, char delim, char **array, unsigned int arraylen) { if (!buf || !array || !arraylen) { return 0; } if (*buf == '^' && *(buf+1) == '^') { char *p = buf + 2; if (*p && *(p+1)) { buf = p; delim = *buf++; } } memset(array, 0, arraylen * sizeof(*array)); return (delim == ' ' ? separate_string_blank_delim(buf, array, arraylen) : separate_string_char_delim(buf, delim, array, arraylen)); }

regex ^^!<name>|xfs</name>!<name>(.*?)</name>!%1

输出|xfs

方式2(只支持~/|):

if (*d == 'm' && *(d + 1) == ':' && *(d + 2)) { char t = *(d + 2); switch (t) { case '|': case '~': case '/': d += 3; delim = t; break; default: break; } }

regex m:~<name>|xfs</name>~<name>(.*?)</name>~%1

输出|xfs

针对方式1,同理

sofia ^^! status!profile!internal

sofia ^^* status*profile*internal

重点说明哈:不是所有API都支持自定义哈

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询