Stream Deck - parameters not being received by subroutine

Here's my subroutine

And here's my Streamdeck

Here's the error

I've tried variations of this using %1 instead of calling out the full variable, as I saw it being mentioned as a dynamic token to read the parameter, but that gives same result.

I know I'm doing something wrong here. Any ideas?

First, check your app defaults by simply doing this:

image

If this fails, we have a good idea what the problem is.

Subroutine parameters are specific to subroutines called with the "Execute a Subroutine" action (they use "hidden" parameter IDs so you can pass data as paramID=data key/value pairs).

KM Link's "Parameter" is actually a trigger value and can be accessed with the %TriggerValue% token.

If you are actually using this as a "proper" subroutine, called from other macros, and also want to use it "directly" from your SD then try checking for a parameter and if there is none use the trigger value instead:

image

But -- and this is a very big "but" -- Mum_facetime_ID is a global variable. Once you set it, it persists across macros. So unless you are deliberately %Delete%ing it somewhere it will always have a value when you check it. Look at "Scope" in the manual, and consider using a local variable instead.

Indeed, using a subroutine in this way is rather confusing (unless you are only showing us a cut-down version of what you are doing). You'd normally use a "local" parameter so the subroutine acts on the data specifically provided for that execution. It looks like what you actually want is a "Make a Facetime Call" macro that uses a number provided by %TriggerValue%.

1 Like

Ahh %TriggerValue% is what I was looking for!

I'm actually ONLY calling this from SD. So would you say I don't even need to specify the subroutine's parameter?

This has cleared things up a lot!! thanks so much

If all you are doing is starting a FaceTime call and you've only got one number per button, you (probably) don't even need a macro. Try this on your SD button:

A macro will come into its own if you want to hide your other apps, set the volume, etc when you start the call. A subroutine is for when you want to make the same functionality available to different macros and have those macros benefit automatically from changes you make to the sub.

Right yes, my initial intention with the subroutine was just because I want to put the least amount of 'code' at streamdeck's end, like just an email or phone number (the contact's facetime ID), and have KM control the rest.

It's actually for my mum who has dementia, I'm making a whole system that plays films, music, excercise routines on her TV, and now places calls - entirely controlled via the stream deck.

Actually just now I expanded it so that it can either call facetime:// or tel: depending on the contact. I love KM!

Cheers for the tips

1 Like

Ahh, that's what I missed, because I don't use KM Link.