xmppframework disco items filtering - ios

is there any way whereby I can query for example a list of muc rooms but specify certain constraints.
I have attached the location of each room in each room's configuration form under the description field. I want to find out what is the best way to get all the rooms within 500m of the user's location.
On the backend, I have ejabberd server. It will be great if anyone can point me to the right documentation for this particular example

There is no such feature in Multi-User Chat extension (XEP-0045) and as such ejabberd does not implement anything special.
To implement your business logic, you will need to write a custom ejabberd module that find the room for your user based on your location criteria and return the result.

Related

How to enable Watson conversation service to use your own database for serving user's request

I want to build a smart search agent which would use Watson conversation to process the request and give response but will use my own database say SQL server to search the desired output.
In Short Instead of writing intents and dialogues manually or importing from a csv file, I want to write my won code in .net in such a way that all the request and responses are influenced by my own data stored in my database. I only intent to use watson's processing and interpreting capability. But the processing must happen on my data.
E.g If the user searches for a word say "Dog", the Watson conversation service must search in my database and give relevant answers to the user based on the search.
Take a look at the solution architecture in the Watson Conversation documentation. Your database would be one of the depicted backend systems. Your application would be, as you mentioned, written in .NET and would use WCS to process the user input. It would return a response with all the associated metadata. Instead of having complete answers configured in a dialog, you would use something I have described as "replaced markers" in my collection of examples. Those markers are kind of hints to your application of which database query or which action to perform.
Note that WCS requires some intents and entities to work on. If you want to rely just on the detected intents and entities, you could work with one or two generic dialog nodes. As another technique you could use data from your database to generate intents and entities as an initial setup. In my "Mutating EgoBot" I use the Watson Conversation API to add intents and entities on the fly.
I believe you should use the standard trick:
instead of defining resposnses in the node of your diaglog, define an action on the output object of the node and let your applicatation take care of providing response (see https://console.bluemix.net/docs/services/conversation/develop-app.html#building-a-client-application)

How to create a muc private chat room with existing room name?

I can create a muc room. But if i gave the room name as existing one in the database, the server rejects it.So is it possible to create two rooms with same name in ejabberd server(MYSQl backend)?
If possible, then what are the consequences? For example, i created two rooms with unique name say "newGroupChat" and same user list(user1, user2). How can ejabberd identifies it? If i send messages in "newGroupChat", does those messages appear in one room or both of the rooms.
Its hard to specifically no what you are trying to achieve, but I came across this in another XMPP server setup( Its pretty much generic with few config differences on different servers), and the idea I got is like this:
If you use different systems( different IP) it is possible to have the same room across multiple domains, hence you can mirror the rooms but the room name has to be the same thing, for example "newGroupChat#conference.serverIP1" , and one the second system "newGroupChat#conference.serverIP2", and when you send messages on System 1, system 2 users can also see the same messages if they are online and logged into the room.
If it's the same system I don't know how you intend to set a boundary on it, there are two ways to do this I figured out, using different OS(maybe bridged networking) and also separating databases. If you use an embedded database there is no way you can re-create the same room, you might try adding extensions to the name to see if it would work as such : "newGroupChat#conference.serverIP1/ID1" and "newGroupChat#conference.serverIP1/ID2", the above also applies to an external database such as SQL. These are a few suggestions and muc setup might have slight config setup in contrast to the examples I gave, but that's a general idea, if you have better explanations you can also share with me, as I am looking into LAN chatting on different systems with the same muc room.
In Xmpp world, room#service is used as an identifier for a room, so here the room is unique. That's why use failed to create when using a existing name.
I think you can try use subject configure for this purpose.
Xmpp MUC Xep-0045
Room, A virtual space that users figuratively enter in order to participate in real-time, text-based conferencing with other users.
Room ID, The localpart of a Room JID, which might be opaque and thus lack meaning for human users (see under Business Rules for syntax); contrast with Room Name.
Room JID, The address of a room.
Room Name, A user-friendly, natural-language name for a room, configured by the room owner and presented in Service Discovery queries; contrast with Room ID.
I can create a muc room. But if i gave the room name as existing one
in the database, the server rejects it.So is it possible to create two
rooms with same name in ejabberd server(MYSQl backend)?
No.It is not possible to create two room with same name in a host in ejabberd(as per XEP-45,too).

Google Analytics reporting doesn't display individual users for iOS app

We've implemented user-level tracking using the documentation https://support.google.com/analytics/answer/3123666?hl=en, including creating specific reporting views User Behavior and Monitor User. Despite this, we cannot see any views in GA which display the individual user ids. How to do this? I'd like to be able to answer these kinds of questions:
Which individual users are heaviest users of app, are what are
specific flows, events that they are doing? What is their behavior
like?
Which individuals are lightest users of app?
Which users have never used certain features?
Thanks!
What you are describing comes very close violating the Google Analytics TOS. You need to ensure that you do not send any Personally identifiable information to Google Analytics.
The user id feature is more practically intended to understand aggregate user behavior and unify cross device sessions. If you rephrased your query to not get at individual users but groups you could easily answer some of your questions.
Which user groups are heaviest users of the application? create a segment which contains your definition for a user which makes heavy use of your application and query for the specific pages that segment visits.

Simperium multiple users accessing data

In the Simperium documentation/help section there is the following text:
All the data that is created seems like it must be tied to a user - is
that correct? Is it possible to have data that isn't tied to a user -
say a database of locations or beers?
Yes, though this isn't very clear yet. You can create a public user
(i.e., a public namespace) with an access token you share with other
users of your app so anyone can read/write to that namespace.
It's possible to limit this to read-only access as well if you need to
authoritatively publish data from a backend service.
Is there an actual example with this?
The scenario I have is as follows
My app will have a calendar
The primary user can add and remove data from the calendar
They will want to invite other users to add and remove data, my thought is that they can give them a token, the user can use their email address and this token to sign in
Am I on the right track?
You're definitely on the right track, but a little too far ahead on that track. The scenario you described is a great fit for Simperium, but sharing and collaboration features aren't yet released.
The help text you quoted is for authoritatively pushing content, for example from a custom backend to all users of your app. An example of this would be a news stream that updates on all clients as new content is added.
This is quite different than sharing calendar data among a group of users who have different access permissions, which is actually a better use of Simperium's strengths. We have a solution for this that we've tested internally, but we're using what we've learned to build a better version of it that will be more scalable for production use.
There's no timeline for this yet, but you'll see it announced on your dashboard at simperium.com.

Getting a list of all packages from shipping carriers

I've been looking at the APIs for UPS, FedEx, USPS, etc, and I can't seem to find any method of pulling all tracking info for a given user. I only see methods that pull info via a tracking number. Has anyone been able to find a way to get at this data? Seems silly to me that these huge carriers wouldn't supply this info in an easy method.
I'm trying to accomplish this in Rails.
We were able to integrate with UPS Quantum View and even with FedEx Insight. These services will give you a list of all inbound and outbound shipments that are billed to your UPS/FedEx account. You can get info on every piece of each shipment: tracking numbers, weight, shipper and recipient info (Company name, city, state, country).
To pull information from UPS Quantum View using their API you will need to obtain a so-called Access Key, and you'll need to create Subscriptions: one for inbound shipments, one for outbound ones. This can be done on ups.com if you already have a UPS shipping account. You don't have to wait, it's provided instantly. We have a video of how to get the key and set up the subscriptions. It's on easytag.net in the Help section. The video title is Obtaining a UPS Access Key.
When creating API requests to UPS, you'll need to include a key and a subscription name.
UPS has a Quantum View API. Quantum View is their service that allows tracking, etc by account, not just individual tracking number. I assume that will get you what you need. I don't have an account so I can't see their detailed API documentation, so I'm just guessing.

Resources