【技术咨询】上传音频数据后返回500响应
e****g · e****g 发布于2017-08-16 21:05 浏览:5121 回复:14

应用平台:linux

编程语言:c/c++

问题描述:使用AVS兼容接入 /dcs/avs-compatible-v20160207/directives,上传音频数据,上传结束后,收到了StopCapture,
但是,之后的响应是500,没有任何提示,请问是那里出问题了。

Appid:10006796

点赞  ( 1 )
收藏
评论(14)
共14条回复 最后由b****z回复于2018-02-24 17:54
#2e****g回复于2017-08-17 20:32:10

论坛没有技术人员在?

0
#3m****r回复于2017-08-19 00:12:21

你至少还收到了stopcapture,我是一直没反应,或者很快就500响应了。奇怪。

也是nghttp2的库。

0
#4深****学回复于2017-08-21 11:02:24

这个问题已经提了好几天了,麻烦官方技术人员尽快回复一下吧。

0
#5哈****o回复于2017-08-21 15:05:37

StopCapture 收到后, 结束请求的时候,multiPart格式错误,才会报这个错呢,请检查一下客户端发送的数据,MultiPart是否格式不正确。


下次报问题之前,加一下上报的Event的MessageId吧,好追查问题,谢谢

0
#6e****g回复于2017-08-21 21:05:34

好的,主要是发给AVS是能正常是别的,响应没有提示,所以比较难定位原因。

我发的请求是这样的:

{
 "event":{
    "header":{
        "namespace":"SpeechRecognizer",
        "name":"Recognize",
        "messageId":"messageId-201",
        "dialogRequestId":"ca600-2c50-45fc-0821205636-0"
    },
    "payload":{
        "profile":"NEAR_FIELD","format":"AUDIO_L16_RATE_16000_CHANNELS_1"
    }
  },
 "context":[
    {"header":{"namespace":"AudioPlayer","name":"PlaybackState"},"payload":{"token":"","offsetInMilliseconds":0,"playerActivity":"IDLE"}},
    {"header":{"namespace":"SpeechSynthesizer","name":"SpeechState"},"payload":{"token":"","offsetInMilliseconds":0,"playerActivity":"FINISHED"}},
    {"header":{"namespace":"Alerts","name":"AlertsState"},"payload":{"allAlerts":[],"activeAlerts":[]}},
    {"header":{"namespace":"Speaker","name":"VolumeState"},"payload":{"volume":30,"muted":false}}
    ]
}


收到的DuerOS的StopCapture:

{
 "directive":{
 "header":{
 "namespace":"SpeechRecognizer",
 "name":"StopCapture",
 "messageId":"e53896c217684a3ebb1dadd083380525",
 "dialogRequestId":"ca600-2c50-45fc-0821205636-0"},
 "payload":{}
 }
}

请看看能不能定位到具体是哪里的格式异常,谢谢!

0
#7e****g回复于2017-08-22 17:40:51

官方技术人员呢?

0
#8哈****o回复于2017-08-23 13:25:38

这个问题的原因是:客户端在收到StopCapture之后,并没有及时的结束语音请求(或者说没有成功发送multipart的end boundary。dueros在发送StopCapture之后,等了5S,request依然没有结束,与是服务器主动结束了本次请求。

0
#9H****7回复于2017-08-23 13:33:39

用charles抓一个包给我们,网络问题看包,辛苦!

0
#10e****g回复于2017-08-23 18:17:59

发给AVS的话是可以正常结束的,而且是按照格式 "\r\n--boundary--\r\n"发的,  不知道DuerOS的兼容模式有什么不同。另外一个类似问题的帖子,那位提问的工程师说找到了不一致的地方,但是没有具体说明。


看了一下 charles 工具,好像是抓手机端的吧,我们的是arm linux 设备上的,似乎无法做同样的操作,用wireshark抓到的是加密的包

0
#11e****g回复于2017-08-25 16:58:58

又测试了一下,目前发送的数据结束跟java客户端是一样的,但是有以下问题:

1)如果没有收到Stopcapture就发结束的话,会没有任何响应。接入AVS的话是正常的,在DuerOS的AVS兼容方式,请问是要发什么数据或者要怎么处理?

2)如果一直上传数据,等收到Stopcapture以后再停止,回的是 “抱歉,我不太确定”,好像识别不正确。这个是什么原因?

麻烦再跟进下,谢谢


0
TOP