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

使用Boto3调用AWS Connect start_contact_evaluation遇UserId无效错误,如何程序化启动评估表单?

问题描述

我尝试调用Python SDK中boto3的start_contact_evaluation方法,但返回错误:

botocore.errorfactory.InvalidParameterException: An error occurred (InvalidParameterException) when calling the StartContactEvaluation operation: UserId is not a valid identifier

代码示例如下:

client = boto3.client('connect', region_name='eu-central-1')

response = client.start_contact_evaluation(
    InstanceId=instance_id,
    ContactId=contact_id,
    EvaluationFormId=evaluationf,
)

我使用环境变量中的AWS访问密钥测试该功能,推测错误与用户身份相关,猜测仅AWS Connect内部用户(而非AWS账户用户)可启动联系评估表单。请问如何通过boto3程序化启动评估表单?


解决方案

1. 错误核心原因

StartContactEvaluation接口必须指定UserId参数,且这个UserId是AWS Connect实例内部的用户ID(不是AWS IAM用户的ID/ARN)。你的代码中缺少该参数,且即使后续添加,也必须使用Connect内部用户的ID才能通过校验。

2. 获取Connect内部用户ID

可以通过boto3的list_users接口,根据用户名、ARN或其他属性筛选出目标Connect用户的ID:

# 先获取Connect用户ID
users_response = client.list_users(
    InstanceId=instance_id,
    Filters={
        'UserAlias': '目标用户名'  # 替换为你的Connect内部用户名
    }
)
# 提取第一个匹配用户的ID(假设用户名唯一)
connect_user_id = users_response['UserSummaryList'][0]['Id']

3. 修改后的完整代码

将获取到的Connect用户ID传入start_contact_evaluation:

client = boto3.client('connect', region_name='eu-central-1')

# 步骤1:获取Connect内部用户ID
users_response = client.list_users(
    InstanceId=instance_id,
    Filters={
        'UserAlias': 'your_connect_username'
    }
)
connect_user_id = users_response['UserSummaryList'][0]['Id']

# 步骤2:启动联系评估
response = client.start_contact_evaluation(
    InstanceId=instance_id,
    ContactId=contact_id,
    EvaluationFormId=evaluationf,
    UserId=connect_user_id  # 新增必填参数
)

4. 权限要求

确保你的AWS IAM用户(即环境变量中配置的访问密钥对应的身份)拥有以下权限:

  • connect:StartContactEvaluation
  • connect:ListUsers(用于获取Connect用户ID)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 15:46:08