使用Azure Bot Framework网络聊天无法单击电话号码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Azure Bot Framework网络聊天无法单击电话号码相关的知识,希望对你有一定的参考价值。

设置

[我使用javascript中的QnAMakerAzure Bot ServiceBot Framework Web Chat客户端创建了Azure QnA Web聊天机器人。

这是我如何使用html + JS初始化机器人的示例:

<script src="https://cdn.botframework.com/botframework-webchat/4.6.0/webchat-es5.js"></script>

<div id="projekt-webchat" role="main"></div>
window.WebChat.renderWebChat(
    
       directLine: window.WebChat.createDirectLine(
          secret: 'SECRETHERE'
       ),
       userID: 'YOUR_USER_ID',
       username: 'Web Chat User',
       locale: 'en-US',
       botAvatarInitials: 'WC',
       userAvatarInitials: 'WW'
    ,
    document.getElementById('projekt-webchat')
);

我的机器人已从QnA Maker连接到具有QnA对知识库,如下所示:

问题gimmenumber答案+49 5251 123456

本机浏览器检测

[某些浏览器会将其呈现为可点击的超链接,因此我选择拨打该号码。但是,其他浏览器看不到该电话号码为超链接,因此我无法单击它

  • Works-Microsoft Edge 41
  • Works-Microsoft EdgeHTML 16
  • Broken-Google Chrome版本78
  • Broken-Microsoft Edge版本79

我已经尝试将答案从+49 5251 123456更改为以下内容:

  • <a href="tel:123-456-7890">123-456-7890</a>
  • <a rel="nofollow" class="external free" href="tel:+49-30-1234567">tel:+49-30-1234567</a>

但是答案似乎就像这些标签<a></a>并不是标签而是正常文本一样。 (因此仍然无法点击,而且看起来很丑)。

出于好奇,我自己创建了这个HTML,对于上述所有浏览器来说,情况都是一样的。

<div>+49 5251 123456</div>

为什么会这样?我可以解决吗?如何解决该问题,以便单击电话号码?

降价渲染

机器人服务还将在答案中提供降价标记,以将文本格式设置为粗体,斜体或链接。

因此以下示例起作用

//making headings works with this
await turnContext.SendActivityAsync(MessageFactory.Text("# " + turnContext.Activity.From.Id));
//bold works
await turnContext.SendActivityAsync(MessageFactory.Text("**" + turnContext.Activity.From.Id + "**"));

但是,当我尝试使用降价促销方式提供电话号码时,仍然遇到问题。这是到目前为止我尝试过的内容:

await turnContext.SendActivityAsync(MessageFactory.Text("[example](tel:123456)"));
await turnContext.SendActivityAsync(MessageFactory.Text("[example](tel:+49 5251 123456)"));
await turnContext.SendActivityAsync(MessageFactory.Text("[example](tel:+495251123456)"));
await turnContext.SendActivityAsync(MessageFactory.Text("[example](tel:05251123456)"));
await turnContext.SendActivityAsync(MessageFactory.Text("[example](tel:05251 123456)"));

最终导致这样的错误渲染:

Example Chatbot Output with tel not working

答案

您可能应该在单独的元素中显示电话号码。当元素显示为嵌入式块时,Web浏览器将不会创建超链接。

以上是关于使用Azure Bot Framework网络聊天无法单击电话号码的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 Bot Framework 向 Teams 中的用户发送通知?

Microsoft Bot Framework - 如何将数据从 Azure 数据库获取到我的 Bot 项目?

从 Azure Bot App Service Console 运行 Bot Framework Orchestrator 命令时出现问题

从 Web 客户端调用 Microsoft Bot Framework 机器人,无需在 Azure 上托管

Azure 机器人微软Azure Bot 编辑器系列 : 机器人/用户提问回答模式,机器人从API获取响应并组织答案 (The Bot Framework Composer tutorial(代码片段

在公共领域托管 Bot(Microsoft Bot Framework)[重复]