Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

技能开发设置需要用户授权问题 #5

Open
xiashangrui opened this issue Nov 20, 2019 · 21 comments
Open

技能开发设置需要用户授权问题 #5

xiashangrui opened this issue Nov 20, 2019 · 21 comments
Assignees
Labels
bug Something isn't working OAuth Rokid Developer OAuth with others 开放平台 若琪开放平台相关 技能开发 Skill Development

Comments

@xiashangrui
Copy link

请描述你遇到的问题
语音技能设置需要用户授权,测试技能入口词没有响应,未设置用户授权时技能正常

如何复现

复现步骤:
官方文档地址:https://developer.rokid.com/docs/2-RokidDocument/1-SkillsKit/rokid-oauth.html

  1. 创建语音技能,配置自己的技能服务器,语音技能测试通过
  2. 在技能配置里设置技能需要用户授权,服务器做相应授权判断(参考官方文档,根据$.context.user.accountLinkedId参数判断是否需要授权),若未授权返回相应数据
    3.使用入口词唤醒技能,此时rokid app上应该收到申请授权消息(官方文档),然而并没有,服务器回复需授权后rokid音箱没有任何响应了
@xiashangrui xiashangrui added the bug Something isn't working label Nov 20, 2019
@yorkie yorkie added 开放平台 若琪开放平台相关 技能开发 Skill Development labels Nov 20, 2019
@yorkie
Copy link
Contributor

yorkie commented Nov 20, 2019

你好,请问你的入口词是什么?另外请提供一下技能 ID

@xiashangrui
Copy link
Author

xiashangrui commented Nov 20, 2019 via email

@yorkie
Copy link
Contributor

yorkie commented Nov 21, 2019

Hi,@xiashangrui 另外请提供一下设备 SN 号,以及发生问题的时间点(容易复现,请再复现一次),我可以帮忙查一下是什么情况导致的。

@xiashangrui
Copy link
Author

xiashangrui commented Nov 21, 2019 via email

@yorkie
Copy link
Contributor

yorkie commented Nov 21, 2019

日志查过 NLP 命中正常,但是显示技能侧发送了一个 Card Response [SkillResponse.Card(type=ACCOUNT_LINK, content=null)],能否说明一下你们发送这个 ACCOUNT_LINK 的意图,以及如果不重要的话,可以去掉卡片试试。

@yorkie
Copy link
Contributor

yorkie commented Nov 21, 2019

另外,你们技能端是用什么编写的,以及是否有用到我们提供的库,这个也要提供一下哦。

@xiashangrui
Copy link
Author

xiashangrui commented Nov 21, 2019 via email

@yorkie
Copy link
Contributor

yorkie commented Nov 21, 2019

@xiashangrui 发送 Account Card 是在我们的第三方 OAuth 文档中描述的,请问你是需要对接第三方平台吗?

@xiashangrui
Copy link
Author

xiashangrui commented Nov 21, 2019 via email

@yorkie
Copy link
Contributor

yorkie commented Nov 21, 2019

那请问你是跟哪个服务授权?

@xiashangrui
Copy link
Author

xiashangrui commented Nov 21, 2019 via email

@yorkie
Copy link
Contributor

yorkie commented Nov 21, 2019

可以将 card 字段换成如下格式吗:

"card" : {
  "type" : "ACCOUNT_LINK",
  "content" : ""
}

@xiashangrui
Copy link
Author

xiashangrui commented Nov 21, 2019 via email

@yorkie
Copy link
Contributor

yorkie commented Nov 21, 2019

你好,服务端日志显示发送请求过去后出了问题,可以帮忙确认下技能那边是否有问题吗?发送方的请求是:

[{
  "version":"2.0.0",
  "session":{
    "sessionId":"***",
    "newSession":false,
    "attributes":null
  },
  "context":{
    "application":{
      "applicationId":"***",
      "media":{"state":"IDLE","itemId":""}
    },
    "device":{
      "basic":{
        "vendor":"***",
        "deviceType":"***",
        "deviceId":"0401051827001032",
        "masterId":"***",
        "voicetrigger":"若琪",
        "locale":"zh-cn",
        "timestamp":0
      },
      "media":{
        "state":"IDLE",
        "itemId":""
      },
      "location":{
        "country":"中国",
        "state":"***",
        "city":"***",
        "district":"",
        "timeZone":"Asia/Shanghai"
      },
      "deviceMode":{
        "userMode":{
          "childMode":false
        },
        "linkage":{
          "trigger":false
        }
      }
    },
    "user":{
      "userId":"***"
    },
    "voiceprint":{
      "voiceprintId":"",
      "voiceprintName":""
    }
  },
  "request":{
    "reqType":"INTENT",
    "reqId":"664e2fd59f0bec192a836b4f218931e9",
    "content":{
      "domain":"custom.skill.R593BCCBB57A4B1AB39179A4FD3C5269",
      "intent":"ROKID.INTENT.WELCOME",
      "sentence":"打开儿童房",
      "slots":{
        "openaction":{"pinyin":"","type":"openaction","value":"打开"},
        "domain":{
          "origin":"儿童房",
          "pinyin":"",
          "type":"app",
          "value":"custom.skill.R593BCCBB57A4B1AB39179A4FD3C5269"
        }
      }
    }
  }
}]

@yorkie yorkie added the OAuth Rokid Developer OAuth with others label Nov 21, 2019
@xiashangrui
Copy link
Author

xiashangrui commented Nov 21, 2019 via email

@yorkie
Copy link
Contributor

yorkie commented Nov 21, 2019

去掉最外层的[],复制了你的请求体测试可以正常响应

@xiashangrui 这个正常响应说的是你自己技能的单元测试吧,你还需要看下真实交互的过程中,确认以下:

  • 是否正常收到上述请求
  • 收到请求技能端的逻辑是否正常
  • 是否正常给出 Response

目前服务端日志是没有发现技能响应回来哦。

@xiashangrui
Copy link
Author

xiashangrui commented Nov 21, 2019 via email

@yorkie
Copy link
Contributor

yorkie commented Nov 21, 2019

打开儿童房_sendIntent] --- [rokid-grpc-executor-pool-2-thread-8] .r.o.n.d.s.p.s.CloudSkillProcessStrategy : skillRequest skill service get response is null, skip

服务端收到的 Response 是空,所以还是需要你那边再确认下,是否是哪里改动导致响应没有发送成功的问题哈。

@xiashangrui
Copy link
Author

xiashangrui commented Nov 21, 2019 via email

@wuyukai879293
Copy link

wuyukai879293 commented Nov 21, 2019

@xiashangrui
这边查看日志,今天收到两次请求,分别为下午两点多和五点多,发现有几个问题:

  1. 两点多的请求card节点中content字段为空,数据格式不对。
  2. 五点多的请求中,技能处理超时,已经处理3秒多了,这边默认2秒后就会将请求掐断,所以收不到你那边的响应,需要优化技能时间,你使用的skill-kit应该会打印技能的处理耗时,可以查看一下。

提供以下解决方案:

  1. 技能超时问题是需要您来解决的,这个你那边需要优化技能的响应时间。建议您在测试的情况下,使用直接返回固定response的方式来单独debug卡片问题,以免受到耗时的影响,增加调试的难度。
  2. 在响应时间合理的情况下,如何完成ACCOUNT_LINK 卡片的发送,关键在于card节点的数据格式。
"card":{
"type": "ACCOUNT_LINK",
"content": ""
}

其中content字段不能为空,是一个JSON String的类型。可以按如下形式进行构造。

Map<String, String> map = new HashMap<>();
//从请求体获取用户语句字段,此处你的sentence为”打开儿童房“
String sentence = req.getSentence();
//map 的 key 为 sentence
map.put("sentence", sentence);
String content = JSON.toJSONString(map);
card.setContent(content);

最终格式应为

"card":{
"type": "ACCOUNT_LINK",
"content": "{\"sentence\": \"打开儿童房\"}"
}

@xiashangrui
Copy link
Author

xiashangrui commented Nov 22, 2019 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working OAuth Rokid Developer OAuth with others 开放平台 若琪开放平台相关 技能开发 Skill Development
Projects
None yet
Development

No branches or pull requests

3 participants