Amazon Alexa-Fähigkeiten-Kit: Wie stellen Sie die Verbindung mit externen app-Konto / userId
In einem Amazon alexa-skill Anfrage gibt es userId und ich versuche zu verstehen, was das ist, und wenn es eine Referenz für Sie, weil ich will, zu verknüpfen und Amazon Echo Benutzer-Konto mit einem Konto bei meiner eigenen app und dazu würde ich haben eine Art statische userId mit zu arbeiten.
Beispiel Anfrage:
{
"version": "1.0",
"session": {
"new": false,
"application": {
"applicationId": "amzn1.echo-sdk-ams.app.[unique-value-here]"
},
"sessionId": "session1234",
"attributes": {},
"user": {
"userId": null //IS THERE A DETAILED REFERENCE OF THIS SOMEWHERE?
}
},
"request": {
"type": "IntentRequest",
"requestId": "request5678",
"intent": {
"name": "MyColorIsIntent",
"slots": {
"Color": {
"name": "Color",
"value": "blue"
}
}
}
}
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich weiß nicht, warum die ursprüngliche Antwort wurde gelöscht, aber Amazon jetzt können Sie eine Verknüpfung mit einem Alexa-Benutzer mit einem Benutzer in Ihrem system. Hier ist die Ankündigung.
Große Frage.
Kurze Antwort: Sie gehen, um Ihre eigenen zu bauen pairing zwischen Ihrem 3rd-party-Benutzer und Alexa UserID. Es gibt keine integrierte Unterstützung in der Alexa Fähigkeiten SDK, können Sie ordnen Sie ein Alexa-Benutzer-id mit Ihrer Benutzer-ID. Du gehst zu haben, um eine bestimmte voice Absicht, dass die Mitarbeiter Alexa Benutzer-IDS, um Ihre Benutzer-DB.
Längere Antwort: Lassen Sie uns beginnen, indem er über das Alexa-UserID erhalten Sie in jeder Anfrage. Die Alexa-UserID erhalten Sie eine LWA (Login-Mit-Amozon) Benutzer-ID. Es ist der primäre Zweck, zu ermöglichen, Alexa Fähigkeiten, um zuverlässig feststellen zu wiederholen Benutzer.
So was funktioniert nicht? Das Problem wirst du in ausgeführt wird, dass die LWA userId ist immer anonymisiert zu jedem Alexa-app. Das ist wichtig, weil es sicherstellt, dass die Benutzer nicht verfolgt; aber es verhindert auch die Beteiligung der Alexa userID mit Ihrem eigenen LWA userID.
Aus der "Login mit Amazon - Entwickler-Guide" (Seite 10)
Was ich zu sagen versuche ist, dass man nicht einfach umzusetzen LWA in iOS, Android oder Web-apps und erwarten, um die gleichen LWA userId für ein Konto als Sie erhalten würden, als Alexa userID. Zum Beispiel, wenn Sie umgesetzt LWA auf Ihrem Android-app eine hatte [email protected] Benutzer-login zu Ihrem Amazon-Konto erhalten Sie möglicherweise amzn1.Konto.123456 als userID, aber wenn das gleiche [email protected] Nutzer spricht mit Ihr gepaart Echo erhalten Sie eine amzn1.Konto.98765 oder andere völlig andere userId. Ich eigentlich verschwendet zwei Tage Aufbau dieser Architektur, die ist, wie ich weiß, es funktioniert nicht.
So was funktioniert? Eine Stimme-centric Variante des Pin-Authentifizierung am besten scheint.
Schauen wir uns einen anderen Platz mit apps, die mit einem ähnlichen problem: TV-apps (xbox, android TV, etc). Viele dieser apps benötigen Sie ein login, um Zugang zu Inhalten (z.B. hulu, netflix, etc). Aber über eine Fernbedienung zur Eingabe eines Benutzernamens und Passwort ist einfach nur alte schlechte UX. So was haben wir für TV-apps? Nutzer gehen auf myService.com/tv, login auf Ihr Konto und erhalten eine spezielle kurze, numerische und Zeit-sensible pin-code, den Sie eingeben können, um Ihre TV.
Wenn ich die Umsetzung einer Alexa Fähigkeiten, die wir beschlossen, einen ähnlichen Ansatz. Würden die Nutzer loggen Sie sich in unsere website, iOS app oder Android app, gehen Sie ein engagiertes Echo-Seite und erhalten dann einen pin-code. Die Anweisungen auf dem Bildschirm, die würden so etwas Lesen:
In unserem foo Fähigkeiten, die wir haben eine PairingIntent Absicht hören "meine pin ist {eins zwei drei vier|pinCode}" Probe auszusprechen. Nach Erhalt einer PairingIntent wir würden überprüfen, ob das pin-code war gültig und, wenn so verbunden, dass Alexa userID mit unseren eigenen DB-Benutzer. Wenn die pin gültig Echo etwas sagen würde wie "Oh, Hallo bob! Sie haben nun Zugriff auf alle Ihre awesome stuff.". Wenn der pin-code nicht gültig alexa würde den Benutzer auffordern, erneut zu versuchen.
Hoffentlich ist dies sinnvoll. Es gibt andere Optionen zu verknüpfen, 3rd-party-Konten mit Alexa Fähigkeiten, aber diese Stimme-pin-Ansatz ist die einfachste.
Die userid gegeben, um die Alexa skill ist garantiert einmalig pro Benutzer. Es ist anonymisiert laut dem Entwickler-ID, so wird es das gleiche auf allen deinen Fähigkeiten, aber es unterscheidet sich von Entwickler zu Entwickler. Es gibt keine Möglichkeit, explizit den link zurück zur realen ID. Sie haben selbst erledigen.
Meine Allgemeine Empfehlung ist, es zu tun, wie Firefox-sync. Wenn beide Ihre Alexa Geschick und Ihre Anwendung freigeben eine back-end dann, wenn ein Benutzer möchte zum synchronisieren von Alexa, generieren Sie ein 4-Zeichen-sync-code, speichern Sie es in das back-end, Lesen Sie es an die Benutzer, und sagen Sie Ihnen, gehen Sie zu der Website und geben Sie es in. Auf der web-site, wenn Sie einen sync-code, match it up und bilden Sie sich Ihre Verbindung zwischen den beiden.
Ich Rede über diese in ein wenig mehr detail in mein Buch, aber das ist der Kern von ihm.
In einer Amazon alexa-skill-Anforderung ich bin versucht, binden Sie es mit Benutzername.
Als können Sie nicht bekommen einen tatsächlichen Benutzernamen. Aber, um vollständiger zu sein, gibt es verschiedene Möglichkeiten, die verwendet werden, um zu tun, was Sie versuchen, zu. Es würde davon abhängen, was Sie sind skill versucht zu erreichen, um zu erfahren, was der Ansatz für Sie ist.
Ihre Optionen sind:
Verknüpfung einen Benutzernamen in Ihrem system, um den Alexa-Benutzer. In diesem Fall müssen Sie nicht einen Benutzer Namen. Sie erhalten ein token, und Sie würde link der Benutzername zusammen in Ihrem system mit Hilfe des token. Lesen: https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/linking-an-alexa-user-with-a-user-in-your-system
Wenn das, was Sie versuchen zu tun, ist nur zur eindeutigen Identifizierung eines Benutzer aus einer anderen, aber Sie kümmern sich nicht oder benötigen Sie spezielle Informationen, die für diesen Benutzer. Die Anfrage kommt mit einem Benutzer (session.Benutzer.userId). Es ist eine zufällige Zeichenfolge, die identifiziert, dass der Benutzer für alle Anfragen, die Sie senden, aber sagt Ihnen nichts über Sie. Lesen: https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/alexa-skills-kit-interface-reference
Könnte man eine Absicht, die wäre so etwas wie "SetUser" und lassen den Benutzer sprechen Sie den Benutzernamen, die Sie möchten. Dann können Sie mit #2 oben verknüpfen in einigen Daten-Speicher irgendwo. Ich weiß nicht, ob Amazon unterstützt diese route, obwohl, wie es wäre wirklich ein Weg, Sie zu umgehen #1. Also, es hängt davon ab, was Sie zu tun versuchen. Wenn Sie persönliche Informationen über den Nutzer verwenden #1. Wenn Sie brauchen nur zu wissen, dass es einige user vs andere user verwenden #2.