Skip to main content
Question

Sending Faxes API Integration

  • 9 May 2021
  • 1 reply
  • 774 views

Hello,

I am trying to integrate OSCAR EMR (electronic medical records software) with RingCentral Fax API, so that prescriptions/etc can be faxed. The system currently has an existing integration for sending faxes with SRFax (a Canadian eFax provider), but I want to integrate it with RingCentral to send faxes with RingCentral.

Here is the current script that is setup to send faxes with SRFax integration, what would I change for it to work with RingCentral fax?

I would be super grateful if someone could help me with this. Thank you.

Here is the documentation on how this works currently with SRFax (e.g. how the files get picked up to be sent): https://worldoscar.org/?page_id=1264

#!/bin/bash
#
# SRFax Gateway cron
# (c) 2020 Peter Hutten-Czapski released on GPL 2+
#
# Picks up the files dropped by OSCAR
# and POSTs it to the SRFax API
# and it clears the files dropped by OSCAR
# Adjust the constants at the top of the page to match actual
#

ID=***** # this is your SRfax account number
PWD=****** # Escape any special characters with non quoted
CID=******** # this is your SRfax fax number, just numbers
EMAIL=******** # use the same email registered with SRfax for access to their web interface
FROM=******* # this one is whatever you like
FAXLOG=fax2.log

SCRIPT_FILE=$(basename "$0")
LOCKDIR=/tmp/${SCRIPT_FILE}.lock
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
SCRIPT_PATH="${SCRIPT_DIR}/${SCRIPT_FILE}"
FAXLOG=${SCRIPT_DIR}/fax2.log
echo "Calling ${SCRIPT_FILE} on ${SCRIPT_PATH} with logging on ${FAXLOG}"

# --- select the running Tomcat or the highest installed version
TOMCAT=$(ps aux | grep org.apache.catalina.startup.Bootstrap | grep -v grep | awk '{ print $1 }')
if [ -z "$TOMCAT" ]; then
#Tomcat is not running, find the highest installed version
if [ -f /usr/share/tomcat9/bin/version.sh ] ; then
TOMCAT=tomcat9
else
if [ -f /usr/share/tomcat8/bin/version.sh ] ; then
TOMCAT=tomcat8
else
if [ -f /usr/share/tomcat7/bin/version.sh ] ; then
TOMCAT=tomcat7
fi
fi
fi
fi

TMP=/tmp/${TOMCAT}-${TOMCAT}-tmp
echo "Searching ${TMP} for faxes...."
if test -n "$(find ${TMP} -maxdepth 1 -name '*.txt' -print -quit)"; then
echo "Faxes found to be sent"
for f in `ls $TMP/*.txt`; do
faxto=`sed s"/ *//g" $f|tr -d "
"`
# allow for a second or so for the pdf to be generated
sleep 4
bfile=`echo $f | sed s"/txt/pdf/"`
openssl base64 -e -A -in $bfile -out temp.b64
echo -n `date` "fax to 1$faxto " >> $FAXLOG
json=$(curl
-F "action=Queue_Fax"
-F "access_id=$ID"
-F "access_pwd=$PWD"
-F "sCallerID=$CID"
-F "sSenderEmail=$EMAIL"
-F "sFaxFromHeader=$FROM"
-F "sFaxType=SINGLE"
-F "sToFaxNumber=1$faxto"
-F "sCPSubject=Oscar Fax"
-F "sRetries=3"
-F "sFileName_x=$bfile"
-F "sFileContent_x=<temp.b64"
https://www.srfax.com/SRF_SecWebSvc.php)
if [ -n "$json" ]; then
success=$(echo "${json}" | grep -Po "Success")
if [ -z "$success" ]; then
echo "#### ERROR: ${json} for ${f} " >> $FAXLOG
echo "exiting but renaming source file"
cp $f $f.fail
else
echo "${json} for" `basename ${f}` >> $FAXLOG
rm $bfile;
fi
else
echo "### ERROR: $json is empty for ${f} " >> $FAXLOG
cp $f $f.fail
fi
rm $f;
rm temp.b64
done
else
echo "No faxes found"
fi

1 reply

Userlevel 2
Badge

I am not familiar with PowerShell script to do such a complicated stuff. Here is what we have for sending Faxes using RingCentral API. The quick start provide sample code in different programming languages, unfortunately, no code for PowerShell.

Reply