Teams Bot如何做全球化

探讨了Office365 Teams LuckyDrawbot在实现全球用户适用性时面临的挑战,包括多语言、多时区处理及法规遵从性,强调了设计时需考虑的细节。

Office365在全球有大量的用户,可以说是拥有最多用户的商业SaaS平台。Teams最近在发展迅猛,有1300万日活用户,已经超越了Slack。? Microsoft Teams overtakes Slack with 13 million daily users

我在设计Teams LuckyDraw bot的时候就希望我的bot能够被全世界的用户所使用,这个实际上还是一个非常有挑战的事情。抛开各国的法律法规要求(比如欧盟的GDPR,国家领土归属问题)不说,抛开不同宗教文化要求不说,单单多语言,多时区就是十分复杂。

举几个语言的例子:

  • 英语里有单复数,中文和一些语言里就没有。你在设计多语言界面的时候就需要注意
  • 即使是英语,美式英语(en-US),英式英语(en-UK),印度英语(en-IN),有很多区别
  • 大多数语言是从左到右书写,但是有些是从右到左。界面设计特别需要注意

再举几个时区的例子:

  • 有很多土地领域较大的国家,不像中国只有一个时区,同一个国家有几个时区是很正常的事情
  • 有些国家有些区域有夏令时。比如澳大利亚的布里斯班和悉尼,虽然在一个时区,但是悉尼有夏令时,也就是说平时大家时间一样,但是一到夏天,时间就变得不同了
  • 不同国家对于每周第一天是周一还是周日,定义不同
  • Samoa和Tokelau这两个地方没有2011年12月30日这一天,他们直接从29日跳到了31日( 具体原因 )。不知道这种事情会不会再次发生 (看到这里大家是不是和我当时一样,心里一万个。。。。)
  • 日本从2019年5月1日开始新的calendar,为此,Windows等系统,.NET等运行环境,各类时间处理的库都全面升级,打补丁,出新版本

看了上面几个例子,是不是觉得很无语。是不是瞬间觉得那些国际化的SaaS平台有多伟大和复杂。

那我们来看看Teams app/bot如何处理时间问题,一个好消息是Teams已经帮我们处理了很多问题,来看一下Teams发送给bot的请求payload:

{
    "name": "composeExtension/fetchTask",
    "type": "invoke",
    "timestamp": "2019-06-17T14:32:04.956Z",
    "localTimestamp": "2019-06-18T00:32:04.956+10:00",
    "id": "f:1361493733941541435",
    "channelId": "msteams",
    "serviceUrl": "https://smba.trafficmanager.net/apac/",
    "from": {
        "id": "29:1l8B9m9SOOdHTqLDgmXvSrJyHfwd2ihooa7cxgtzJ8QjQ4WFC4mA_8K2Sa7jL-xUh7g4yh8sZIiDOX6vTtoaz6w",
        "name": "Tony Xia",
        "aadObjectId": "56c6599d-9216-4078-a8cf-3f039d36e1fd"
    },
    "conversation": {
        "isGroup": true,
        "conversationType": "channel",
        "tenantId": "aece5000-341d-493a-841d-f67e417f1447",
        "id": "19:bf1cbc367561473db0c3fe762c11b508@thread.skype"
    },
    "recipient": {
        "id": "28:89e9cdd8-f500-4696-a701-7c2323f62a86",
        "name": "TestMsgExt"
    },
    "entities": [
        {
            "locale": "en-US",
            "country": "US",
            "platform": "Windows",
            "type": "clientInfo"
        }
    ],
    "channelData": {
        "channel": {
            "id": "19:bf1cbc367561473db0c3fe762c11b508@thread.skype"
        },
        "team": {
            "id": "19:bf1cbc367561473db0c3fe762c11b508@thread.skype"
        },
        "tenant": {
            "id": "aece5000-341d-493a-841d-f67e417f1447"
        },
        "source": {
            "name": "compose"
        }
    },
    "value": {
        "commandId": "start",
        "commandContext": "compose",
        "context": {
            "theme": "default"
        }
    },
    "locale": "en-US"
}

上面这个payload里有几个关键的值:

  • timestamp:当前的UTC时间
  • localTimestamp:当前用户所在的他/她的本地时间,加号后面的小时数针对UTC时间的offset
  • locale:当前用户所使用的语言

有了这几个参数,实际上就你的bot就知道改如何处理了吧?

不过,在具体的bot设计中,你还需要时刻留意这几点:

  • 一家公司(一个office365的tenant,可能有使用不同语言的人,可能分散在不同国家,在不同时区)
  • 一个Team或者一个频道channel里的用户也可能使用不同语言,分散在不同国家,在不同时区
  • 即使是同一个用户,他可能旅游或者出差到不同时区的不同国家,他可能在手机上的Teams是中文,但是桌面版本使用英文。

所以。。。所以大家要把你的Teams app走向全世界,需要精心设计,全面考虑。Good Luck!

你可以按照以下步骤在VS2017中开发Teams Bot: 1. 安装开发工具:首先,确保你已经安装了Visual Studio 2017和Teams开发工具包。你可以从Visual Studio安装程序中选择"ASP.NET和Web开发"工作负载,以及"Microsoft Teams开发工具"选项。 2. 创建项目:在Visual Studio中,选择"文件" -> "新建" -> "项目",然后选择"ASP.NET Web应用程序(.NET Framework)"模板。给你的项目起个名字,并选择保存位置。 3. 选择模板:在"新建ASP.NET Web应用程序"对话框中,选择"空"模板,并勾选上"Web API"复选框。点击"确定"按钮创建项目。 4. 安装Teams NuGet包:在解决方案资源管理器中,右键点击你的项目并选择"管理NuGet程序包"。在NuGet包管理器中,搜索并安装"Microsoft.Bot.Builder.Teams"包。 5. 添加Bot代码:打开`Startup.cs`文件,并在`ConfigureServices`方法中添加以下代码: ```csharp services.AddSingleton<ITeamsActivityHandler, YourBotActivityHandler>(); ``` 这将注册你的Bot活动处理程序。 6. 创建Bot活动处理程序:在解决方案资源管理器中,右键点击你的项目并选择"添加" -> "新建文件夹"。创建一个名为"Bot"的文件夹。然后,在该文件夹中添加一个新类文件,命名为"YourBotActivityHandler.cs"(你可以自己取个合适的名字)。 7. 在`YourBotActivityHandler.cs`文件中,继承`TeamsActivityHandler`类,并实现你的Bot的逻辑。你可以重写父类的方法来处理不同类型的活动,比如消息、会议等。 8. 配置Bot凭据:打开`Web.config`文件,并在`appSettings`节中添加以下键值对: ```xml <add key="MicrosoftAppId" value="YOUR_APP_ID" /> <add key="MicrosoftAppPassword" value="YOUR_APP_PASSWORD" /> ``` 将"YOUR_APP_ID"和"YOUR_APP_PASSWORD"替换为你的Bot的应用程序ID和密码。 9. 调试和部署:你可以通过按下"F5"键来调试你的Bot。当它在本地运行时,你可以使用Bot Framework Emulator进行测试。当你准备好部署时,你可以发布到Azure或者任何支持ASP.NET的托管服务中。 这些是使用VS2017开发Teams Bot的基本步骤。你可以根据你的需求和功能来扩展和定制你的Bot。希望对你有所帮助!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值