Skip to main content
Solved

Fax API unable to load attachment


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.

Best answer by PhongVu

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.

View original
Did this thread help you find an answer to your question?

PhongVu
Community Manager
Forum|alt.badge.img
  • Community Manager
  • March 30, 2022

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.


  • New Participant
  • March 31, 2022

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.



PhongVu
Community Manager
Forum|alt.badge.img
  • Community Manager
  • March 31, 2022

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


Cookie policy

We use cookies to enhance and personalize your experience. If you accept you agree to our full cookie policy. Learn more about our cookies.

 
Cookie settings