I have a watcher that is watching MyInteractions and I am able to store the interaction object in my cookie... Everything works fine as expected. However, when a conference is created, it seems that the parties that are in the conference are not longer watched since they probably no longer owned by me. So if I want to mute/unmute or hold/unhold a single party in the conference, my queue won't be aware of that change.

What is the correct way to watch all parties in a conference?

Here is how I watch my queue


Code:
protected void WatchMyInteractions()
{
    var interactionManager = GetInteractionManager();
    QueueId queueId = new QueueId(QueueType.MyInteractions, "my-username");
    InteractionQueue _interactionQueue = new InteractionQueue(interactionManager, queueId);

    // Individual interaction and conference interaction adds/removes/changes can be received,
    // as an alternative to the "batching" of QueueContentsChanged.
    // (If there is a QueueContentsChanged event handler, then the individual added/removed/changed events will not be fired.)
    _interactionQueue.InteractionAdded += QueueInteractionAdded;
    _interactionQueue.InteractionChanged += QueueInteractionChanged;
    _interactionQueue.InteractionRemoved += QueueInteractionRemoved;
    _interactionQueue.ConferenceInteractionAdded += QueueConferenceAdded;
    _interactionQueue.ConferenceInteractionChanged += QueueConferenceChanged;
    _interactionQueue.ConferenceInteractionRemoved += QueueConferenceRemoved;
    _interactionQueue.LostRights += QueueLostRights;

    _interactionQueue.StartWatching(GetAttributes());
}

protected string[] GetAttributes()
{
  return string[] {
                InteractionAttributeName.CallIdKey,
                InteractionAttributeName.InteractionId,
                InteractionAttributeName.InteractionType,
                InteractionAttributeName.RemoteAddress,
                InteractionAttributeName.RemoteName,
                InteractionAttributeName.RemoteId,
                InteractionAttributeName.State,
                InteractionAttributeName.Direction,
                InteractionAttributeName.StateDescription,
                InteractionAttributeName.Capabilities,
                InteractionAttributeName.Muted,
                InteractionAttributeName.ConferenceId,
                InteractionAttributeName.CallType,
                InteractionAttributeName.Recorders,
                InteractionAttributeName.SupervisorRecorders,
                InteractionAttributeName.LocalId,
                InteractionAttributeName.LocalName,
                InteractionAttributeName.StationQueueNames,
                "Eic_CallState",
                "Eic_State",
                "Eic_IRRecordingId",
                "Eic_ConferenceMembers",
            };
}
This is how I create a conference, the interactionIds are identified using a checkbox. so when the user select more than 1 interactionId, I send these Ids to the server.

Code:
public JsonpResult MakeConference(IEnumerable interactionIds)
{
    var resource = new ConferenceResource();

    try
    {
        List interactions = new List();

        foreach (long interactionId in interactionIds)
        {
            var interaction = GetInteraction(interactionId);

            if (interaction != null)
            {
                interactions.Add(interaction);
            }
        }

        if (interactions.Any())
        {
            var conference = GetInteractionManager().MakeNewConference(interactions.ToArray());

            resource.ConferenceId = conference.ConferenceId.Id;
            resource.InteractionIds = interactions.Select(x => x.InteractionId.Id).ToList();
            resource.IsSuccess = true;
            resource.HttpCode = 200;
        }
        else
        {
            throw new Exception("No interactions were provided!");
        }

    }
    catch (Exception ex)
    {
        resource.Error = ex.Message;
        resource.InnerError = (ex.InnerException == null) ? "" : ex.InnerException.ToString();
        resource.HttpCode = (int)System.Net.HttpStatusCode.SeeOther;
    }

    return new JsonpResult(resource);
}