Search code examples
dialogflow-esactions-on-google

Is there an anonymous ID in Actions on Google with Dialogflow?


Is there an anonymous ID in Actions on Google with Dialogflow that I can access using DialogFlow in Node.js?

I don't need to know the Google account of who is using the Action, but I do want to have a unique identifier so that the Action can know when they come back.


Solution

  • I've found a possible option...

    (When working in DialogFlow in Node.js, most code is in a handler and the parameter is usually called conv. The following assumes that it is inside such a handler.)

    On every single call, check for an 'existing' id in the session data and the user storage:

    var id = conv.data.MyId || conv.user.storage.MyId || '';
    
    if(!id) {
      id = /* make a new Id for this user... a GUID or some other unique id */
      conv.user.storage.MyId = id;
    }
    

    Once I get the Id from storage or make a new one, it is critical to reassign it to conv.data, since conv.user.storage seems to be reliably provided only on the first call!

    // IMPORTANT
    conv.data.MyId = id;
    
    /* use the Id as needed */
    

    My code looks up the Id in a firebase database to get details from their last visit.

    This seems to be working, but may not be reliable.