Message |
[+]
Avaya Orchestration Designer
» License check on every call, 14/11/2013 16:21:08
» Go to message
|
|
If you've exceeded the grace period of 30 days without a valid license, then it will check on every app launch.
|
|
[+]
Avaya Orchestration Designer
» Original TFN Dialed, 14/11/2013 13:53:26
» Go to message
|
|
What do you mean by TFN? Seems we aren't familiar with that acronym.
|
|
[+]
Avaya Orchestration Designer
» Failure to Launch (Blind transfer), 14/11/2013 13:50:26
» Go to message
|
|
Do you have any log files that show the blind transfer failing?
|
|
[+]
Avaya Orchestration Designer
» Configurable variables and Webservice Endpoint, 14/11/2013 13:42:21
» Go to message
|
|
Actually, I confused things a bit, sorry. It looks like you're using Axis 1.4. For that connector the correct way to set the Endpoint URL at runtime is the following:
@Override
public String resolveEndPoint() {
return mySession.getVariable("Variable_Name_Here").getSimpleVariable().getStringValue();
}
You would place this in that Java file which corresponds to the WSOP, and create this method outside of the constructor. The variable name can be entered as a Java string. And in the above example, I used a simple var, so if it's complex, then you would have something along the lines of:
@Override
public String resolveEndPoint() {
return mySession.getVariable("Variable_Name_Here").getComplexVariable().getField("Field_Name_Here").getStringValue();
}
Again, sorry for the mix up. For Axis2, though, it is as was described in my previous post. Simply set the value to the endpoint variable.
|
|
[+]
Avaya Orchestration Designer
» Use Java Object for WS Parametrs, 14/11/2013 13:08:37
» Go to message
|
|
Creating Java objects isn't as difficult as it sounds, but if this is your first time doing so it can seem daunting. The process is relatively straightforward.
For the request object:
1. Create Java request object
2. Set values within the object
3. Store the object into an OD variable
4. Let OD make the web service call using the WSOP
For the response object:
1. Retrieve the Java object from the OD variable
2. Get values from within the object
3. Set those values into other OD variables to be used in the Callflow
4. Continue with the OD app flow
Without knowing the specifics of the connection you need to make, I can only provide a general way this code can look. In the Devguide, it mentions to use the requestBegin method, but you can also create a Java Servlet in your flow to house the code. You would have one servlet before the Data node that calls the web service, and one servlet after the Data node. The one before sets request data, the one after retrieves response data.
The below code is taken from an example I provided for another customer.
Request sample Java:
public void servletImplementation(com.avaya.sce.runtimecommon.SCESession mySession) {
// Create the request object
GetEquipmentInfo request = new GetEquipmentInfo();
/* Set values in the request object.
* Typically this involves invoking "setter" methods, that is methods
* that begin with the word "set". Below, this is setEquipmentNumber.*/
request.setEquipmentNumber(0);
/* Set the request object into an OD variable
* The class IProjectVariables contains all OD variables, or you can
* type the variable name in as a text string.
*/
mySession.getVariable(IProjectVariables.REQUEST).getSimpleVariable().setValue(request);
// The web service call will now be made using the stored Java objects
}
Response sample Java:
public void servletImplementation(com.avaya.sce.runtimecommon.SCESession mySession) {
// Get the response object
GetEquipmentInfoResponse response = (GetEquipmentInfoResponse) mySession.getVariableField(IProjectVariables.RETURN_1).getObjectValue();
EquipmentInfo info = response.get_return();
/* Get the individual values from the response object
* Just like you set values using "setter" methods, you access
* values using "getter" methods.
*/
long num = info.getEquipmentNumber();
String msg = info.getErrorMessage();
String language = info.getLanguage();
String sapNum = info.getSapEquipmentNumber();
String serial = info.getSerialNumber();
// Set those values into OD variables
mySession.getVariableField(IProjectVariables.RETURN_1_FIELD_EQUIPMENT_NUMBER).setValue(num);
mySession.getVariableField(IProjectVariables.RETURN_1_FIELD_ERROR_MESSAGE).setValue(msg);
mySession.getVariableField(IProjectVariables.RETURN_1_FIELD_LANGUAGE).setValue(language);
mySession.getVariableField(IProjectVariables.RETURN_1_FIELD_SAP_EQUIPMENT_NUMBER).setValue(sapNum);
mySession.getVariableField(IProjectVariables.RETURN_1_FIELD_SERIAL_NUMBER).setValue(serial);
}
If you are not used to writing Java code, I would suggest looking at examples in the various developer guides available here, as well as using the web for more general Java questions.
|
|
[+]
Avaya Orchestration Designer
» Missing Trace, 13/11/2013 20:57:26
» Go to message
|
|
Setting the ddrt.properties file for a module has no affect on that module's tracing, which means the "Turn off tracing in deployed application" setting when you export does not apply. The Parent app with modules will also log trace and report information in its log for the modules as well as itself, but nothing will get logged in the module’s trace or report logs.
If you working in simulation, I would suggest taking a look at those settings. They are located under:
Eclipse Preferences -> Avaya Aura -> Application Simulation -> Orchestration Designer Simulation
The details of what each item there does is found in the Dev Guide, but mainly the first three deal with writing trace.log files and changing the contents of those files.
|
|
[+]
Avaya Orchestration Designer
» License check on every call, 13/11/2013 20:07:33
» Go to message
|
|
In OD 6 SP3, there is a new property you can set in the ddrt.properties file:
licensechecktimeout=1
The value is a positive integer greater than 0 and represents the number of seconds to wait.
|
|
[+]
Avaya Orchestration Designer
» WS - Problem with output variables mapping, 13/11/2013 19:17:29
» Go to message
|
|
Interesting. The Java file I have is different than the one you have. I'm assuming that we are both using the same WSDL? Here is the sample response I get when I send a request to SoapUI. The mock webservice in SoapUI was created using the WSDL you sent.
<?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.krms.kone.com/"><soapenv:Body>
<ws:getEquipmentInfoResponse>
<return>
<equipmentNumber>?</equipmentNumber>
<errorMessage>?</errorMessage>
<language>?</language>
<sapEquipmentNumber>?</sapEquipmentNumber>
<serialNumber>?</serialNumber>
</return>
</ws:getEquipmentInfoResponse>
</soapenv:Body></soapenv:Envelope>
I see fields for language and errorMessage as well. My only guess is that the web service is sending back a response that the client isn't expecting. Somehow they are out of sync. Usually, being out of sync gives you an exception, which is why this is weird. Below is my Java file:
package connectivity.ws.operations;
/**
* This class is generated automatically. Manual edits must be outside of the tagged
* areas (for example, "START:CLASS:..." and "END:CLASS:..."). Changes within the
* tag areas will be overwritten when the web service operation is regenerated.
* Last generated by Orchestration Designer at: 2013-NOV-11 12:13:19 PM
*/
public class untitled5 extends com.avaya.sce.runtime.connectivity.ws2.CallService {
//{{START:CLASS:FIELDS
//}}END:CLASS:FIELDS
/**
* Constructor for untitled5.
*/
public untitled5( com.avaya.sce.runtimecommon.IRuntimeSession mySession ) {
//{{START:CLASS:CONSTRUCTOR
super(mySession);
//Web Service
setServiceName("EquipmentWebServiceService");
setSOAPAction("http://ws.krms.kone.com/EquipmentWebService/getEquipmentInfoRequest");
setTimeoutSecondsFromParameter("EquipmentWebServiceService_1384200797611TimeoutSeconds");
setEndpointFromParameter("EquipmentWebServiceService_1384200797611EndpointUrl");
setAuthenticationFromParameter("EquipmentWebServiceService_1384200797612Authentication");
setPasswordFromParameter("EquipmentWebServiceService_1384200797612Password");
setUsernameFromParameter("EquipmentWebServiceService_1384200797612Username");
setUsernameTokenTimeoutFromParameter("EquipmentWebServiceService_1384200797612UserNameTokenTimeout");
setSendPasswordInClearFromParameter("EquipmentWebServiceService_1384200797613SendPasswordInClear");
//Operation
setOperation(new javax.xml.namespace.QName("http://ws.krms.kone.com/", "getEquipmentInfo"));
setOperationNSPrefix("");
setWrappedStyle(true);
//Input parameters
{
com.avaya.sce.runtime.connectivity.ws2.WsParam param1 = new com.avaya.sce.runtime.connectivity.ws2.WsParam(new javax.xml.namespace.QName("http://ws.krms.kone.com/", "getEquipmentInfo"), new javax.xml.namespace.QName("connectivity.ws.beans5", "GetEquipmentInfo"));
param1.setWrapped(false);
param1.setArray(false);
param1.setUseJavaObject(false);
param1.setNsPrefix("ns1");
{
com.avaya.sce.runtime.connectivity.ws2.WsParamField field2 = new com.avaya.sce.runtime.connectivity.ws2.WsParamField(new javax.xml.namespace.QName("", "equipmentNumber"), new javax.xml.namespace.QName("", "long"), param1);
field2.setNsPrefix("ns1");
field2.setDDVariableName("equipmentNumber");
field2.setUseJavaObject(false);
param1.addField(field2);
}
addInParameter(param1);
}
//Output parameters
{
com.avaya.sce.runtime.connectivity.ws2.WsParam param1 = new com.avaya.sce.runtime.connectivity.ws2.WsParam(new javax.xml.namespace.QName("http://ws.krms.kone.com/", "getEquipmentInfoResponse"), new javax.xml.namespace.QName("connectivity.ws.beans5", "GetEquipmentInfoResponse"));
param1.setWrapped(false);
param1.setArray(false);
param1.setUseJavaObject(false);
param1.setNsPrefix("ns1");
{
com.avaya.sce.runtime.connectivity.ws2.WsParamField field2 = new com.avaya.sce.runtime.connectivity.ws2.WsParamField(new javax.xml.namespace.QName("", "return"), new javax.xml.namespace.QName("", "EquipmentInfo"), param1);
field2.setNsPrefix("ns1");
field2.setDDVariableName("return1");
field2.setUseJavaObject(false);
{
com.avaya.sce.runtime.connectivity.ws2.WsParamField field3 = new com.avaya.sce.runtime.connectivity.ws2.WsParamField(new javax.xml.namespace.QName("", "equipmentNumber"), new javax.xml.namespace.QName("", "long"), field2);
field3.setNsPrefix("ns1");
field3.setDDVariableName("");
field3.setUseJavaObject(false);
field2.addField(field3);
}
{
com.avaya.sce.runtime.connectivity.ws2.WsParamField field3 = new com.avaya.sce.runtime.connectivity.ws2.WsParamField(new javax.xml.namespace.QName("", "errorMessage"), new javax.xml.namespace.QName("", "java.lang.String"), field2);
field3.setNsPrefix("ns1");
field3.setDDVariableName("");
field3.setUseJavaObject(false);
field2.addField(field3);
}
{
com.avaya.sce.runtime.connectivity.ws2.WsParamField field3 = new com.avaya.sce.runtime.connectivity.ws2.WsParamField(new javax.xml.namespace.QName("", "language"), new javax.xml.namespace.QName("", "java.lang.String"), field2);
field3.setNsPrefix("ns1");
field3.setDDVariableName("");
field3.setUseJavaObject(false);
field2.addField(field3);
}
{
com.avaya.sce.runtime.connectivity.ws2.WsParamField field3 = new com.avaya.sce.runtime.connectivity.ws2.WsParamField(new javax.xml.namespace.QName("", "sapEquipmentNumber"), new javax.xml.namespace.QName("", "java.lang.String"), field2);
field3.setNsPrefix("ns1");
field3.setDDVariableName("");
field3.setUseJavaObject(false);
field2.addField(field3);
}
{
com.avaya.sce.runtime.connectivity.ws2.WsParamField field3 = new com.avaya.sce.runtime.connectivity.ws2.WsParamField(new javax.xml.namespace.QName("", "serialNumber"), new javax.xml.namespace.QName("", "java.lang.String"), field2);
field3.setNsPrefix("ns1");
field3.setDDVariableName("");
field3.setUseJavaObject(false);
field2.addField(field3);
}
param1.addField(field2);
}
addOutParameter(param1);
}
//}}END:CLASS:CONSTRUCTOR
}
}
You'll notice there are the two extra parameters I mentioned above that it is expecting to receive back. That XML response you originally sent, is that taken straight from OD's log? Or is that just the ideal scenario? Also, when you used the servlet you mentioned in your latest post, did you uncheck the Unwrap Output Parameters option? I ask because if it's treating the response as an object, and the web service is out of sync, it wouldn't technically matter because you can get the three values you're interested in out of the object and ignore the others. Perhaps check to see if there are setter/getter methods for language and errorMessage.
|
|
[+]
Avaya Orchestration Designer
» Default servlet container, 13/11/2013 16:34:06
» Go to message
|
|
Ok, I see what you mean. Unfortunately, the default value is hard coded to be Tomcat 6 right now without a way to change that. It's a good point you bring up, though, and we are going to look into perhaps using the last servlet selection as the default or allowing setting of that in a properties file.
|
|
[+]
Avaya Orchestration Designer
» Forum Search results question?, 13/11/2013 15:51:57
» Go to message
|
|
Just tried out the search myself and I agree, it's a bit difficult to use. We've got a question out to the team that implemented this new forum, and I'll post what I find as soon as they get back to us.
|
|
[+]
Avaya Orchestration Designer
» Configurable variables and Webservice Endpoint, 13/11/2013 15:22:48
» Go to message
|
|
Yes, like desirekengfack said, the only way to use variables in the Endpoint right now is to override a method in Java. For Axis 1.4, it's the setEndPoint() method, and for Axis2 you can just directly assign a value to the endPoint variable.
|
|
[+]
Avaya Orchestration Designer
» DB failovers not working unless tomcat restarts, 13/11/2013 15:08:04
» Go to message
|
|
|
|
[+]
Avaya Orchestration Designer
» Default servlet container, 12/11/2013 18:45:11
» Go to message
|
|
I think I'm a little unclear on what you want to do. When you export a project, are you not able to select a different container? Only Tomcat 6?
|
|
[+]
Avaya Orchestration Designer
» WS - Problem with output variables mapping, 12/11/2013 18:36:30
» Go to message
|
|
Hmm, generally the Java files are just automatically created when the WSOP is, and there shouldn't be any errors. If something did happen to them, you could recreate the WSOP and see if that clears it up. Maybe copy/paste your Java file here and I can compare it to what I have (or use the Attachments feature in the new forum, if you can).
Also, there is a bit of unwrapping that needs to be done for the response, so maybe try unchecking "Unwrap Output Parameters" when creating the WSOP, on the second page of the wizard. Then you can create some Java to get values out. OD is generally capable of unwrapping this level of tree structure in the response, but perhaps simplifying by taking that out will help.
public void servletImplementation(com.avaya.sce.runtimecommon.SCESession mySession) {
GetEquipmentInfoResponse response = (GetEquipmentInfoResponse) mySession.getVariableField(IProjectVariables.RETURN_1).getObjectValue();
EquipmentInfo info = response.get_return();
long num = info.getEquipmentNumber();
String msg = info.getErrorMessage();
String language = info.getLanguage();
String sapNum = info.getSapEquipmentNumber();
String serial = info.getSerialNumber();
mySession.getVariableField(IProjectVariables.RETURN_1_FIELD_EQUIPMENT_NUMBER).setValue(num);
mySession.getVariableField(IProjectVariables.RETURN_1_FIELD_ERROR_MESSAGE).setValue(msg);
mySession.getVariableField(IProjectVariables.RETURN_1_FIELD_LANGUAGE).setValue(language);
mySession.getVariableField(IProjectVariables.RETURN_1_FIELD_SAP_EQUIPMENT_NUMBER).setValue(sapNum);
mySession.getVariableField(IProjectVariables.RETURN_1_FIELD_SERIAL_NUMBER).setValue(serial);
}
|
|
[+]
Avaya Orchestration Designer
» TTS event showed TTSString: SSML in Session Detail Transcription, 11/11/2013 18:09:41
» Go to message
|
|
For SSML to work it must be supported by the speech engine you are using. It seems like in your case, SSML is only supported for English, en-us, and not other languages, in which case the behavior you are seeing is correct. Check which Speech Server is being used and make sure that SSML is supported per the language you want to use.
|
|