You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Messagebird NuGet包3.2.0:C#中Recipients对象返回结构异常

问题分析与解决办法

可能的原因

  • SDK模型序列化缺陷:3.2.0版本的Messagebird C# SDK中,Recipients类的属性可能缺少正确的序列化特性(比如JsonPropertyName),导致API返回的totalCount、items等字段无法被反序列化到对象中,仅msisdns字段因配置正确被解析。
  • SDK内部响应处理简化:该版本SDK可能在封装响应时做了简化,刻意只提取了msisdns列表,丢弃了其他结构信息,和官方API的完整返回结构脱节。
  • API版本不匹配:虽然你用Postman调用的是相同API,但SDK可能默认调用了旧版本的API端点,旧版本返回结构不含totalCount、items等字段(此可能性较低,但可排查)。

解决办法

  1. 手动解析原始响应
    绕过SDK的封装对象,直接获取API的原始JSON响应,自己反序列化成完整结构。示例代码:

    using MessageBird;
    using System.Net.Http;
    using System.Text.Json;
    
    var apiKey = "你的API密钥";
    var client = new MessageBirdClient(apiKey);
    var message = new Message("发件人", "短信内容", new List<string> { "目标号码" });
    
    // 获取原始HTTP响应
    var httpResponse = client.ExecuteRequest(HttpMethod.Post, "/messages", message);
    var rawJson = await httpResponse.Content.ReadAsStringAsync();
    
    // 定义匹配API返回的完整模型类
    public class FullRecipients
    {
        [JsonPropertyName("totalCount")]
        public int TotalCount { get; set; }
        [JsonPropertyName("sentCount")]
        public int SentCount { get; set; }
        [JsonPropertyName("deliveredCount")]
        public int DeliveredCount { get; set; }
        [JsonPropertyName("failedCount")]
        public int FailedCount { get; set; }
        [JsonPropertyName("items")]
        public List<RecipientItem> Items { get; set; }
        [JsonPropertyName("msisdns")]
        public List<string> Msisdns { get; set; }
    }
    
    public class RecipientItem
    {
        [JsonPropertyName("msisdn")]
        public string Msisdn { get; set; }
        [JsonPropertyName("status")]
        public string Status { get; set; }
        [JsonPropertyName("createdDatetime")]
        public DateTime CreatedDatetime { get; set; }
        [JsonPropertyName("updatedDatetime")]
        public DateTime UpdatedDatetime { get; set; }
    }
    
    // 反序列化获取完整数据
    var fullRecipients = JsonSerializer.Deserialize<FullRecipients>(rawJson);
    
  2. 更换SDK版本
    尝试升级到最新版的Messagebird NuGet包,或者降级到3.2.0之前的稳定版本(比如3.1.0),新版本大概率修复了序列化或响应处理的bug,能正确映射完整的recipients结构。

  3. 检查SDK的API版本配置
    查看SDK是否支持指定API版本的参数,确保和你Postman调用的API版本一致。比如部分SDK允许通过MessageBirdClient的构造参数或属性设置ApiVersion为v1(如果Postman用的是v1版本)。

  4. 修复SDK模型类(本地修改)
    如果你能获取SDK的源代码,检查Recipients类的属性是否和API返回的字段名匹配。比如如果API返回的是totalCount,但SDK类里的属性是TotalCount且未加JsonPropertyName("totalCount")特性,手动添加该特性后重新编译引用,即可解决反序列化问题。

内容的提问来源于stack exchange,提问作者Harsh t

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 11:12:16