如何在 botframework 网络频道中捕获 user_country/city?

How to capture user_country/city in botframework web channel?

我想在 Application insights form azure botframework chatbot 运行 Web 聊天频道上捕获最终用户位置 (country/city)。 App insights instrumentation 已经到位页面视图和正在收集的自定义事件,但似乎 client_City 和 client_CountryOrRegion 没有正确填充。是否有特定的频道或网络服务配置?

可以使用以下方法访问地理位置数据。如果用户授予访问此数据的权限,这将为您提供经度和纬度。

然后您将需要另一个进程或库来将位置数据转换为现实世界中的物理位置。

navigator.geolocation.getCurrentPosition( async (position) => {
  const { latitude, longitude } = position.coords;
  console.log(latitude, longitude)
})

有一些 NPM 包也可以为您做一些这样的事情。

如果您查看我发布的答案 here,您可以看到我提供的一个示例,该示例介绍了如何获取位置数据以用于生成和显示地图作为机器人的一项功能。

请注意,在上面的回答中,机器人正在响应显示地图的请求,发送 activity 然后由网络聊天获取。 Web Chat 收到请求后,将获取位置数据并显示地图。

在您的情况下,您需要将数据发送回机器人,以便机器人进行处理。您可以参考网络聊天的 b.piggyback-on-outgoing-activities 示例,了解如何执行此操作。

希望得到帮助!