ConnexCS ScriptForge

ConnexCS ScriptForge allows you to write ECMAScript 2015 (ES6) (aka Javascript) which is executed in a secure sandbox on the server. It is designed to be low latency and high throughput.

You can read more about how to find and use it here

Execution Types


This is the fastest way to execute custom code and is "synchronous" execution. This should mainly be used for manipulations or calculations. It can not use libraries or work with Promises.


Feature rich applications which can include a preset (whitelist) of available modules, the penalty of the extra features is a slightly higher latency.


A driver works as an intemediary between ConnexCS and any external system. You can write drivers to bridge the ConnexCS DID provisioning system to a provider of your choice, or built more complicated alerts.

Example Applications

You can find our github repository for sample applications here

Use Cases

Below is a a short list of a few examples. However with a turing complete language, the possibilities are endless.

  • Do Not Call Lists
  • Custom Fraud Detection
  • Internal Automations
  • Capture and Process control panel and customer portal forms
  • Inbound & Outbound Call Filtering
  • Class 5 Programmable Voice Applications
  • DID Drivers
  • Time of Day Restrictions


Script & Apps (tipically) start with a main function the first parameter is (tipically) an object called data. In order to ensure that your application performs well, you should avoid doing anything which will make the execution last longer than 10 seconds (with the exception of Class 5 Programable Voice)

Class 4 Routing (Routes & DID)

After the routing engine has excuted its main function custom ScriptForge run last. It run presenting data as the output to the routing engine and expects the same object structure to be passed out. Use this with care as changes could affect the billing & stability of calls if not done correctly.

function main (data = {}) {
	// data.routing contains the same data you will find in the Logs
	// in the Raw Data Section

Class 5 Programmable Voice

The execution of the Programmable Voice script is done synchronously with the call. This means that (for example) you would initially run an await answer(), it would not progress to the next line untill our platform has finished executing the operation.

IMPORTANT - Ensure that ALL async functions are executed with await, otherwise the system will loose the synchronised state with your script and the connection will crash.

Second parameter is a ctx object

function main (data = {}, ctx) {
	// ctx contains class 5 ctx object 

Form Submission

Used to receive data from Form Builder in ConnexCS, which can be displayed in the control panel or customer portal.

function main (data = {}) {
	// data contains object containing key/value pairs from the form. 


A driver is a module export and can contain a number of pre-defined functions dependant on the integration, flow is an example for DID Driver.

module.export = {
	search: async function ({number}) {
		// Returns Array of Objects, e.g [{did:'1234'}]
	allocate: async function ({did}) {
		// The information returned by this function will be passed to 
	release: async function ({did}) {
		// Returns True / False
	list: async function () {
		// Returns Array of Objects, e.g [{did:'1234'}]