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)

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.

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.