Closed BigHeadDev closed 5 months ago
发送的消息能提供一下吗?或者是截图提供一下。我需要去复现看看是什么问题。如果着急的话可以自己通过Payload的方式去读取出来。
发送的消息能提供一下吗?或者是截图提供一下。我需要去复现看看是什么问题。如果着急的话可以自己通过Payload的方式去读取出来。
感谢您的回复~
以下是一段原始的消息:
{
"senderPlatform": "Win",
"conversationId": "ciddMdFO0VC5G0TRgHJ4g6V1xjpcwkPRbWeou5QUvztP3E=",
"chatbotCorpId": "xxx",
"chatbotUserId": "$:LWCP_v1:$6t1sbZdETK3WHg9JeYzrqEnU6hf6d6WP",
"msgId": "msgENsp8ZQJ1gr2zundivEQcQ==",
"senderNick": "Daniel.陈",
"isAdmin": true,
"senderStaffId": "15614290011522912",
"sessionWebhookExpiredTime": 1718785903213,
"createAt": 1718780502940,
"content": {
"richText": [
{
"text": "我有一个问题要反馈!"
},
{
"text": "我今天使用了这个App"
},
{
"text": "直接卡死了!!!!"
},
{
"pictureDownloadCode": "mmgtyivG7Y0K+8E8QWgDChwLd2L6NNDwx9x4mBy+sJFhCbW/Ig6zPlFChBO03P0sEfa04r0GquTyZvjutOsDHrtgD1OIq4OuthWTop5LAsovpL1xcpLCJ122nTTIYXzoUtHDgKlfXnB0gagHcEj45bzWZtr+22x6nCm3qAVCuCYeoLhjpXqPcYpFtqD3UNs6ShVxoa+/v8oESm66+MrWEA==",
"downloadCode": "mIofN681YE3f/+m+NntqpTEQpftLM+gYDk6fJrLbN+hmAIHRYNmsZ+UnsEeTkO3VOGsLYUgXzanXhWLrsnemqOTrn7gxfn9w8Hyg8VpRJT8ijrznHfH/IlppjDKDPwMhWTUuWu7oFMt3DHgwnh0y7dC1oKsbbMFD4vyfgjwLtVi50jYl4XXWq7gQxK5JlEx60GryK1E3tiLdEeSUzm4HAg==",
"type": "picture"
}
]
},
"senderCorpId": "dingb30bc4a6f95b2caf",
"conversationType": "1",
"senderId": "$:LWCP_v1:$a4GwMxYNCHokGPOUY0k1k/KoWoVGyuuK",
"sessionWebhook": "https://oapi.dingtalk.com/robot/sendBySession?session=xxxx",
"robotCode": "xxxx",
"msgtype": "richText"
}
我想,是不是要读取content--richText这一层之后,才可以转成EnumerateArray?
除了这个问题,我还发现了一个问题。似乎钉钉的接口发生了改变,audio消息已经没有duration字段了,而robotMessage.GetAudioContent();的过程中,这一段代码没有获取到内容,而抛出了异常: property.GetProperty("duration").GetInt64(),
除了这个问题,我还发现了一个问题。似乎钉钉的接口发生了改变,audio消息已经没有duration字段了,而robotMessage.GetAudioContent();的过程中,这一段代码没有获取到内容,而抛出了异常: property.GetProperty("duration").GetInt64(),
这个问题我已经处理过了,建议你先升级到最新的包的版本,若不存在的话,会返回null 值。
前面的脚本我看一下,看是否也是因为发生变化导致的识别错误问题,也或许是其他问题
问题已修复,版本号v0.1.7
问题已修复,版本号v0.1.7
感谢您的回复和帮助~
除了这个问题,我还发现了一个问题。似乎钉钉的接口发生了改变,audio消息已经没有duration字段了,而robotMessage.GetAudioContent();的过程中,这一段代码没有获取到内容,而抛出了异常: property.GetProperty("duration").GetInt64(),
这个问题我已经处理过了,建议你先升级到最新的包的版本,若不存在的话,会返回null 值。
前面的脚本我看一下,看是否也是因为发生变化导致的识别错误问题,也或许是其他问题
今天发现“video”类型的消息,在以下代码中出现了问题:
if (property.TryGetProperty("duration", out var value)) {
videoContent.Duration = value.GetInt64();
}
原因是,钉钉那边返回的VideoContent中,"duration"是一个string,而不是long。导致在GetInt64();出错
应该不会把,如果说返回数据中存在duration 的字段时,它才会进行取值。这个判断的目的本身就是去校验这个字段是否存在,存在才赋值
应该不会把,如果说返回数据中存在duration 的字段时,它才会进行取值。这个判断的目的本身就是去校验这个字段是否存在,存在才赋值
相比 audio消息,video消息确实有"duration“字段,以下是钉钉API文档中的json示例:
{
"msgtype": "video",
"content": {
"duration": 4000,
"downloadCode": "mIofN681YE3f/****************OAORDnadz0WbSwWTiYvByBeYDjbg2ecUdno/RGtZ/sqzdvoh00EWw1U6xNqLC3Bk51U+i",
"videoType": "mp4"
}
}
可以清晰看到,"duration":4000确实是一个long(int)型的值。 但是在实际调试中,它长这样:
{
"msgtype": "video",
"content": {
"duration": "4000",
"downloadCode": "mIofN681YE3f/****************OAORDnadz0WbSwWTiYvByBeYDjbg2ecUdno/RGtZ/sqzdvoh00EWw1U6xNqLC3Bk51U+i",
"videoType": "mp4"
}
}
它变成了字符串 "duration": "4000",JsonElement中的GetInt64实现似乎不是强转,在这里报错了。 只能佩服钉钉团队的文档管理...
习惯就好,我去兼容掉吧
0.1.8 已修复此问题
习惯就好,我去兼容掉吧
3Q~
这段代码中,富文本解析有问题,The requested operation requires an element of type 'Array', but the target element has type 'Object'.”