我正在开发一个模拟服务台的机器人。它的服务之一是回复常见问题,有时是通过向用户提供SharePoint中站点/文档的链接,工资登录等。
当对响应使用文本到语音转换时,机器人会读出包括https://和请求参数在内的整个url。
有没有办法对urls进行标准化,或者将它们从机器人的语音响应中完全删除?
链接主要来自QnAMaker答案,以及一些硬编码的URL,这两个URL都被编码为<a href=...>标签或[Example website](example.com)标记样式的链接。
发布于 2018-07-17 14:16:18
有没有办法对urls进行标准化,或者将它们从机器人的语音响应中完全删除?
您可以尝试使用正则表达式将标记/标记链接匹配并替换为该链接的文本,然后指定要朗读的文本。以下示例代码适用于我,请参考它。
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}");测试结果:

https://stackoverflow.com/questions/51364651
复制相似问题