【问题标题】:What controls user locale when performing handover to phone执行切换到电话时控制用户区域设置的内容
【发布时间】:2020-02-03 10:57:54
【问题描述】:

我目前正在使用 Google SDK 上的 Actions 和 Microsoft 的 Bot Framework 进行操作。在此操作中,我构建了一个后备方案,如果用户通过语音多次未能输入产品代码,则允许用户在手机上输入产品代码。此设置在英语中运行良好,但我的操作是多语言的,并且也支持荷兰语和法语。

我遇到的问题是,当用户在荷兰语或法语中使用我的操作时,当他们接受将对话转移到他们的手机时,一旦它在我的手机上,对话就会以英语继续。您可以在下面找到我在处理程序中使用的代码。

新的表面处理程序

endpoint.intent(GoogleIntentTypes.NewSurface, async (conv: ActionsSdkConversation) => {

  logger.logDebug("Received new surface request")
  const locale = conv.user.locale;

  if (conv.arguments!.get('NEW_SURFACE')!.status! === 'OK') {
    conv.ask(this.messages.getResponse("AskForProductNumber_SSML", locale));
  } else {
    conv.close(this.messages.getResponse("EndConversation_SSML", locale));
  };
});

从请求进入我的 webhook 的那一刻起,我的对话区域设置就会切换到 en-US。这让我觉得语言环境是从我手机上的设置中获取的,但我在这方面的文档中找不到任何内容。有谁知道在执行切换到电话时可能导致语言环境切换的原因是什么?

【问题讨论】:

    标签: localization internationalization actions-on-google


    【解决方案1】:

    我的理解是语言环境是基于发送请求的设备的语言环境。

    This page on "languages and locales"(强调我的)说:

    区域设置是使用 Google 助理设置中设置的语言和设备设置中设置的区域构建的。这些组合需要形成一个受支持的语言环境。例如,设置为 BR 区域的设备和设置为 en-US 的 Google 助理设备会产生 en-BR 区域设置,Actions on Google 不支持。

    【讨论】:

    • 所以我做了一些测试,确实是这样。当我将手机的主要语言从英语(美国)切换到荷兰语时,切换后我的对话仍在荷兰语中继续,即使在英语对话中也是如此。当您在手机设置中设置了多种语言时,它会尝试与其中一种语言匹配。因此,即使荷兰语是设备中设置的第二语言,切换后的荷兰语 Google 对话仍将是荷兰语。
    猜你喜欢
    • 2021-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-02
    • 2010-11-22
    • 2012-07-31
    • 2019-12-11
    相关资源
    最近更新 更多