Есть ли у Google Actions уникальные идентификаторы?

При разработке для Alexa каждый навык имеет уникальный идентификатор. Это позволяет мне развивать несколько навыков, используя одну и ту же лямбда / кодовую базу, которые возвращают уникальную информацию на основе идентификатора навыка.

Однако из того, что я видел с помощью Google Assistant, у действий нет идентификаторов. Запросы включают уникальные userId и conversationId. И ответы включают intent id, но нет никакого способа идентифицировать само действие.

Есть какие-нибудь идеи / указатели на то, что я, возможно, пропустил?


person nealrs    schedule 12.02.2018    source источник
comment
Это может или не может быть уместным в зависимости от того, что именно означает кодовая база, но можете ли вы различать их по конечной точке, в которую они публикуют? Образцы обычно отправляются POST в корень, но это не обязательно. Кстати, у меня есть действие, размещенное на сервере Node с двумя маршрутизаторами Express. Один заполняет запросы от Alexa, один из Дома. Они разделяют бизнес-логику. Он использует части прекрасных библиотек alexa-app и alexa-app-server Мэтта Круза, которые поддерживают несколько навыков, каждый из которых находится в своем собственном подкаталоге.   -  person William DePalo    schedule 13.02.2018


Ответы (1)


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

И для Dialogflow, и для Action SDK вы всегда можете указать уникальный параметр запроса как часть веб-перехватчика или даже сделать так, чтобы разные части пути веб-перехватчика переходили к одной и той же лямбде и проверяли либо значение запроса, либо путь. Это имеет то преимущество, что вы полностью контролируете возможные значения.

Если вы используете Dialogflow, для каждого поступающего намерения существует уникальный идентификатор IntentID. Это может быть один из способов отследить, какой из них был вызван. Но это кажется несколько неуклюжим.

Также для Dialogflow вы можете установить уникальные заголовки в консоли Dialogflow, а затем проверить значение этих заголовков в своем веб-перехватчике. Опять же, это дает вам возможность контролировать стоимость.

В Action SDK нет этой функции, но он передает токен JWT в заголовке Authorization. Этот токен предназначен для проверки, что он получен из правильного проекта (и от Google), но после его декодирования (и проверки) поле aud должно содержать тот же идентификатор проекта, что и проект в консоли действий.

person Prisoner    schedule 12.02.2018
comment
Спасибо @Prisoner - установка заголовков / параметров запроса - прекрасное решение. Даже в diagflow этого не видел. - person nealrs; 12.02.2018