Ignition 8.3: RPC call works in Designer but not in (legacy) Client

I’m close to the end of the conversion of my module from 8.0 to 8.3 compatible.

I have an Ignition Vision component that makes an RPC call to my Gateway hook.

It works great in Designer, but in Client (i.e. Ignition Vision Client), I receive the following string back when I try to use the RPC interface:

com.inductiveautomation.ignition.common.rpc.RpcException: Unable to invoke gateway function 'com.seeq.ignition.seeq-configuration.getSeeqServerURL' - client is missing required permission

Any ideas?

What does your RPC implementation on the gateway look like?

Do you have a line like: @RpcDelegate.RunsOnClient(clientPermissionId = ClientPermissionsConstants.UNRESTRICTED)

1 Like

It looks like this:

import com.inductiveautomation.ignition.common.rpc.RpcInterface;

/**
 * The RPC interface that the Gateway part of the Seeq module supports. This interface is used from the Designer and
 * Client components to retrieve certain configuration information.
 */
@RpcInterface(packageId = "seeq-configuration")
public interface IgnitionModuleConfiguration {

    /**
     * The URL of the Seeq Server that the module is pointed at.
     *
     * @return the URL of the Seeq Server that the module is pointed at
     */
    String getSeeqServerURL();
}

If I try to add the line you mention to the interface I get a warning/error:

warning: Cannot find annotation method 'clientPermissionId()' in type 'RunsOnClient': class file for com.inductiveautomation.ignition.gateway.rpc.RpcDelegate not found

That's the common scoped Interface, im talking about the gateway implementation of that interface?

Ah OK (that error I encountered should have clued me in, gateway-api isn’t loaded in Client runtimes).

That did it! I added that line to the implementation and I’m golden. Thank you.

1 Like

I'm currently working through some of the same mechanisms for some modules right now, so it was on the top of my brain as a result.

1 Like