Пример #1
0
 internal PrivateChatManager(QuickbloxClient quickbloxClient, int otherUserId, string dialogId)
 {
     this.otherUserId     = otherUserId;
     this.otherUserJid    = ChatXmppClient.BuildJid(otherUserId, quickbloxClient.ApplicationId, quickbloxClient.ChatEndpoint);
     this.dialogId        = dialogId;
     this.quickbloxClient = quickbloxClient;
     quickbloxClient.ChatXmppClient.MessageReceived += MessagesClientOnOnMessageReceived;
 }
Пример #2
0
        /// <summary>
        /// Accepts the specified session identifier.
        /// <message to="..."  type="headline" id="...">
        /// <extraParams xmlns = "jabber:client" >
        ///  < moduleIdentifier > WebRTCVideoChat </ moduleIdentifier >
        /// < signalType > accept </ signalType >
        /// < sessionID >...</ sessionID >
        /// < callType >...</ callType >
        /// < sdp >...</ sdp >
        /// < platform >...</ platform >
        /// </ extraParams >
        /// </ message >
        /// </summary>
        /// <param name="sessionId">The session identifier.</param>
        /// <param name="sdp">The SDP.</param>
        /// <param name="platform">The platform.</param>
        /// <param name="caller">The caller.</param>
        /// <returns></returns>
        public AcceptExtraParameter Accept(string sessionId, string sdp, string platform, int receiver)
        {
            var jid            = ChatXmppClient.BuildJid(receiver, client.ApplicationId, client.ChatEndpoint);
            var extraParameter = new AcceptExtraParameter(sessionId, sdp, platform);

            this.client.ChatXmppClient.SendMessage(receiver, "Accept", extraParameter.Build(), null, null, MessageType.Headline);
            return(extraParameter);
        }
Пример #3
0
        /// <summary>
        /// Ices the candidates.
        /// <message to="..."  type="headline" id="...">
        ///<extraParams xmlns = "jabber:client" >
        ///< moduleIdentifier > WebRTCVideoChat </ moduleIdentifier >
        /// < signalType > iceCandidates </ signalType >
        /// < sessionID >...</ sessionID >
        /// < iceCandidates >
        ///    < iceCandidate >
        ///        < sdpMLineIndex >...</ sdpMLineIndex >
        ///        < sdpMid >...</ sdpMid >
        ///        < candidate >...</ candidate >
        ///    </ iceCandidate >
        ///    < iceCandidate >
        ///        < sdpMLineIndex >...</ sdpMLineIndex >
        ///       < sdpMid >...</ sdpMid >
        ///        < candidate >...</ candidate >
        ///     </ iceCandidate >
        /// </ iceCandidates >
        /// </ extraParams >
        /// </ message >
        /// </summary>
        /// <param name="sessionId">The session identifier.</param>
        /// <param name="iceCandidates">The ice candidates.</param>
        /// <param name="caller">The caller.</param>
        /// <returns></returns>
        public IceCandidatesExtraParameter IceCandidates(string sessionId, int receiver, Collection <IceCandidate> iceCandidates)
        {
            var jid            = ChatXmppClient.BuildJid(receiver, client.ApplicationId, client.ChatEndpoint);
            var extraParameter = new IceCandidatesExtraParameter(sessionId, iceCandidates);

            this.client.ChatXmppClient.SendMessage(receiver, "IceCandidates", extraParameter.Build(), null, null, MessageType.Headline);
            return(extraParameter);
        }
Пример #4
0
        /// <summary>
        /// Hangs up.
        /// <message to="..."  type="headline" id="...">
        /// <extraParams xmlns = "jabber:client" >
        ///  < moduleIdentifier > WebRTCVideoChat </ moduleIdentifier >
        /// < signalType > hangUp </ signalType >
        /// < sessionID >...</ sessionID >
        /// </ extraParams >
        /// </ message >
        /// </summary>
        /// </summary>
        /// <param name="sessionId">The session identifier.</param>
        /// <param name="caller">The caller.</param>
        /// <returns></returns>
        public HangUpExtraParameter HangUp(string sessionId, int receiver)
        {
            var jid            = ChatXmppClient.BuildJid(receiver, client.ApplicationId, client.ChatEndpoint);
            var extraParameter = new HangUpExtraParameter(sessionId);

            this.client.ChatXmppClient.SendMessage(receiver, "HangUp", extraParameter.Build(), null, null, MessageType.Headline);
            return(extraParameter);
        }
Пример #5
0
        private void OnMessageReceived(object sender, MessageEventArgs e)
        {
            if (e.MessageType == MessageType.Headline)
            {
                //var extraParameters = e.Message.ExtraParameters;
                //var elements = XElement.Parse(extraParameters);

                var elements = e.Message.ExtraParameters;

                var element = elements.Elements(XName.Get("moduleIdentifier", "jabber:client")).FirstOrDefault();
                if (element == null || element.Value != webRTCVideoChat)
                {
                    return;
                }

                var videoChatMessage = new VideoChatMessage();

                videoChatMessage.Caller   = ChatXmppClient.GetQbUserIdFromJid(e.Message.From);
                videoChatMessage.Receiver = ChatXmppClient.GetQbUserIdFromJid(e.Message.To);

                var session = elements.Elements(XName.Get("sessionID", "jabber:client")).FirstOrDefault();
                videoChatMessage.Guid = session != null ? session.Value : null;
                var sdp = elements.Elements(XName.Get("sdp", "jabber:client")).FirstOrDefault();
                videoChatMessage.Sdp = sdp != null ? sdp.Value : null;

                var signalType = elements.Elements(XName.Get("signalType", "jabber:client")).FirstOrDefault();
                videoChatMessage.Signal = (SignalType)Enum.Parse(typeof(SignalType), signalType.Value);

                var iceCandidates = elements.Elements(XName.Get("iceCandidates", "jabber:client")).FirstOrDefault();
                if (iceCandidates != null)
                {
                    var iceCandidatesList = new Collection <IceCandidate> ();
                    foreach (var iceCandidateElement in iceCandidates.Elements())
                    {
                        var candidateElement     = iceCandidateElement.Elements(XName.Get("candidate", "jabber:client")).FirstOrDefault();
                        var sdpMLineIndexElement = iceCandidateElement.Elements(XName.Get("sdpMLineIndex", "jabber:client")).FirstOrDefault();
                        //var sdpMidElement = iceCandidateElement.Elements(XName.Get("sdpMid", "jabber:client")).FirstOrDefault ();
                        iceCandidatesList.Add(new IceCandidate()
                        {
                            Candidate = candidateElement.Value,
                            //SdpMid = sdpMidElement.Value,
                            SdpMLineIndex = sdpMLineIndexElement.Value
                        });
                    }

                    videoChatMessage.IceCandidates = iceCandidatesList;
                }

                //Parse Message and raise event
                var handler = VideoChatMessage;
                if (handler != null)
                {
                    handler.Invoke(this, videoChatMessage);
                }
            }
        }
Пример #6
0
        private void SendGroupInfoSystemMessage(int userId, Dialog dialogInfo)
        {
            var extraParams = new ExtraParams();

            extraParams.AddNew(ExtraParamsList.moduleIdentifier, SystemMessage.SystemMessageModuleIdentifier);
            extraParams.AddNew(ExtraParamsList.notification_type, NotificationTypes.GroupCreate.ToIntString());
            extraParams.AddNew(ExtraParamsList.date_sent, DateTime.UtcNow.ToUnixEpoch().ToString());
            extraParams.AddNew(ExtraParamsList.room_updated_date, dialogInfo.UpdateAt.ToUnixEpoch().ToString());
            extraParams.AddNew(ExtraParamsList.dialog_id, dialogInfo.Id);
            extraParams.AddNew(ExtraParamsList.room_name, dialogInfo.Name);
            extraParams.AddNew(ExtraParamsList.current_occupant_ids, string.Join(",", dialogInfo.OccupantsIds));
            extraParams.AddNew(ExtraParamsList.type, ((int)dialogInfo.Type).ToString());

            if (!string.IsNullOrEmpty(dialogInfo.Photo))
            {
                extraParams.AddNew(ExtraParamsList.room_photo, dialogInfo.Photo);
            }

            var userJid = ChatXmppClient.BuildJid(userId, quickbloxClient.ApplicationId, quickbloxClient.ChatEndpoint);

            quickbloxClient.ChatXmppClient.SendMessage(userJid, "Notification Message", extraParams, dialogId, null, MessageType.Headline);
        }