Solved

Fax API unable to load attachment

  • 30 March 2022
  • 3 replies
  • 514 views

trying to write a Fax APP interface in python(3.9) using the ringcentral package and the sys module. Whenever app is called with document for transmission I get the following error:

decode

return codecs.charmap_decode(input,self.errors,decoding_table)[0]

UnicodeDecodeError: 'charmap' codec can't decode byte 0x9d in position 65: character maps to <undefined>

I believe issue with the the builder.set_body() function, specifically the builder.add(attachment) and how it handles the files being passed.

Any insights appreciated.

icon

Best answer by Phong1426275020 31 March 2022, 01:08

View original

3 replies

Userlevel 1

Does this quick start code work for you? Since you are running Python 3.x, just add the brackets to the print content and run the code.

Hi Phong, I get the same error. Here is code snippet I am testing excluding my RC Credentials:


# Ring Central Fax Bridge for MaxFax -push to Github

import sys

from ringcentral import SDK


# ---------------------Test Received Parameters--Validate type and length----------

recipient = str(sys.argv[1])

faxdoc = str(sys.argv[2])

sender = str(sys.argv[3])


if len(recipient) < 9:

print('Fax# is incomplete, expecting 9 digits')


elif len(faxdoc) < 1:

print('File name to be faxed is missing')


else:

# insert code for directory and variable initialization

# try:

# --------------------RingCentral Fax Send Logic----------------------------------


RINGCENTRAL_CLIENTID = ''

RINGCENTRAL_CLIENTSECRET = ''

RINGCENTRAL_SERVER = 'https://platform.devtest.ringcentral.com'

RINGCENTRAL_USERNAME = ''

# RINGCENTRAL_USERNAME = ''

RINGCENTRAL_PASSWORD = ''

RINGCENTRAL_EXTENSION = '101'


rcsdk = SDK(RINGCENTRAL_CLIENTID, RINGCENTRAL_CLIENTSECRET, RINGCENTRAL_SERVER)


platform = rcsdk.platform()

platform.login(RINGCENTRAL_USERNAME, RINGCENTRAL_EXTENSION, RINGCENTRAL_PASSWORD)


builder = rcsdk.create_multipart_builder()

builder.set_body({

'to': [{'phoneNumber': recipient}],

'faxResolution': "High",

'coverPageText': "Clinic Name " + sender

})


attachment = (faxdoc, open(faxdoc, 'r').read(), 'image/jpg')

builder.add(attachment)


request = builder.request('/account/~/extension/~/fax')


resp = platform.send_request(request)

print('Fax sent. Message status: ' + resp.json().messageStatus)


# except (exc_type, exc_value, exc_traceback):

# Notify that an error occurred executing send.


print(['An error occurred while attempting to contact RingCentral'])


Thanks for looking.


Userlevel 1

I found some change in Python 3. I got the same error using the old code too.

Change this and it should work

...
with open('test.jpg', encoding="utf8", errors='ignore') as f:
    content = f.read()
    attachment = ('test.jpg', content)
    builder.add(attachment)

request = builder.request('/account/~/extension/~/fax')

response = platform.send_request(request)
print ('Fax sent. Current status: ' + response.json().messageStatus)

Let me know if it still not working for you.

Reply