def _upload(self, files, voice_clip=False):
        """
        Uploads files to Facebook

        `files` should be a list of files that requests can upload, see:
        http://docs.python-requests.org/en/master/api/#requests.request

        Returns a list of tuples with a file's ID and mimetype
        """
        file_dict = {"upload_{}".format(i): f for i, f in enumerate(files)}

        data = {"voice_clip": voice_clip}

        j = self._postFile(
            self.req_url.UPLOAD,
            files=file_dict,
            query=data,
            fix_request=True,
            as_json=True,
        )

        if len(j["payload"]["metadata"]) != len(files):
            raise FBchatException(
                "Some files could not be uploaded: {}, {}".format(j, files)
            )

        return [
            (data[mimetype_to_key(data["filetype"])], data["filetype"])
            for data in j["payload"]["metadata"]
        ]
Uploads files to Facebook

        `files` should be a list of files that requests can upload, see:
        http://docs.python-requests.org/en/master/api/#requests.request

        Returns a list of tuples with a file's ID and mimetype