如何查询助手的口语语言?如何在Fulfillment中获取用户触发意图时的语言?
Hey Guzman,针对你提出的两个问题,我整理了几个实用的解决方案,希望能帮到你:
关于获取助手及用户口语语言的解决方案
一、获知助手所使用的口语语言
通常有几种直观的方式可以查到助手当前配置的口语语言:
- 如果你在开发平台的控制台操作,直接进入助手的设置页面(一般在「语言/区域配置」板块),就能看到默认语言以及支持的多语言列表。
- 要是通过API调用助手,你可以在调用请求的参数里指定语言;同时也能调用获取助手配置的API接口,响应数据里会明确返回助手的语言设置详情。
- 另外,在测试助手对话时,多数平台会在测试界面的顶部或侧边显示当前使用的语言标识,比如
en-US、zh-CN这类标准语言代码。
二、在Fulfillment中获取用户触发意图时的口语语言
如果当前请求头和请求数据里没直接找到这个信息,可以试试这几个可行方案:
- 利用会话上下文传递
大部分对话平台会把用户的语言信息存在会话上下文(Context)里,你可以在意图配置中添加对应参数,或者直接在Fulfillment代码里读取上下文的语言字段。比如有些平台会将语言信息放在session.user.locale或contexts[].parameters.language这类路径下,具体可以参考你所用平台的文档,这是最常用的方式。 - 配置系统内置语言参数
很多对话平台都有预定义的系统语言变量,你可以在意图配置里把这个变量添加为参数,当用户触发意图时,助手会自动捕获用户当前使用的语言,并传递到Fulfillment请求中。比如在Dialogflow里,你可以用$locale这个系统变量,将其加入意图的参数列表,Fulfillment就能直接拿到这个值。 - 留存初始会话的语言信息
如果用户第一次和助手交互的请求里包含语言信息(比如初始请求的locale字段),你可以在Fulfillment里把这个值存储到用户会话缓存或数据库中,后续触发意图时直接从存储中读取就行,适合多轮对话场景。 - 排查请求的深层嵌套字段
有些平台会把语言信息藏在请求的扩展嵌套字段里,比如originalDetectIntentRequest.payload这类结构中,你可以仔细查看请求的完整JSON数据,说不定在某个深层子字段(比如user或environment)里能找到它。
内容的提问来源于stack exchange,提问作者Guzman Vigliecca
相关产品推荐
相关产品推荐

