Die Alexa-REST-API kann nicht zum Aktualisieren des „Datenspeichers“ für ein Alexa-Widget verwendet werdenJavaScript

Javascript-Forum
Anonymous
 Die Alexa-REST-API kann nicht zum Aktualisieren des „Datenspeichers“ für ein Alexa-Widget verwendet werden

Post by Anonymous »

Ich habe einen einfachen Alexa-Skill geschrieben, der funktioniert, und ich habe jetzt ein Widget hinzugefügt. Beide werden wie erwartet angezeigt.
Ich versuche jetzt, den Datenspeicher zu verwenden, aber jedes Mal, wenn ich versuche, den Store zu aktualisieren, erhalte ich eine Fehlermeldung, dass ich die Client-ID nicht in den Skill-Metadaten finden kann.
Ich verwende die Client-ID und das Client-Geheimnis aus dem Abschnitt „Berechtigungen“ des Skills in der Alexa Developer Console und verwende dies und Im alexa::datastore-Bereich kann ich ein access_token autorisieren und erhalten.
Wenn ich jedoch versuche, die Datenspeicher-REST-API aufzurufen, um den Datenspeicher zu aktualisieren, schlägt dies mit der folgenden Fehlermeldung fehl:

Code: Select all

{
"type": "INVALID_ACCESS_TOKEN",
"message": "Unable to find the Client ID from skill metadata:amzn1.application-oa2-client.xxxxxxxxx"
}
Ich habe versucht, den Plant Care Widget-Beispielskill auszuführen, da er den Datenspeicher verwendet, aber auch das gibt den gleichen Fehler zurück, wenn ich in den CloudWatch-Protokollen nachschaue.
Ich habe ein paar Tage damit verbracht, dies ohne Erfolg zum Laufen zu bringen.
Ich bin mir sicher, dass meine Client-ID und mein Client-Geheimnis korrekt sind, da die Autorisierung funktioniert, also fühlt es sich so an, als wäre es etwas anderes Konfigurationsproblem oder ein Plattformproblem, oder habe ich vielleicht einen erforderlichen Schritt übersehen?
Ich habe auch ein schnelles Powershell-Skript geschrieben, um die API zu testen, das Sie unten sehen können:

Code: Select all

$clientId = "your-client-id"
$clientSecret = "your-secret"

$body = @{
grant_type     = "client_credentials"
client_id      = $clientId
client_secret  = $clientSecret
scope          = "alexa::datastore"
}

$tokenResponse = Invoke-RestMethod `
-Uri "https://api.amazon.com/auth/o2/token" `
-Method Post `
-ContentType "application/x-www-form-urlencoded" `
-Body $body

$tokenResponse | Format-List *

$accessToken = $tokenResponse.access_token
$accessToken

$headers = @{
Authorization = "Bearer $accessToken"
"Content-Type" = "application/json"
"Charset" = "utf-8"
}

$timestamp = (Get-Date).ToUniversalTime().ToString("o")

$payloadObject = @{
commands = @(
@{
type      = "WRITE"
namespace = "debug"
key       = "ping"
data      = @{ ts = $timestamp }
}
)
target = @{
type  = "USERS"
users = @(
@{ userId = "dummy-user" }
)
}
}

$payloadJson = $payloadObject | ConvertTo-Json -Depth 10

$response = Invoke-WebRequest `
-Uri "https://api.amazonalexa.com/v1/datastore/commands" `
-Method Post `
-Headers $headers `
-Body $payloadJson

$response.StatusCode
$response.Content
Jede Hilfe, die Sie leisten können, wird sehr geschätzt!

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post