variables.currentNode = ""; variables.rootNode = ""; variables.returnChar = chr(13); variables.type = "SMS"; variables.gatewayID="unknown"; variables.debug = false; variables.aStringBuffer = arrayNew(1); variables.start = 1; variables.max = 3; variables.maxlength = 254; variables.currentNode = ""; variables.rootNode = ""; variables.type = arguments.type; variables.gatewayid = arguments.gatewayID; variables.aStringBuffer = arrayNew(1); variables.start = 1; variables.max = 3; variables.maxlength = 254; // println("navigate(" & str & ")"); if (str EQ "B") { goBack(); return; } else if (variables.currentNode.isLeaf()) { return; } found = false; aChildren = variables.currentNode.getChildren(); for(i = 1; i LTE arrayLen(aChildren); i = i + 1) { if (aChildren[i].getKey() EQ arguments.str) { variables.currentNode = aChildren[i]; break; } } returnString = variables.returnChar; aChildren = variables.currentNode.getChildren(); for(i = 1; i LTE arrayLen(aChildren); i = i + 1) { returnString = returnString & aChildren[i].getKey() & " - " & aChildren[i].getName() & variables.returnChar; } if (NOT isSimpleValue(variables.currentNode.getParent())) returnString = returnString & "B - Back" & variables.returnChar; else if (isdefined("variables.greeting")) returnString = variables.greeting & variables.returnChar & returnString; found = false; aChildren = variables.currentNode.getChildren(); for(i = 1; i LTE arrayLen(aChildren); i = i + 1) { if (aChildren[i].getKey() EQ arguments.str) { found = true; break; } } if (NOT found AND str EQ "B") found = true; println("++++++++++++++++++++++++++++++++++++++"); println("RECEIVED MESSAGE"); println("message: " &arguments.message); println("from: " &arguments.message_from); println("to: " &arguments.message_to); // check to see if the command is a valid menu option based on the user's current location if (validate(arguments.message)) { // make sure that the buffer is cleared variables.aStringBuffer = arrayNew(1); navigate(arguments.message); if (variables.currentNode.isLeaf()) { // invoke the "enter" method to see if the application sends something back on first entery if( variables.currentNode.isEnterMode() ) { str = trim(variables.currentNode.invokeCFC(message=arguments.message, message_from=arguments.message_from, message_to=arguments.message_to, networkInfo=arguments.networkInfo, method="enter")); } else { str = trim(variables.currentNode.invokeCFC(message=arguments.message, message_from=arguments.message_from, message_to=arguments.message_to, networkInfo=arguments.networkInfo, method=variables.currentNode.getMethod())); goBack(); } // the app has sent something back so send it to the user if (len(str) neq 0) { str = reReplace(str, "
", variables.returnChar, "all"); if (len(str) GTE variables.maxlength) { // chunk the string into an array variables.aStringBuffer = arrayNew(1); for (i = 1; i LTE evaluate(len(str) / variables.maxlength + 1); i = i + 1) { arrayAppend(variables.aStringBuffer, Mid(str, i*variables.maxlength-variables.maxlength+1, variables.maxlength)); } upperLoop = min(arrayLen(variables.aStringBuffer), variables.max); for (i = 1; i LTE upperLoop; i = i + 1) { sendMessage(variables.aStringBuffer[1], message_to, message_from, networkInfo); ArrayDeleteAt(variables.aStringBuffer, 1); } if (arrayLen(variables.aStringBuffer) NEQ 0) { sendMessage('"M"ore', arguments.message_to, arguments.message_from, arguments.networkInfo); } } else { sendMessage(str, arguments.message_to, arguments.message_from, arguments.networkInfo); } } // the app did not return anything from enter() so inform the user that they have entered the app else { sendMessage("Entering " & variables.currentNode.getName(), arguments.message_to, arguments.message_from, arguments.networkInfo); } } else { sendMessage(displayMenu(), arguments.message_to, arguments.message_from, arguments.networkInfo); } } // if the user has entered an application from the menu pass on the request to the registered CFC else if (variables.currentNode.isLeaf()) { // check if the user is requesting more from the previous session if (arrayLen(variables.aStringBuffer) NEQ 0 AND left(arguments..message, 1) EQ "M") { upperLoop = min(arrayLen(variables.aStringBuffer), variables.max); for (i = 1; i LTE upperLoop; i = i + 1) { sendMessage(variables.aStringBuffer[1], arguments.message_to, arguments.message_from, arguments.networkInfo); ArrayDeleteAt(variables.aStringBuffer, 1); } if (arrayLen(variables.aStringBuffer) NEQ 0) { sendMessage('"M"ore', arguments.message_to, arguments.message_from, arguments.networkInfo); } } else { str = trim(variables.currentNode.invokeCFC(message=arguments.message, message_from=arguments.message_from, message_to=arguments.message_to, networkInfo=arguments.networkInfo)); str = reReplace(str, "
", variables.returnChar, "all"); if (len(str) GTE variables.maxlength) { // chunk the string into an array variables.aStringBuffer = arrayNew(1); for (i = 1; i LTE evaluate(len(str) / variables.maxlength + 1); i = i + 1) { arrayAppend(variables.aStringBuffer, Mid(str, i*variables.maxlength-variables.maxlength+1, variables.maxlength)); } upperLoop = min(arrayLen(variables.aStringBuffer), variables.max); for (i = 1; i LTE upperLoop; i = i + 1) { sendMessage(variables.aStringBuffer[1], arguments.message_to, arguments.message_from, arguments.networkInfo); ArrayDeleteAt(variables.aStringBuffer, 1); } if (arrayLen(variables.aStringBuffer) NEQ 0) { sendMessage('"M"ore', arguments.message_to, arguments.message_from, arguments.networkInfo); } } else sendMessage(str, arguments.message_to, arguments.message_from, arguments.networkInfo); } } // unknown command and the user is not in an application so just show the current location in the menu system else { sendMessage(displayMenu(), arguments.message_to, arguments.message_from, arguments.networkInfo); }
println("++++++++++++++++++++++++++++++++++++++"); if (variables.type EQ "IM") { println("SENDING IM"); mesg = structNew(); mesg.command = "submit"; mesg.buddyID = arguments.message_to; mesg.message = arguments.message; sendGatewayMessage(variables.gatewayID, mesg); } else if (variables.type EQ "SMS") { println("SENDING SMS"); mesg = structNew(); mesg.command = "submit"; mesg.sourceAddress = arguments.message_from; mesg.destAddress = arguments.message_to; mesg.shortMessage = arguments.message; sendGatewayMessage(variables.gatewayID, mesg); } else if (variables.type EQ "Socket") { println("SENDING Socket Msg"); mesg = structNew(); mesg.MESSAGE = arguments.message; mesg.OriginatorID = arguments.message_to; sendGatewayMessage(variables.gatewayID, mesg); } else { println("Don't know how to send the message: unknown TYPE"); } println("SENT MESSAGE"); println("GatewayId: " & variables.gatewayID); println("message: " &arguments.message); println("to: " &arguments.message_to); println("from: " &arguments.message_from);