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; }
/// <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); }
/// <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); }
/// <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); }
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); } } }
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); }