Невозможно использовать 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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