Setting the Default Streaming Service Account for a Specific Connection

Problem Description

I want to dedicate a given output to a specific user's account on a streaming service.

Considerations:

  • If you are running a version less than 6.2:

    • You must send this command for each IP connection to the MMS.

    • This command's lifespan is equal to the IP connection's lifespan.

    • If you disconnect for any reason, you must send this command again.

  • If you are running version 6.2 or higher:

    • To latch the setting on a given stream, select that stream and then append False as the final argument to the SetServiceAccount command.

      • SetServiceAccount Service Account False

    • To unlatch a given service, select the stream, then

      • SetServiceAccount Service Clear False

    • To unlatch all services, select the stream, then

      • SetServiceAccount Clear Clear False

    • Leave the False off or replace with True to make temporary (non latching) settings. This behavior is the default and duplicates what the command used to do in versions less than 6.2.

Solution

The control protocol has a command called SetServiceAccount. This command takes two arguments, the Service Name and the Account Name.

SetServiceAccount <ServiceName> <AccountName>

For example: SetServiceAccount Pandora john@smith.com

To see how this command can make semi permanent changes, see the end of this article as it depends on the firmware version running on the MMS.

In order to do this programmatically, it may be necessary to retrieve a list of all service accounts available on the server. To do this, there is a command BrowseServiceAccounts that operates just like any other browse command where it takes a <start> and <count> argument. There is an additional, optional third argument where a specific service can be specified by name or GUID.

For example:

BrowseServiceAccounts 1 10 would retrieve 10 accounts starting at 1.

BrowseServiceAccounts 11 10 would retrieve 10 accounts starting at 11.

BrowseServiceAccounts 1 5 Pandora would retrieve up to 5 Pandora accounts, if any exist.

A standard response would look like:

1 2 3 4 5 6 BeginServiceAccounts Total=4 Start=1 Alpha=0 Caption="ServiceAccounts"   ServiceAccountInfo {288be067-d458-348d-41ac-d8c2a0aeb68f} "autonomic-controls@deezer.com" "Deezer" "-1" "" "" ""   ServiceAccountInfo {751b4184-589a-36e4-9637-b0df383c6ecc} "demo@autonomic-controls.com" "Pandora" "-1" "" "" ""   ServiceAccountInfo {cef56813-4618-7616-1ee3-767039265a72} "development@autonomic-controls.com" "Rhapsody" "-1" "" "" ""   ServiceAccountInfo {034d5a69-f802-794e-8388-09866a85a252} "autotidal1" "TIDAL" "-1" "" "" "" EndServiceAccounts NoMore

In XML mode, the response looks like:

1 2 3 4 5 6 <ServiceAccounts alpha="false" art="false" displayAs="List" more="false" start="1" total="4">     <ServiceAccountInfo button="0" dna="name" guid="288be067-d458-348d-41ac-d8c2a0aeb68f" name="autonomic-controls@deezer.com" service="Deezer"/>     <ServiceAccountInfo button="0" dna="name" guid="751b4184-589a-36e4-9637-b0df383c6ecc" name="demo@autonomic-controls.com" service="Pandora"/>     <ServiceAccountInfo button="0" dna="name" guid="cef56813-4618-7616-1ee3-767039265a72" name="development@autonomic-controls.com" service="Rhapsody"/>     <ServiceAccountInfo button="0" dna="name" guid="034d5a69-f802-794e-8388-09866a85a252" name="autotidal1" service="TIDAL"/> </ServiceAccounts>

As with all MMS control commands, it must be sent to port 5004 on the MMS. It must be followed by a carriage return and a line feed. Once sent, simply browse the service in question normally and the specified account will be preselected for you.