private void DiscoverCapabilities() { var requestIq = new IQ(); var request = new ServiceQuery(); request.Node = Capabilities.DiscoveryInfoNode; requestIq.From = session.UserId; requestIq.ID = XmppIdentifierGenerator.Generate(); requestIq.To = ResourceId; requestIq.Type = IQType.Get; requestIq.Items.Add(request); pendingMessages.Add(requestIq.ID); session.Send(requestIq); }
protected override void OnServiceDiscoveryMessage(IQ message) { // Answers to Entity Capabilities and service discovery info requests if (message.Type == IQType.Get) { if (message.Items[0] is ServiceQuery) { var query = (ServiceQuery) message.Items[0]; var response = new ServiceQuery { Node = ((!String.IsNullOrEmpty(query.Node)) ? DiscoveryInfoNode : null) }; var responseIq = new IQ { From = session.UserId, ID = message.ID, To = message.From, Type = IQType.Result }; foreach (XmppServiceIdentity identity in Identities) { var supportedIdentity = new ServiceIdentity { Name = identity.Name, Category = identity.Category.ToString().ToLower(), Type = identity.Type }; response.Identities.Add(supportedIdentity); } foreach (XmppServiceFeature supportedFeature in Features) { var feature = new ServiceFeature { Name = supportedFeature.Name }; response.Features.Add(feature); } responseIq.Items.Add(response); session.Send(responseIq); //// Error response //IQ errorIq = new IQ(); //ServiceQuery response = new ServiceQuery(); //Error error = new Error(); //errorIq.From = this.session.UserId.ToString(); //errorIq.ID = e.QueryResult.ID; //errorIq.To = e.QueryResult.From; //errorIq.Type = IQType.Error; //errorIq.Error = error; //response.Node = query.Node; //error.Type = ErrorType.Cancel; //error.ItemNotFound = ""; //errorIq.Items.Add(response); //this.session.Send(errorIq); } } }