Статьи

Как контролировать свой навык Alexa

Отладка программного обеспечения является важной возможностью для разработчиков, но для отладки серверных архитектур требуется специальный подход. Бэкэнд Alexa Skill — это в большинстве случаев бессерверные функции, например, с использованием AWS Lambda. Отладка, мониторинг и тестирование являются главными проблемами, когда речь идет об отсутствии сервера, причем отладка является самой распространенной проблемой.

Бессерверные функции по своей конструкции очень сложно прикрепить к чему-либо. В результате мы наблюдаем новые решения для отладки без серверов, как локально, так и удаленно. В этом посте я представляю решение для мониторинга ваших навыков Алекса.

Мониторинг внутренностей нашего мастерства

Наш Skill Backend по своей природе основан на событиях. Это усложняет отладку, поскольку незначительные различия в содержании, формате или порядке события могут привести к большим различиям. Моделирование этих событий — потенциально большая разница, которая может затруднить воспроизведение и тестирование.

Когда вы сталкиваетесь с ошибкой в ​​навыке, его надежное воспроизведение может быть полдела. Во многих средах, управляемых данными, основным фактором при воспроизведении ошибки является получение правильных входных данных. Перенос данных с производства на разработку может занять несколько часов (или даже дней) и может быть затруднен из-за безопасности, соответствия и других факторов. Инструменты производственной отладки позволяют разработчикам изучать ошибки «в дикой природе» на производстве, не тратя время и ресурсы на миграцию данных и не раскрывая конфиденциальные данные.

Существует множество инструментов, которые помогают нам отлаживать и отслеживать безсерверные приложения. Делая предыдущее исследование, в котором ищем, какой из них будет лучше следить за навыком Alexa, я выбрал Sentry

Пойдем глубже!

караул

Sentry — это компания с открытым исходным кодом, предоставляющая платформу для мониторинга приложений, которая помогает выявлять проблемы в режиме реального времени. Sentry — это сервис, который помогает отслеживать и устранять сбои в режиме реального времени. Сервер на Python, но он содержит полный API для отправки событий с любого языка, в любом приложении. Мы собираемся сосредоточиться на концепциях Sentry по контексту , хлебным крошкам и средам, чтобы обеспечить надлежащий мониторинг наших навыков.

Контексты

Sentry поддерживает дополнительный контекст с событиями. Часто этот контекст является общим для любого события, захваченного в его жизненном цикле, и включает в себя следующие компоненты:

Какие контексты мы будем использовать? эти:

  • Пользователь : пользователь запросов Alexa
  • Теги : это позволяет нам классифицировать и контекстуализировать каждый запрос, чтобы хорошо отслеживать и отслеживать все запросы. Мы настроим эти теги:

    • request_id : идентификатор полученного запроса.
    • application_id : идентификатор нашего навыка. Это позволяет нам сделать быстрый поиск, чтобы проверить все запросы одного навыка.
    • session_id : идентификатор сеанса одного пользователя, использующего один навык. Это поможет нам отслеживать один сеанс одного пользователя.
    • person_id : благодаря персонализации ваш навык может различать отдельных докладчиков в учетной записи. Так что, если Alexa признает текущий голос мы получим Userи Personобъекты , которые включают в себя person_idимущество.

Среды

В средах мы можем фильтровать события в зависимости от среды выполнения, т.е. dev / prod, а также в зависимости от выпуска нашего бэкэнда навыков. Вы можете фильтровать выпуски по среде, в которой они были развернуты. Например, выпуск, связанный с развертыванием QA и развертыванием Prod, появится в вашем представлении при фильтрации по QA и Prod.

Панировочные сухари

Sentry поддерживает концепцию Breadcrumbs, которая представляет собой список событий, которые произошли до появления проблемы. Часто эти события очень похожи на традиционные журналы, но также имеют возможность записывать более богатые структурированные данные. В эти хлебные крошки мы поместим соответствующие данные нашего навыка Alexa, такие как запросы (контексты, сеанс), ответы, общее время выполнения и т. Д.

Часовой в Нашем Умении

Я не собираюсь начинать с нуля в этом посте. Я буду повторно использовать проект, который использовал в своей пост-Alexa  Skill, AWS CloudFormation y Модель сервера без приложений (SAM) .

Настройка Sentry в Нашем Умении

Прежде всего, мы должны добавить зависимость Sentry в pom.xmlфайле:


XML