Как протестировать опубликованный мной бот LEX на REST-КЛИЕНТЕ

Я создал своего lex-бота и опубликовал его. Я сейчас пытаюсь проверить это на отдыхающем клиенте.

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

введите описание изображения здесь

Я использую это тело запроса из посттекста по этой ссылке http://docs.aws.amazon.com/lex/latest/dg/API_runtime_PostText.html

Когда я использую это из клиента отдыха, я получаю отсутствующий токен аутентификации.

введите описание изображения здесь

Используемый URL-адрес конечной точки: https://runtime.lex.us-east-1.amazonaws.com

Должен ли я добавить что-то в заголовок авторизации, например AWS Signature или что-то еще, чтобы эта работа работала.


person lost Coder    schedule 04.07.2017    source источник
comment
Вы проверяли аутентификацию и контроль доступа для Amazon? Лекс?   -  person Michael - sqlbot    schedule 04.07.2017


Ответы (1)


Вам необходимо включить подпись AWS на вкладке «Авторизация», содержащую сведения о пользователе IAM, который имеет доступ для запуска вашего бота Lex.

Шаги: 1. В AWS перейдите в IAM -> Пользователи -> Добавить пользователя.

введите описание изображения здесь

  1. Дайте ему имя пользователя, например «myBotUser», и выберите тип доступа «Программный доступ». Нажмите Далее: Разрешения.

введите описание изображения здесь

  1. Нажмите «Создать группу», чтобы создать группу для предоставления пользователю прав.

введите описание изображения здесь

  1. Дайте ему имя, а затем отфильтруйте политики для Lex - и выберите «AmazonLexReadOnly» и «AmazonLexRunBotsOnly».

введите описание изображения здесь

Нажмите "Создать группу".

  1. Затем нажмите «Далее: Обзор».
  2. Затем нажмите «Создать пользователя» - и ваш пользователь IAM готов. Вы увидите идентификатор ключа доступа и секретный ключ доступа.

  3. В Postman в разделе Авторизация выберите Подпись AWS и введите идентификатор ключа доступа и секретный ключ доступа, а также регион AWS «us-east-1» и имя службы «lex»:

введите описание изображения здесь

  1. Убедитесь, что ваше тело соответствует требованиям (здесь я просто отправляю текст):

введите описание изображения здесь

Нажмите «Отправить», и вы должны получить такой ответ:

{
    "dialogState": "Fulfilled",
    "intentName": "yourIntentName",
    "message": "A response for that intent",
    "responseCard": null,
    "sessionAttributes": {},
    "slotToElicit": null,
    "slots": {}
}

Обновить

Также обратите внимание - URL-адрес POST будет в формате:

https://runtime.lex.us-east-1.amazonaws.com/bot/MyBotName/alias/myMyAlias/user/aUniqueUserID/text and it should be a POST

Также убедитесь, что заголовок Content-Type равен application / json, как и тело.

person AndyOS    schedule 10.07.2017
comment
Все это сделал. Я получаю эту ошибку Ошибка при отправке запроса: не удалось выполнить «setRequestHeader» на «XMLHttpRequest»: «runtime.lex.us-east-1.amazonaws.com» не является допустимым значением поля заголовка http. Это потому, что URL-адрес конечной точки неверен? Я так понимаю, какой должен быть правильный URL-адрес для вызова опубликованного lex-бота с именем бота и псевдонимом. - person lost Coder; 12.07.2017
comment
я использую то же самое .. я добавил снимок экрана в вопрос - person lost Coder; 12.07.2017
comment
{inputText: я хочу поднять заявку, sessionAttributes: {string: string}} - person lost Coder; 12.07.2017
comment
запрос не идет, я думаю - person lost Coder; 12.07.2017
comment
Хм. Можете ли вы отправить почтальон json запроса (просто удалите ключи, если они в нем) - person AndyOS; 12.07.2017
comment
Позвольте нам продолжить это обсуждение в чате. - person lost Coder; 12.07.2017
comment
POST / bot / test / alias / lexTestChat / user / unique123r / text HTTP / 1.1 Content-Type: application / json Host: runtime.lex.us-east-1.amazonaws.com X-Amz-Date: 20170712T123140Z Авторизация: AWS4-HMAC-SHA256 Credential = xxxxxxxxxx / 20170712 / us-east-1 / lex / aws4_request, SignedHeaders = content-length; content-type; host; x-amz-date, Signature = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Cacheman-Control: no-cache Post -Token: 46f48b78-ab05-1f1b-5f37-bceb4e02dc9e {inputText: я хочу поднять билет, sessionAttributes: {string: string}} - person lost Coder; 12.07.2017
comment
есть ли что-то конкретное от пользователя, которое мы должны указать, или это может быть какое-то случайное значение? - person lost Coder; 12.07.2017
comment
Посмотреть обсуждение в чате - person AndyOS; 12.07.2017
comment
Проверьте чат, я разместил json для почтальона, который должен работать - person AndyOS; 14.07.2017