首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Botframework语音忽略url

Botframework语音忽略url
EN

Stack Overflow用户
提问于 2018-07-16 22:54:23
回答 1查看 67关注 0票数 1

我正在开发一个模拟服务台的机器人。它的服务之一是回复常见问题,有时是通过向用户提供SharePoint中站点/文档的链接,工资登录等。

当对响应使用文本到语音转换时,机器人会读出包括https://和请求参数在内的整个url。

有没有办法对urls进行标准化,或者将它们从机器人的语音响应中完全删除?

链接主要来自QnAMaker答案,以及一些硬编码的URL,这两个URL都被编码为<a href=...>标签或[Example website](example.com)标记样式的链接。

EN

回答 1

Stack Overflow用户

发布于 2018-07-17 14:16:18

有没有办法对urls进行标准化,或者将它们从机器人的语音响应中完全删除?

您可以尝试使用正则表达式将标记/标记链接匹配并替换为该链接的文本,然后指定要朗读的文本。以下示例代码适用于我,请参考它。

代码语言:javascript
复制
var qna_answer = "please check [this documentation](https://docs.microsoft.com)";

//var qna_answer = "please check <a href='https://docs.microsoft.com'>this documentation</a>";

string innertxt, res = "";

if (Regex.Match(qna_answer, @"<a [^>]*>(.*?)</a>").Success)
{
        innertxt =Regex.Match(qna_answer, @"<a [^>]*>(.*?)</a>").Groups[1].Value;

        res = Regex.Replace(qna_answer, @"<a [^>]*>(.*?)</a>", innertxt);
}
else if (Regex.Match(qna_answer, @"\[([^]]*)\]\(([^\s^\)]*)[\s\)]").Success)
{
    innertxt = Regex.Match(qna_answer, @"\[([^]]*)\]\(([^\s^\)]*)[\s\)]").Groups[1].Value;

    res = Regex.Replace(qna_answer, @"\[([^]]*)\]\(([^\s^\)]*)[\s\)]", innertxt);
}


await context.SayAsync(text: $"{qna_answer}", speak: $"{res}");

测试结果:

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51364651

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档