Search code examples
slackalexa-voice-servicedialogflow-esactions-on-googlegoogle-home

Detect the speaker of Google Home or Amazon's Alexa


I would like to detect who is interacting with my agent.

For example I read that Alexa should be able to detect different users. The Google Home advertisement also let me think that it should detect who is talking. So how can I see who is talking?

In slack it seems to be easier since it is well known who is writing. However I cannot see who I get the current user.


Solution

  • I found out how to detect the user in slack: If you implement that hook you will get this example json:

    {
        "id": "f7912345-e21c-450f-a8ca-d01e38012345",
        "timestamp": "2016-12-20T06:53:51.071Z",
        "result": {
            "source": "agent",
            "resolvedQuery": "echo hallo welt",
            "speech": "",
            "action": "",
            "actionIncomplete": false,
            "parameters": {
                "myInput": "hallo welt"
            },
            "contexts": [{
                "name": "generic",
                "parameters": {
                    "slack_user_id": "U0AT12345",
                    "myInput": "hallo welt",
                    "slack_channel": "D3DR12345",
                    "myInput.original": "hallo welt"
                },
                "lifespan": 4
            }],
            "metadata": {
                "intentId": "06212345-06a0-40fe-bbeb-9189db412345",
                "webhookUsed": "true",
                "webhookForSlotFillingUsed": "false",
                "intentName": "Response"
            },
            "fulfillment": {
                "speech": "",
                "messages": [{
                    "type": 0,
                    "speech": ""
                }]
            },
            "score": 0.75
        },
        "status": {
            "code": 200,
            "errorType": "success"
        },
        "sessionId": "10612345-c681-11e6-af08-875120912345",
        "originalRequest": {
            "source": "slack_testbot",
            "data": {
                "channel": "D3DR12345",
                "match": ["echo hallo welt"],
                "text": "echo hallo welt",
                "team": "T04H12345",
                "type": "message",
                "event": "direct_message",
                "user": "U0AT12345",
                "ts": "1482216830.000005"
            }
        }
    }
    

    So in case of slack you can access result->contexts[0]->paramaters->slack_user_id.