You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Webchat向MS Bot Framework机器人发送国家代码实现多语言对话?

让Web Chat向Bot Framework机器人发送用户国家信息的方法

嗨,我来帮你搞定这个问题!要实现Web Chat把用户的国家/地区代码传递给Bot Framework机器人,有几个实用的方案,我给你详细说明:

方案一:在Web Chat初始化时附加用户国家信息

你可以先通过前端方式获取用户的国家代码(比如利用浏览器的navigator.language,它会返回类似zh-CN、en-US这样的语言+国家代码组合),然后在初始化Web Chat时,把这个信息添加到用户属性里。

示例代码:

// 提取用户的国家代码
const userLocale = navigator.language;
const countryCode = userLocale.split('-')[1]; // 得到如"CN"、"US"这样的国家代码

// 初始化Web Chat,将国家代码附加到用户对象中
window.WebChat.renderWebChat({
    directLine: window.WebChat.createDirectLine({ token: '你的Direct Line令牌' }),
    userID: '自定义用户ID',
    username: '自定义用户名',
    user: {
        id: '自定义用户ID',
        name: '自定义用户名',
        countryCode: countryCode
    }
}, document.getElementById('webchat'));

在机器人端接收:

  • 如果你用Node.js开发机器人,可以通过turnContext.activity.from.properties.countryCode获取这个值
  • 如果你用C#开发,就从turnContext.Activity.From.Properties["countryCode"]读取

方案二:主动发送自定义事件给机器人

另一种方式是在Web Chat加载完成后,主动发送一个包含国家代码的自定义事件,这种方式更灵活,比如你可以在用户触发某个操作时再发送,而不是初始化时就发。

示例代码:

// 创建Direct Line连接
const directLine = window.WebChat.createDirectLine({ token: '你的Direct Line令牌' });

// 假设已经获取到国家代码
const countryCode = 'CN';

// 发送自定义事件
directLine.postActivity({
    type: 'event',
    name: 'UserCountryInfo', // 自定义事件名称,机器人端要对应这个名称
    value: { countryCode: countryCode },
    from: { id: '自定义用户ID' }
}).subscribe(
    id => console.log('国家信息事件发送成功,ID:', id),
    error => console.error('发送失败:', error)
);

// 初始化Web Chat
window.WebChat.renderWebChat({ directLine }, document.getElementById('webchat'));

在机器人端处理:

  • Node.js:在onEvent处理器中监听UserCountryInfo事件,从context.activity.value.countryCode获取值
  • C#:在OnEventActivityAsync方法中判断事件名称,然后读取activity.Value里的国家代码

方案三:后端注入国家代码(更准确)

如果你的Web Chat是通过后端渲染的,推荐这种方式:后端可以通过用户的请求IP解析出实际国家(或者从用户的登录信息、会话中获取地域),然后把国家代码注入到前端的Web Chat初始化代码里。这种方式比前端获取更准确,因为浏览器语言设置不一定和用户实际所在国家一致。

比如后端(以ASP.NET为例)可以在页面渲染时把国家代码传给前端:

<script>
    const countryCode = '@Model.CountryCode'; // 从后端模型获取
    // 后续用这个countryCode执行方案一或方案二的逻辑
</script>

注意事项

  • navigator.language获取的是浏览器的语言设置,可能和用户实际所在国家不一致,如果需要精准的地域信息,建议结合后端IP解析
  • 确保机器人端和Web Chat端的事件名称、属性名称保持一致,避免接收不到数据

内容的提问来源于stack exchange,提问作者BoIde

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 07:52:18