Skip to main content
Question

Update/Upload User Profile Picture

  • March 9, 2023
  • 1 reply
  • 164 views

Hi, I want to upload and update a user's profile image with no luck, I tried various approaches non work, even the code in the documentation, the code returns "Parameter [image] value is invalid."

Following is my code.

# ----- views.py ----- #
class UpdateUserProfilePicture(APIView):
    permission_classes = [IsAdminUser]
    authentication_classes = [CustomeAuthentication]
    
    def post(self, request, extensionId):
        data = request.data
        file_data = data.pop('image')
        data["image"] = file_data
        res = updateUserProfilePicture(extensionId, data)
        return Response(res)
# ----- api.py ----- #
def updateUserProfilePicture(extensionId, data):
    platform, rcsdk = login()
    imgType = Image.open(BytesIO(data["image"][0].read())).format.lower()
    image = (data["image"][0].name, data["image"][0].read(), f'image/{imgType}')
    builder = rcsdk.create_multipart_builder()
    builder.add(image)
    try:
        request = builder.request(f"https://platform.devtest.ringcentral.com/restapi/v1.0/account/~/extension/{extensionId}/profile-image", 'PUT')
        res = platform.send_request(request)
        return res
    except Exception as e:
        return ({"error": str(e)})


Note that the login function workes fine, abd both platform, and rcsdk, as I managed to upload a greeting with almost the same approach.

1 reply

PhongVu
Community Manager
Forum|alt.badge.img
  • Community Manager
  • March 9, 2023

There was an issue with the old RingCentral Python SDK. We just updated the SDK that fixed the issue.

Update the RingCentral Python SDK: pip3 install --upgrade ringcentral

And modify your code as follows:

def updateUserProfilePicture(extensionId, data):
    platform, rcsdk = login()
    imgType = Image.open(BytesIO(data["image"][0].read())).format.lower()
    image = (data["image"][0].name, data["image"][0].read(), f'image/{imgType}')
    builder = rcsdk.create_multipart_builder()
    builder.add(image, 'image')
    try:
        request = builder.request(f"/restapi/v1.0/account/~/extension/~/profile-image", 'PUT')
        res = platform.send_request(request)
        return res
    except Exception as e:
        return ({"error": str(e)})