reverse geolocation with open graph action - facebook

I am developing an application which has an associated lat,long with the action in open graph. Presently, the api only allows for a place, so I have created my own location object which can be a property of the action.
The problem I perceive here is that this will not form part of the action in a very Facebook way.
I do not want to use Facebook places, nor do I want to have the use create a place when performing an action.
I don't need a lot of granularity, instead, just need "near $locality", such as a village name or national park if no residential addresses exist. This seems to be what happens with the Facebook messages.
Do we know a way of getting low fidelity data from Facebook or other (free) source which allow for locality information to be attached to an action?
Cheers

Related

Action with different fulfilment URL based on user's location

I work for a company that is building a Google Action which will be available in AU, NZ & UK. Depending on the location of the user, the fulfilment URL needs to be different as each country has its own APIs, etc.
We could achieve this easily by deploying three separate apps, restricted to their particular country, each having their own fulfilment URL. However, if my understanding is correct, they would all have different invocation names which is not ideal.
Another way we could potentially achieve this is by making the user choose which market they want (AU, NZ, UK) on the account linking page and then use the APIs for that market. However it doesn't seem to be a great UX.
Ultimately the key goals we're trying to achieve are
Users in AU, NZ & UK can all invoke the Google Action by saying "Ok Google, Open App", rather than "Ok Google, Open App NZ", "Ok Google, Open App UK", etc.
Users don't have to choose market (AU, NZ, UK) they belong to - it happens automatically
We can use the correct API based on the market the user belongs to.
There is no way to have different fulfillment URLs for the same Action.
You also have a slight issue when getting their location - you need to request it explicitly from them. Once you have this, however, you can store it (with their permission) to use it again in future requests, so you only have to do it once.
You will need to check to make sure it is one of the locations you serve, and you may want to allow them to change it (what if someone from the UK is traveling to AU?).

Main differences between a Smart Home action and a DialogFlow action

I'm just trying to figure out the main differences between these two types of actions. I mean a action that's use DialogFlow seems to be more conversational and more customizable. How does the Smart Home action handle the conversation? Is that a standard conversation based on the target device type?
When to create a Smart Home action and when to use DialogFlow?
To understand the difference, you need to understand the difference between a smart home action and a conversational action.
Conversational Actions
This is where the user initiates a conversation with "talk to X". Your action gets a WELCOME event. Then the user says more things and your action needs to process the user query and provide a text-based response.
Smart Home Actions
With the smart home integration, the user just gives a command directly. "Turn on my lights," for example, without precluding that with a "talk to" statement. Another big difference is that Google processes the user's query directly. Your smart home action does not get the user's text. Instead, there's a JSON request that specifies the user's intent.
The text that comes back is generated from Google as well, with parameters from your integration. Saying "turn on my lights" will result in "Ok, turning on lamp" or "Sorry, your lamp is offline" depending on what response your fulfillment sends.
There are a number of device types supported out of the box, as well as many traits. Traits specify the types of things that a device can do, such as turning on/off, or changing color. The traits are not explicitly tied to type, eg. you could change the color of a vacuum.
When to use each
If you're building or integrating a device that is meant to work with the Google Assistant, I'd suggest you look at smart home first. It will give users a better experience in being able to directly send queries, and it will make it easier for you to build fulfillment as the requests are structured already.
However, if it will not work for your application, you would want to look at Dialogflow, which will give you a greater level of flexibility in what the user can say.

Is it possible to save a custom variable for each user on their account?

I just got starte with programming a Facebook app. I already wrote an app for the VZ-Network, and there they have something called 'Persistant Storage'. Basically its an environment where you can save custom data on each user account. With your app you can read this data from the current user as well as from the users friends. Now I want to port my app to Facebook and my problem is that I didn't find such functionality here yet.
For now I would like to finish and launch this as soon as possible, so it would be nice if I could c&p as much of the code as possible.
Since the data is contains information about participation, at some point I would like to use the Facebook event object. But I was wondering if that could cause problems since it would require to create those events publically in order to use them in my app. Couldn't that lead to legal problems when I create such events with those who actually host the events in the real world? Would I have to ask the hosts to create those events, could I automate this process, or in case they don't have a Facebook account ask them to approve that the app creates the event for them?
I also need to know in what events the users friends participate, so I can't simply save the information on my server, since I don't have the friend info there.
In any case, it seems much easier to me to simply use a list of EventIDs on each user account to check whether or not the user participates in an event.

iOS identify user(s)

I am building app that will serve some content to the users via my private server. At the server-side I would like to identify user, so that I don't serve same content twice to the same user. How can I identify user(s)?
One way is DeviceID, but user can have multiple devices...?
Is the only way to have my own user IDs for my application (registration). I don't like this as it adds extra complexity to the app.
I know it's a hard task, but maybe facial recognition (from the webcam) could help in logging in users, since it doesn't imply any relation between user and device.
For example, face.com offers a free web-based API for facial recognition.
Although, Ishu's answer (username/password) is the easiest and most standard way to do identify users.
Make an id for user's and also a login page in the app. save his id with in you content table for send that content for that user. if that content entry already having his id then don't send to him otherwise send to him.
I don't think there is another option. You must use user id nothing else.

Form Journey Tracking using google analytics

Is there anyway, using google analytics, to track a user's journey/selections through a long form so I can see where they drop off?
I've created a 'contact us' form which starts with drop down menu which requires the user to make a choice i.e. apply for job, apply for funding etc. and then each option requires the user to fill out a form, which is completed over serval steps.
Is there a way to track a user's individual form choices from their initial selection on the Contact Us page through to the form being submitted? That way I could see where in the form journey the users are dropping off.
If the form is a multi-page form, then you can use Goal Funnel tracking to obtain reports which will help you understand how users fail to complete the form:
http://www.google.co.uk/support/googleanalytics/bin/answer.py?hl=en-uk&answer=55515
The Regular Expression matching in Goal Funnels is quite useful if you have different paths or different form URLs for the same goal. You could also track multiple page views per actual URL, if you wanted to monitor the users who move onto a different step on a single URL.
If you need to analyze how users complete a particular form, you could use Event Tracking to record when each field is completed. You will need to carefully think about how you wish to use Event Tracking to obtain the information you require.
http://code.google.com/apis/analytics/docs/tracking/eventTrackerGuide.html
But Google Analytics is not good at tracking individual users' behavior. You may wish to take a look at ClickTale if you want to do more advanced form usage analysis.