Невозможно использовать Alexa REST API для обновления «хранилища данных» для виджета Alexa.Javascript

Форум по Javascript
Anonymous
Невозможно использовать Alexa REST API для обновления «хранилища данных» для виджета Alexa.

Сообщение Anonymous »

Я написал простой навык Alexa, который работает, и теперь я добавил виджет, оба они отображаются так, как ожидалось.
Сейчас я пытаюсь использовать хранилище данных, но каждый раз, когда я пытаюсь обновить хранилище, я получаю сообщение об ошибке, связанное с невозможностью найти идентификатор клиента из метаданных навыка.
Я использую ClientID и секрет клиента из раздела «Разрешения» навыка в консоли разработчика Alexa, используя это и область alexa::datastore, я могу авторизоваться и получить access_token.
Однако, когда я пытаюсь вызвать REST API хранилища данных для обновления хранилища данных, происходит сбой со следующей ошибкой:

Код: Выделить всё

{
"type": "INVALID_ACCESS_TOKEN",
"message": "Unable to find the Client ID from skill metadata:amzn1.application-oa2-client.xxxxxxxxx"
}
Я попробовал запустить пример навыка Plant Care Widget, поскольку он использует хранилище данных, но он также возвращает ту же ошибку, если я смотрю в Журналы CloudWatch.
Я потратил пару дней, пытаясь заставить это работать, но безрезультатно.
Я уверен, что мой ClientID и Client Secret верны, поскольку авторизация работает, поэтому кажется, что это какой-то другой проблема с конфигурацией, проблема с платформой, или, может быть, я пропустил необходимый шаг?
Я также написал быстрый скрипт Powershell для тестирования API, который вы можете увидеть ниже:

Код: Выделить всё

$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
Любая помощь, которую вы можете оказать, будет очень признательна!


Подробнее здесь: https://stackoverflow.com/questions/798 ... exa-widget

Вернуться в «Javascript»