How to attach PDF to a fax message?

  • 1
  • Question
  • Updated 3 years ago
  • Answered
  • (Edited)
I am trying to attach a pdf to a fax that i am sending using code below

HttpWebRequest wr = (HttpWebRequest)WebRequest.Create(url);
Stream rs = wr.GetRequestStream();
StreamReader sr = new StreamReader(filepath);
byte[] fileStream = ReadFully(sr.BaseStream);
rs.Write(fileStream, 0, fileStream.Length);
sr.Close();

public static byte[] ReadFully(Stream input)
{
    byte[] buffer = new byte[20 * 1024];
    using (MemoryStream ms = new MemoryStream())
    {
        if (input != null)
        {
            int read;
            while ((read = input.Read(buffer, 0, buffer.Length)) > 0)
            {
                ms.Write(buffer, 0, read);
            }
        }
        return ms.ToArray();
    }
}

I get back the response that Fax was Queued, but when I receive fax it is only default cover page. This mean the binary data was not attached. What am I missing?
Photo of Kevin Truong

Kevin Truong

  • 152 Points 100 badge 2x thumb

Posted 3 years ago

  • 1
Photo of John Wang

John Wang, Official Rep

  • 5,446 Points 5k badge 2x thumb
To send a fax you'll need to create a multipart/mixed request and add each PDF as an attachment. You can either send the raw bytes or base 64 encode the file.

The easiest way to do this with C# is to use our new (alpha) SDK which is available on Nuget and GitHub:
You can get the package from Nuget and follow the fax instructions under "Send Fax" on the GitHub link.

There are example request bodies on the community Ruby SDK documentation here if you're interested in what the raw requests look like:
(Edited)
Photo of Kevin Truong

Kevin Truong

  • 152 Points 100 badge 2x thumb
Thanks John for your quick reply. Good to hear about .Net SDK, I am looking into it now as my application is configured for Sandbox so I am using  
https://platform.devtest.ringcentral.com
as apiEndPoint and when trying to Authenticate I am getting response

{
  "error" : "invalid_grant",
  "error_description" : "Invalid resource owner credentials."
}

Do I have to give permission for SDK to connect to my application somewhere?
Photo of John Wang

John Wang, Official Rep

  • 5,446 Points 5k badge 2x thumb
That error typically indicates that the username / extension / password credentials supplied are incorrect. You should make sure that the credentials you are using are associated with your Sandbox Account.

The Sandbox Account Main Company Number for this account is located in your Developer Portal account (https://developers.ringcentral.com) under Sandbox Accounts. By default, the admin extension, 101, is configured with a password that is emailed to you.

You can test that phone number by logging into the Sandbox Online Account Portal here: https://service.devtest.ringcentral.com.

Let us know if that works.
Photo of Kevin Truong

Kevin Truong

  • 152 Points 100 badge 2x thumb
Thanks John. We decided to wait as you suggested so whenever you release your new version, is it possible for you to send us an email?
Photo of John Wang

John Wang, Official Rep

  • 5,446 Points 5k badge 2x thumb
Hi Kevin. The best way to stay up to date on the SDK is to watch / follow the GitHub repo. If you "watch" the repo you should get emails whenever the GitHub project is updated, including the 1.0 release. You can watch the repo by going to the URL below and clicking the "watch" button in the upper right corner.

GitHub URL: https://github.com/ringcentral/ringcentral-csharp

Let me know how that sounds. Thanks.
Photo of Kevin Truong

Kevin Truong

  • 152 Points 100 badge 2x thumb
Sounds good. Thanks.
Photo of Kevin Truong

Kevin Truong

  • 152 Points 100 badge 2x thumb
Hi John,
It is more than 3 months now and on Github I still see version 0.1.0 for ringcentral-csharp. Is this stable enough that we can use it on our production environment? or should I still wait for version 1.0?
Photo of John Wang

John Wang, Official Rep

  • 5,446 Points 5k badge 2x thumb
Hi Kevin,

I answered this on GitHub back in Dec but wanted to answer here as well.

https://github.com/ringcentral/ringcentral-csharp/issues/7

The SDK is stable enough for production use. We are working to close out the issues identified on GitHub for long running subscriptions.

The main difference between the current version and the 1.0 version will be a refactoring of classes and methods to correspond to our SDK reference. If you are okay with a naming change later, then feel free to go ahead and use the existing SDK.