【问题标题】:Botframework speech ignore urlBotframework 语音忽略 url
【发布时间】:2018-07-17 14:16:17
【问题描述】:

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

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

有没有办法规范化网址或将其从机器人的语音响应中完全删除?

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

【问题讨论】:

  • 它在读什么,一个 HTML 文件?
  • @SteveJ 用有关链接的信息更新了问题
  • 嗯。不确定是否使用降价,但 HTML 标记具有 alt 标记以提示屏幕阅读器。

标签: c# botframework text-to-speech


【解决方案1】:

有没有办法规范化网址或将其从机器人的语音响应中完全删除?

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

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}");

测试结果:

【讨论】:

    猜你喜欢
    • 2020-09-24
    • 1970-01-01
    • 2023-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-17
    • 2011-07-25
    相关资源
    最近更新 更多