Alexa.NET не может создать напоминание: неверный токен на предъявителя - PullRequest
0 голосов
/ 18 декабря 2018

Я хочу создать push-уведомления для моего Alexa Devide.Из-за закрытия программы push-уведомлений я пытаюсь создать напоминания.Последняя идея - создать функцию Azure с этим кодом и вызывать ее при сбое сборки TFS.

Я использую Alexa.NET и Alexa.NET.Reminders из консольного приложения, уже есть и Alexa Skillсо всеми предоставленными разрешениями на портале Alexa и в мобильном приложении.

Кажется, все работает хорошо, пока я не попытаюсь прочитать напоминания в моем аккаунте, когда получаю исключение "Недопустимый токен на предъявителя"

это код:

[Fact]
    public async Task SendNotificationTest()
    {

        var clientId = "xxxx";
        var clientSecret = "yyyy";

        var alexaClient = clientId;
        var alexaSecret = clientSecret;

        var accessToken = new Alexa.NET.AccessTokenClient(Alexa.NET.AccessTokenClient.ApiDomainBaseAddress);
        var token = await accessToken.Send(alexaClient, alexaSecret);

        var reminder = new Reminder
        {
            RequestTime = DateTime.UtcNow,
            Trigger = new RelativeTrigger(12 * 60 * 60),
            AlertInformation = new AlertInformation(new[] { new SpokenContent("test", "en-GB") }),
            PushNotification = PushNotification.Disabled
        };

        var total = JsonConvert.SerializeObject(reminder);
        var client = new RemindersClient("https://api.eu.amazonalexa.com", token.Token);

        var alertList = await client.Get();

        foreach (var alertInformation in alertList.Alerts)
        {
            Console.WriteLine(alertInformation.ToString());
        }

        try
        {
            var response = await client.Create(reminder);
        }
        catch (Exception ex)
        {
            var x = ex.Message;
        }
    }

Есть ли примеры для получения токена доступа?Я пропускаю шаг в процессе?

Заранее спасибо.

1 Ответ

0 голосов
/ 23 декабря 2018

NB. Клиент напоминаний требует, чтобы у вас был навык с включенным разрешением напоминания, и пользователь должен был дать разрешение на напоминания вашего навыка (даже если это ваш аккаунт разработчика)

Создание напоминания

using Alexa.NET.Response
using Alexa.NET.Reminders
....
var reminder = new Reminder
{
    RequestTime = DateTime.UtcNow,
    Trigger = new RelativeTrigger(12 * 60 * 60),
    AlertInformation = new AlertInformation(new[] { new SpokenContent("it's a test", "en-GB") }),
    PushNotification = PushNotification.Disabled
};
var client = new RemindersClient(skillRequest);
var alertDetail = await client.Create(reminder);
Console.WriteLine(alertDetail.AlertToken);

Получение текущих напоминаний

// Single reminders can be retrieved with client.Get(alertToken)
var alertList = await client.Get();
foreach(var alertInformation in alertList.Alerts)
{
  //Your logic here
}

Удаление напоминания

await client.Delete(alertToken);
...