Error when using system.twilio.sendPhoneCall

Hello,

I am unable to use the system.twilio.sendPhoneCall, when doing so i get the following error :

java.lang.ClassCastException: java.lang.ClassCastException: class com.digitalpetri.ignition.twilio.common.voice.CallConfig cannot be cast to class java.io.Serializable (com.digitalpetri.ignition.twilio.common.voice.CallConfig is in unnamed module of loader java.net.URLClassLoader @12360d67; java.io.Serializable is in module java.base of loader 'bootstrap') 

Here is the full stack trace :

Java Traceback:
Traceback (most recent call last):
  File "<input>", line 7, in <module>
	at com.digitalpetri.ignition.twilio.common.rpc.TwilioRpc$1.encode(TwilioRpc.java:40)

	at com.inductiveautomation.ignition.common.rpc.proto.ProtoRpcSerializer.encodeValue(ProtoRpcSerializer.java:119)

	at com.inductiveautomation.ignition.common.rpc.proto.ProtoRpcSerializer.encodeRpcMessage(ProtoRpcSerializer.java:85)

	at com.inductiveautomation.ignition.common.rpc.proto.ProtoRpcSerializer.writeParameters(ProtoRpcSerializer.java:374)

	at com.inductiveautomation.ignition.client.gateway_interface.GatewayInterface.lambda$invoke$5(GatewayInterface.java:345)

	at com.inductiveautomation.ignition.client.gateway_interface.GatewayInterface.invokeRaw(GatewayInterface.java:379)

	at com.inductiveautomation.ignition.client.gateway_interface.GatewayInterface.invoke(GatewayInterface.java:342)

	at com.inductiveautomation.ignition.client.gateway_interface.GatewayConnection$Rpc$RpcInvocationHandler.invoke(GatewayConnection.java:335)

	at jdk.proxy2/jdk.proxy2.$Proxy83.sendPhoneCall(Unknown Source)

	at com.digitalpetri.ignition.twilio.client.scripting.ScriptModule.onSendPhoneCall(ScriptModule.java:61)

	at com.digitalpetri.ignition.twilio.common.scripting.AbstractTwilioScriptModule.sendPhoneCall(AbstractTwilioScriptModule.java:174)

	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

	at java.base/java.lang.reflect.Method.invoke(Unknown Source)

java.lang.ClassCastException: java.lang.ClassCastException: class com.digitalpetri.ignition.twilio.common.voice.CallConfig cannot be cast to class java.io.Serializable (com.digitalpetri.ignition.twilio.common.voice.CallConfig is in unnamed module of loader java.net.URLClassLoader @12360d67; java.io.Serializable is in module java.base of loader 'bootstrap')


	at org.python.core.Py.JavaError(Py.java:545)

	at org.python.core.Py.JavaError(Py.java:536)

	at org.python.core.PyReflectedFunction.__call__(PyReflectedFunction.java:192)

	at com.inductiveautomation.ignition.common.script.ScriptManager$ReflectedInstanceFunction.__call__(ScriptManager.java:563)

	at org.python.core.PyObject.__call__(PyObject.java:512)

	at org.python.core.PyObject.__call__(PyObject.java:517)

	at org.python.pycode._pyx24.f$0(<input>:7)

	at org.python.pycode._pyx24.call_function(<input>)

	at org.python.core.PyTableCode.call(PyTableCode.java:173)

	at org.python.core.PyCode.call(PyCode.java:18)

	at org.python.core.Py.runCode(Py.java:1703)

	at org.python.core.Py.exec(Py.java:1747)

	at org.python.util.PythonInterpreter.exec(PythonInterpreter.java:277)

	at org.python.util.InteractiveInterpreter.runcode(InteractiveInterpreter.java:130)

	at com.inductiveautomation.ignition.designer.gui.tools.jythonconsole.JythonConsole$ConsoleWorker.doInBackground(JythonConsole.java:628)

	at com.inductiveautomation.ignition.designer.gui.tools.jythonconsole.JythonConsole$ConsoleWorker.doInBackground(JythonConsole.java:616)

	at java.desktop/javax.swing.SwingWorker$1.call(Unknown Source)

	at java.base/java.util.concurrent.FutureTask.run(Unknown Source)

	at java.desktop/javax.swing.SwingWorker.run(Unknown Source)

	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)

	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

	at java.base/java.lang.Thread.run(Unknown Source)

Caused by: java.lang.ClassCastException: class com.digitalpetri.ignition.twilio.common.voice.CallConfig cannot be cast to class java.io.Serializable (com.digitalpetri.ignition.twilio.common.voice.CallConfig is in unnamed module of loader java.net.URLClassLoader @12360d67; java.io.Serializable is in module java.base of loader 'bootstrap')

	at com.digitalpetri.ignition.twilio.common.rpc.TwilioRpc$1.encode(TwilioRpc.java:40)

	at com.inductiveautomation.ignition.common.rpc.proto.ProtoRpcSerializer.encodeValue(ProtoRpcSerializer.java:119)

	at com.inductiveautomation.ignition.common.rpc.proto.ProtoRpcSerializer.encodeRpcMessage(ProtoRpcSerializer.java:85)

	at com.inductiveautomation.ignition.common.rpc.proto.ProtoRpcSerializer.writeParameters(ProtoRpcSerializer.java:374)

	at com.inductiveautomation.ignition.client.gateway_interface.GatewayInterface.lambda$invoke$5(GatewayInterface.java:345)

	at com.inductiveautomation.ignition.client.gateway_interface.GatewayInterface.invokeRaw(GatewayInterface.java:379)

	at com.inductiveautomation.ignition.client.gateway_interface.GatewayInterface.invoke(GatewayInterface.java:342)

	at com.inductiveautomation.ignition.client.gateway_interface.GatewayConnection$Rpc$RpcInvocationHandler.invoke(GatewayConnection.java:335)

	at jdk.proxy2/jdk.proxy2.$Proxy83.sendPhoneCall(Unknown Source)

	at com.digitalpetri.ignition.twilio.client.scripting.ScriptModule.onSendPhoneCall(ScriptModule.java:61)

	at com.digitalpetri.ignition.twilio.common.scripting.AbstractTwilioScriptModule.sendPhoneCall(AbstractTwilioScriptModule.java:174)

	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

	at java.base/java.lang.reflect.Method.invoke(Unknown Source)

	at org.python.core.PyReflectedFunction.__call__(PyReflectedFunction.java:190)

	... 19 more

Traceback (most recent call last):
  File "<input>", line 7, in <module>
	at com.digitalpetri.ignition.twilio.common.rpc.TwilioRpc$1.encode(TwilioRpc.java:40)

	at com.inductiveautomation.ignition.common.rpc.proto.ProtoRpcSerializer.encodeValue(ProtoRpcSerializer.java:119)

	at com.inductiveautomation.ignition.common.rpc.proto.ProtoRpcSerializer.encodeRpcMessage(ProtoRpcSerializer.java:85)

	at com.inductiveautomation.ignition.common.rpc.proto.ProtoRpcSerializer.writeParameters(ProtoRpcSerializer.java:374)

	at com.inductiveautomation.ignition.client.gateway_interface.GatewayInterface.lambda$invoke$5(GatewayInterface.java:345)

	at com.inductiveautomation.ignition.client.gateway_interface.GatewayInterface.invokeRaw(GatewayInterface.java:379)

	at com.inductiveautomation.ignition.client.gateway_interface.GatewayInterface.invoke(GatewayInterface.java:342)

	at com.inductiveautomation.ignition.client.gateway_interface.GatewayConnection$Rpc$RpcInvocationHandler.invoke(GatewayConnection.java:335)

	at jdk.proxy2/jdk.proxy2.$Proxy83.sendPhoneCall(Unknown Source)

	at com.digitalpetri.ignition.twilio.client.scripting.ScriptModule.onSendPhoneCall(ScriptModule.java:61)

	at com.digitalpetri.ignition.twilio.common.scripting.AbstractTwilioScriptModule.sendPhoneCall(AbstractTwilioScriptModule.java:174)

	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

	at java.base/java.lang.reflect.Method.invoke(Unknown Source)

java.lang.ClassCastException: java.lang.ClassCastException: class com.digitalpetri.ignition.twilio.common.voice.CallConfig cannot be cast to class java.io.Serializable (com.digitalpetri.ignition.twilio.common.voice.CallConfig is in unnamed module of loader java.net.URLClassLoader @12360d67; java.io.Serializable is in module java.base of loader 'bootstrap')

I’m calling this function from the script console, the communication with the gateway is in read/write.

I’ve tried it both with Ignition 8.3.0 / Twilio 4.3.0 and Ignition 8.3.1 / Twilio 4.3.1, and got the same result.

I think it’s related to the function itself and not to how Twilio is configured on the gateway because it’s working perfectly if I send an SMS using system.twilio.sendSms.

Any ideas on how to fix it ?

This is an RPC bug. You will need to open a support ticket so IA can fix in a future version.

As a work-around, run this in gateway scope via a message handler, or perhaps with my Integration Toolkit's @system.util.runInGateway decorator.

1 Like