Twilio用户Identity字段无法更新,其余字段如friendlyName更新正常如何解决
问题原因
Twilio Programmable Chat 服务的identity是用户创建时的唯一不可变字段,一旦用户创建完成就不支持修改,这是平台原生限制,和代码逻辑无关。你代码中即使把参数名改为SDK要求的小驼峰格式identity,也无法完成更新。
解决方案
方案1:使用自定义字段存储可变身份标识(推荐)
如果仅需要存储可修改的用户身份类标识,直接使用用户资源的attributes字段即可,该字段支持任意自定义结构数据的存储和更新,不会影响原有identity的唯一索引逻辑,示例代码如下:
$twilio->chat->v2->services(env('TWILIO_SERVICE_SID')) ->users('US2424637a5007483eb4bb781574be82aa') ->update([ "attributes" => json_encode(["customIdentity" => "smith"]), "friendlyName" => "peter smith" ] );
方案2:删除旧用户后重新创建
如果必须修改系统级的identity字段,只能先删除原有用户资源,备份相关数据后用新的identity创建新用户,示例代码如下:
// 备份原有用户数据 $oldUser = $twilio->chat->v2->services(env('TWILIO_SERVICE_SID')) ->users('US2424637a5007483eb4bb781574be82aa') ->fetch(); // 删除旧用户 $twilio->chat->v2->services(env('TWILIO_SERVICE_SID')) ->users('US2424637a5007483eb4bb781574be82aa') ->delete(); // 用新identity创建用户并迁移数据 $newUser = $twilio->chat->v2->services(env('TWILIO_SERVICE_SID')) ->users ->create([ "identity" => "smith", "friendlyName" => "peter smith", "attributes" => $oldUser->attributes, "roleSid" => $oldUser->roleSid // 其余需要迁移的字段按需补充 ]);
内容的提问来源于stack exchange,提问作者DevAtStack
相关产品推荐
相关产品推荐

