2017-01-31 4 views
0

Я пытаюсь создать навык, который прослушивает ответ пользователя. По какой-то причине я не всегда могу поймать ответ пользователя.Как поймать ответ пользователя/ответ в приложении Alexa Skill?

  • В чат сессия начинается, когда я говорю: Alexa, open MyApp and start chat
  • И Alexa отвечает New chat session started
  • Затем я проверить на сессии и посмотреть, если его старая одна, и сделать что-то с ним, но это Безразлично» t действительно работает.

Что-то в моих настройках неверно. Я считаю, что код в порядке, так что, возможно, intents неправильно настроены

Код прямолинейный.

exports.handler = (event, context) => 
 
    { 
 
     // if the session is old, 
 
     if (event.session.new === false) { 
 
      // get the user reply 
 
      // this doesn't seem to allways work 
 
      var userReply = event.request.intent.slots.Reply.value; 
 
     } 
 

 
     try { 
 
      switch (event.request.type) { 
 
       case "LaunchRequest": 
 
        // do nothing here 
 
        break; 
 
       case "IntentRequest": 
 
        switch (event.request.intent.name) { 
 
         case "ChatSession": 
 

 
          // the chat session starts, when I say: Alexa, open MyApp and start chat. 
 
          // this works, and the session seems to remain open, because Alexa waits for me to say something else 
 
          alexaReplyes({noCard: true, noNewSession: true, reply: 'New chat session started'}); 
 

 
          break; 
 
         default: 
 
          throw "Invalid intent" 
 
        } 
 

 
        break; 
 
       case "SessionEndedRequest": 
 
        // do nothing here 
 
        break; 
 
       default: 
 
        context.fail(`INVALID REQUEST TYPE`) 
 
      } 
 
     } catch (error) { 
 
      context.fail(`Exception: ${error}`) 
 
     } 
 
    }
{ 
 
    "intents": [ 
 
     { 
 
      "intent": "ChatSession", 
 
      "slots": [ 
 
       { 
 
        "name": "Reply", 
 
        "type": "REPLIES" 
 
       } 
 
      ] 
 
     } 
 
    ] 
 
} 
 

 

 

 
ChatSession start chat

+0

Что вы ожидаете от пользователя после запуска навыка? И вы ищете решение для просмотра запросов и ответов, идущих туда и обратно? –

+0

@JohnKelvie почти все. Я отправлю ответ пользователю на некоторые серверные службы и вернет ответ, а затем дождитесь ввода другого пользователя и, таким образом, один, как разговор. Моя проблема в том, что я не получаю первоначальный ответ пользователя. – Patrioticcow

ответ

0

Я выясняю это.

  1. добавить произнесение ChatSession {Reply}
  2. добавить кучу слов и фраз в слот, использовать некоторые интернет-генератор.
0

Да, цель установки не является правильным. Пара пунктов:

1) Вы должны включить слот в высказывании, такие как:
ChatSession start chat {Reply}

2) Это имело бы смысл, чтобы добавить больше высказываний о том, как можно было бы ожидать пользователю говорить, такие как:
ChatSession Yes {Reply}

Надеюсь, что это поможет!

+0

Я собирался использовать тип 'LITERAL'. Но в документации говорится, что я могу использовать настраиваемый тип, в моем случае 'REPLIES', и что любые высказывания, не найденные в' REPLIES', будут переданы, как и тип 'LITERAL'. Я хочу поймать каждое слово в ответе. Поэтому я думаю, что 'ChatSession {Reply}' должен это сделать. Что ты думаешь? – Patrioticcow

+0

Не зная, что делает ваше умение, я не могу сказать точно. Но если ответ предназначен для свободной формы (пользователь может сказать что-либо), то LITERAL - это путь. Если это означает, что это ограниченный набор входов (например, перечисление, такое как красный, зеленый, синий или какой-либо другой список значений), пользовательский тип слота - это путь. –

Смежные вопросы