private void ProcessPrecenseEvent(Dictionary <string, string> dict)
        {
            if (!dict.ContainsKey("method") || !dict.ContainsKey("uri"))
            {
                Log(LOGLEVEL.ERROR, "no method or uri");
                return;
            }

            var action = SigMediaEvent.GetPresenceAction(dict["method"]);

            if (action == PresenceAction.PRESENCE_ACTION_NONE)
            {
                Log(LOGLEVEL.ERROR, "unrecognized presence action");
                return;
            }

            var uri = dict["uri"];

            var index1 = uri.IndexOf(':');
            var index2 = uri.IndexOf('@');

            if (index1 == -1 || index2 == -1)
            {
                Log(LOGLEVEL.ERROR, "uri format is incorrect");
                return;
            }

            var username = uri.Substring(index1 + 1, index2 - index1 - 1);

            var args = new PresenceArgs(action, username);

            if (PresenceInfo != null)
            {
                PresenceInfo(this, args);
            }
        }