it-swarm.com.de

Amazon Alexa Skills Kit: Wie stellen Sie eine Verknüpfung mit einem externen App-Konto/einer Benutzer-ID her?

In einer Amazon Alexa Skill Anfrage gibt es eine userId und ich versuche zu verstehen, was das ist und ob es eine Referenz dafür gibt, weil ich verlinken möchte und Amazon Echo user account mit einem account in meiner eigenen app und dazu müsste ich eine statische userId haben, mit der ich arbeiten kann.

Beispielanfrage:

{
 "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"
    }
  }
}
}
}
16
Zigglzworth

Ich weiß nicht, warum die ursprüngliche Antwort gelöscht wurde. Mit Amazon können Sie nun einen Alexa-Benutzer mit einem Benutzer in Ihrem System verknüpfen. Hier ist die Ankündigung .

Wie Endbenutzer die Kontoverknüpfung für eine Fertigkeit einrichten

Benutzer verknüpfen ihre Konten mithilfe der Amazon Alexa-App. Beachten Sie, dass Benutzer Die App verwenden müssen. Es gibt keine Unterstützung für die Einrichtung der Verbindung ausschließlich Per Sprache.

Benutzer starten den Prozess normalerweise, wenn Sie Ihre Fertigkeit zunächst in Der App aktivieren:

  1. In der Alexa-App aktiviert der Benutzer die Fähigkeit.
  2. Die App zeigt Ihre Anmeldeseite direkt in der App mit der Autorisierungs-URL an, die Sie bei der Registrierung Ihres Skills im Entwicklerportal Angegeben haben. Wenn die Begleit-App diese URL aufruft, enthält sie state , client_id und scope als Abfragezeichenfolgeparameter.

    • Der Status wird vom Alexa-Dienst während des Kontoverbindungsprozesses verwendet. Ihre Seite muss diesen Wert nach Bedarf nachverfolgen
      später zurückgeben.
    • Die client_id wird von Ihnen definiert. Ihre Anmeldeseite kann dies verwenden, um festzustellen, dass die Anfrage von Ihrer Alexa-Fähigkeit stammt.
    • Der Bereich ist eine optionale Liste von Zugriffsbereichen, die die angeforderte Zugriffsstufe angibt. Sie definieren den Bereich, der unterstützt werden soll, wenn Die Kontoverbindung für Ihre Fertigkeit aktiviert.
  3. Der Benutzer meldet sich mit seinen normalen Anmeldeinformationen für Ihre Site an.

  4. Ihr Dienst authentifiziert den Benutzer und generiert dann ein Zugriffstoken, das den Benutzer in Ihrem System eindeutig identifiziert.

  5. Ihr Dienst leitet den Benutzer zu einer Amazon-spezifischen URL um und leitet Status, Zugriffstoken und Token-Typ im URL-Fragment Weiter.

  6. Der Alexa-Dienst überprüft die zurückgegebenen Informationen und speichert dann das access_token für den Alexa-Benutzer.

Zu diesem Zeitpunkt ist die Fertigkeit aktiviert, das Alexa-Konto des Benutzers ist Mit dem Konto in Ihrem Service verknüpft, und die Fertigkeit kann Verwendet werden.

11
Lucas

Tolle Frage. 

Kurze Antwort:Sie müssen ein eigenes Paar zwischen Ihrem Drittanbieter und der Alexa-Benutzer-ID erstellen. Das Alexa Skills-SDK bietet keine integrierte Unterstützung, mit der Sie Ihrer Benutzer-ID eine Alexa-Benutzer-ID zuordnen können Sie müssen eine bestimmte Stimmabsicht erstellen, die Alexa-Benutzer-IDs Ihrer Benutzer-Datenbank zuordnet. 

Längere Antwort:Beginnen wir damit, über die Alexa UserID zu sprechen, die Sie in jeder Anfrage erhalten. Die Alexa UserID, die Sie erhalten, ist eine LWA-Benutzer-ID (Login-With-Amozon) Benutzer.

Was funktioniert nicht?Das Problem, auf das Sie stoßen werden, ist, dass die LWA-Benutzer-ID für jede Alexa-App immer anonymisiert wird. Dies ist wichtig, da dadurch sichergestellt wird, dass Benutzer nicht verfolgt werden, was Sie aber auch verhindert Verknüpfen der Alexa-Benutzer-ID mit Ihrer eigenen LWA-Benutzer-ID. 

Über " Mit Amazon anmelden - Entwicklerhandbuch " (Seite 10)

Jedes Unternehmen, das Websites oder Apps für das Login bei Amazon erstellt, erhält Die gleiche user_id für einen Kunden. Wenn sich ein Kunde jedoch bei Der App oder Website eines anderen Unternehmens anmeldet, die Benutzer-ID ist unterschiedlich. Dies ist . Daher kann Benutzer-ID nicht verwendet werden, um Kunden im Web zu verfolgen.

Was ich damit sagen möchte, ist, dass Sie LWA nicht einfach in iOS, Android oder Web-Apps implementieren können und erwarten können, dass Sie dieselbe LWA-Benutzer-ID für ein Konto erhalten, die Sie als Alexa-Benutzer-ID erhalten würden. Wenn Sie zum Beispiel LWA in Ihrer Android-App implementiert einen Benutzer mit [email protected] bei ihrem Amazon-Konto angemeldet haben, erhalten Sie amzn1.account.123456 als Benutzer-ID, aber wann Wenn derselbe [email protected] - Benutzer mit seinem gepaarten Echo spricht, wird eine amzn1.account.98765 - oder eine andere völlig andere Benutzer-ID angezeigt. Ich habe tatsächlich zwei Tage damit verbracht, diese Architektur aufzubauen, und ich weiß, dass sie nicht funktioniert. 

Was funktioniert also?Eine stimmzentrierte Variante der Pin-Authentifizierung scheint am besten zu sein. 

Schauen wir uns einen anderen Bereich von Apps mit einem ähnlichen Problem an: TV-Apps (Xbox, Android TV usw.). Bei vielen dieser Apps müssen Sie sich anmelden, um auf Inhalte zugreifen zu können (z. B. hulu, netflix usw.). Die Verwendung einer Fernbedienung zur Eingabe eines Benutzernamens und eines Passworts ist jedoch nur eine schlechte alte UX. Was haben wir also für TV-Apps gemacht? Benutzer gehen auf myService.com/tv, melden sich bei ihrem Konto an und erhalten einen speziellen kurzen, numerischen und zeitabhängigen PIN-Code, den sie in ihren Fernseher eingeben können. 

Als ich einen Alexa Skill implementierte, entschieden wir uns für einen ähnlichen Ansatz. Die Benutzer loggen sich auf unserer Website, iOS-App oder Android-App ein, gehen auf eine dedizierte Echo-Seite und erhalten dann einen PIN-Code. Die Bildschirmanweisungen, die ungefähr so ​​lauten würden: 

Gehen Sie zu Ihrem Echo und sagen Sie: 

"Foo starten"

"Mein Pin ist eins zwei drei vier"

In unserer foo - Fertigkeit haben wir eine PairingIntent - Absicht, auf "meine Pin ist {Eins zwei, Drei, Vier | PinCode}" Beispielausgabe zu hören. Nachdem wir ein PairingIntent erhalten hatten, überprüften wir, ob der PIN-Code gültig war und ob dieser Alexa-Benutzer-ID der eigenen Benutzer-DB zugeordnet wurde. Wenn der Pin gültig ist, würde Echo so etwas wie "Oh, hi there bob" sagen. Sie haben jetzt Zugriff auf all Ihre großartigen Sachen. ". Wenn der PIN-Code nicht gültig ist, fordert Alexa die Benutzer dazu auf, es erneut zu versuchen. 

Hoffentlich macht das Sinn. Es gibt andere Möglichkeiten, Konten von Drittanbietern mit Alexa Skills zu verknüpfen, aber dieser Voice-Pin-Ansatz ist der einfachste. 

27
JustinAngel

Die Benutzer-ID der Alexa-Skill ist garantiert für jeden Benutzer eindeutig. Es wird entsprechend der Entwickler-ID anonymisiert, so dass es bei allen Ihren Fähigkeiten gleich ist, aber es wird von Entwickler zu Entwickler unterschiedlich sein. Es gibt keine Möglichkeit, ihn explizit mit einer realen ID zu verknüpfen. Das müssen Sie selbst tun. Meine generelle Empfehlung ist, es wie Firefox-Synchronisation zu tun. Wenn sowohl Ihre Alexa-Fähigkeit als auch Ihre Anwendung ein Back-End gemeinsam nutzen, generieren Sie einen aus vier Zeichen bestehenden Sync-Code, wenn ein Benutzer eine Synchronisierung von Alexa durchführen möchte, speichern Sie ihn im Back-End, lesen Sie ihn dem Benutzer vor und teilen Sie ihm mit auf die Website und geben Sie sie ein. Wenn sie einen Synchronisierungscode auf der Website angibt, passen Sie ihn an und bilden Ihre Verbindung zwischen den beiden. Ich spreche etwas ausführlicher in my Buch , aber das ist der Kern davon.

1
Joseph Jaquinta

In einer Amazon Alexa Skill-Anfrage versuche ich, sie mit dem Benutzernamen zu verbinden.

Da kann man keinen tatsächlichen Benutzernamen bekommen. Um vollständiger zu sein, gibt es verschiedene Möglichkeiten, um das zu tun, was Sie versuchen. Es hängt davon ab, was Sie mit Ihrer Fähigkeit erreichen wollen, um herauszufinden, welche Vorgehensweise für Sie die richtige ist. 

Ihre Optionen sind: 

  1. Verknüpfen eines Benutzernamens in Ihrem System mit dem Alexa-Benutzer. In diesem Fall erhalten Sie keinen Benutzernamen. Sie erhalten ein Token und verknüpfen den Benutzernamen in Ihrem System mit diesem Token. Lesen Sie: https://developer.Amazon.com/public/solutions/Alexa/alexa-skills-kit/docs/linking-an-Alexa-user-mit-a-user-in-your-system

  2. Wenn Sie lediglich versuchen, einen Benutzer eindeutig von einem anderen Benutzer zu identifizieren, ist es Ihnen jedoch egal, ob Sie bestimmte Informationen zu diesem Benutzer benötigen oder nicht. Die Anfrage enthält einen Benutzer (session.user.userId). Es handelt sich um eine zufällige Zeichenfolge, die den Benutzer für alle von ihm gesendeten Anforderungen identifiziert, Ihnen jedoch nichts davon mitteilt. Lesen Sie: https://developer.Amazon.com/public/solutions/Alexa/alexa-skills-kit/docs/Alexa-skills-kit-interface-reference

  3. Sie könnten eine Absicht haben, die so etwas wie "SetUser" wäre, und den Benutzer mit dem gewünschten Benutzernamen sprechen lassen. Dann könnten Sie # 2 oben verwenden, um sie irgendwo in einem Datenspeicher miteinander zu verknüpfen. Ich weiß nicht, ob Amazon diese Route unterstützt, da dies wirklich ein Weg wäre, um # 1 zu umgehen. Es hängt also davon ab, was Sie zu tun versuchen. Wenn Sie persönliche Informationen zum Benutzer benötigen, verwenden Sie # 1. Wenn Sie nur wissen müssen, dass es sich um einen Benutzer gegenüber einem anderen Benutzer handelt, verwenden Sie # 2.

0
Abhijit Jagtap