调用querySendDetailsResponse时候SmsSendDetailDTOs为空[阿里云短信]

我在调用querySendDetailsResponse时候拿不到SmsSendDetailDTOs

因为我目前是使用的别人的子用户acesskey进行项目开发,我在用自己主账户acesskey的时候是可以查询到querySendDetailsResponse底下的SmsSendDetailDTOs,所以是因为权限是原因吗,有大佬知道是缺少了哪些权限吗

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
=====这是一个广告位,招租中,联系qq 78315851====
6 条回复 A 作者 M 管理员
  1. 大概率是因为当前使用的子用户访问权限不足以查询到querySendDetailsResponse的响应数据,要确保主账户已经为子用户分配了足够的权限来访问该API。

  2. 根据您提供的信息,可能是因为子用户没有完全的权限所致。建议您检查一下该子用户是否具备以下两种权限:

    AliyunSmsFullAccess:该权限是阿里云短信服务的完全访问权限,包括发送和查询短信、管理模板等操作。

    AliyunLogFullAccess:该权限是阿里云日志服务的完全访问权限,用于查询短信发送日志。

    如果该子用户缺少以上任意权限,可能会导致无法查询到短信发送详情信息。您可以登录阿里云控制台,在该子用户的权限设置中确认是否已经赋予上述权限。

    同时,建议您使用自己主账户的 AccessKey 进行测试,以便进一步排除权限问题。如果使用自己主账户的 AccessKey 仍然无法查询到短信发送详情,可能需要联系阿里云技术支持进行进一步的排查了。

    希望这些信息能对您有所帮助。若还有其他问题,请随时提问。

  3. 如果使用子用户的 AK/SK 权限调用 querySendDetailsResponse 时拿不到 SmsSendDetailDTOs,可以检查子用户的权限设置是否足够。

    需要给子用户授权 AliyunSmsFullAccess 权限,即访问短信服务的权限,确保子用户在访问该服务时有足够的权限。具体的操作步骤如下:

    1. 进入阿里云 RAM 控制台,单击左侧导航栏的“授权策略”;
    2. 在页面上方的“新建授权策略”中输入策略名称,然后在“授权策略文本”中添加以下内容:
    {    "Version": "1",    "Statement": [        {            "Action": "sms:*",            "Resource": "*",            "Effect": "Allow"        },        {            "Action": "fc:*",            "Resource": "*",            "Effect": "Allow"        }    ]}

    上述授权策略中给子用户同时授权了调用 Sms 和函数计算的所有操作权限。

    1. 单击“确定”,则保存该授权策略。

    最后,在子用户详情页的“授权策略”中进行绑定即可。绑定之后,再次使用子用户的 AK/SK 权限调用 querySendDetailsResponse,应该就可以顺利获取 SmsSendDetailDTOs 了。

  4. 楼主你好,根据你的报错提示,这个问题可能是由于你的调用方式不正确或者API参数设置错误导致的,可以按照以下步骤来排查:

    1. 确认你的代码中是否传递了正确的参数,包括手机号码、发送时间等信息是否正确。建议使用SDK提供的Java API示例进行测试,确保API调用本身没有问题。

    2. 检查你的阿里云账号是否开通了该服务,以及该服务是否已经通过审核。你可以在阿里云控制台中查看你的服务状态。

    3. 如果你的阿里云服务正常,并且API请求参数也正确,那么很有可能是由于网络问题导致的。你可以检查你的服务器和阿里云服务器之间的网络连接是否正常。

  5. 在调用阿里云短信服务的 querySendDetails 接口时,如果返回的 querySendDetailsResponse 中 SmsSendDetailDTOs 为空,可能有以下原因:

    1. 时间范围不正确

    请检查查询的时间范围是否正确。在调用 querySendDetails 接口时,需要指定起始和结束时间,并且时间跨度不能超过一个月。如果时间范围不正确,可能会导致查询结果为空。

    1. 手机号码格式不正确

    请检查查询的手机号码是否正确。在调用 querySendDetails 接口时,需要指定手机号码,并且手机号码必须符合国际通用的手机号码格式。如果手机号码格式不正确,可能会导致查询结果为空。

    1. 短信发送状态不正确

    请检查短信发送状态是否正确。在调用 querySendDetails 接口时,需要指定短信发送状态(例如成功、失败等),如果查询的状态与短信实际发送状态不符,可能会导致查询结果为空。

  6. 可能是因为子账户的权限不足导致无法查询到SmsSendDetailDTOs。您可以尝试在主账户下给子账户添加查询短信发送记录的权限,具体操作如下:

    登录阿里云控制台,进入访问控制RAM控制台。

    在左侧导航栏中选择“用户管理”,找到您的子账户并点击其名称。

    在“基本信息”页面中,点击“添加权限策略”按钮。

    在弹出的窗口中,选择“系统策略”标签页,然后在搜索框中输入“短信服务”,选择“AliyunSmsFullAccess”权限策略并点击“确定”。

    返回子账户的基本信息页面,刷新页面后即可看到添加的权限策略。

    添加完权限后,您可以再次尝试调用querySendDetailsResponse接口查询短信发送记录,看是否能够获取到SmsSendDetailDTOs。

  7. 可能是您在调用querySendDetailsResponse方法时没有传入正确的参数导致的。请确保您传入的参数包括正确的手机号码、短信发送日期和页码等信息。如果参数正确,但仍然无法获取到SmsSendDetailDTOs,则可能是由于该手机号码没有发送短信记录或者发送记录已过期导致的。您可以尝试更换一个手机号码进行测试,或者检查一下您的短信发送记录是否存在。