如何将与Alexa的对话存储到数据库中

时间:2018-10-10 05:10:29

标签: aws-lambda alexa alexa-skills-kit

我正在为学校开发一项Alexa技能,我的客户希望将Alexa与父母的对话存储起来,并希望将其显示在学生的仪表板上。如何将我所有的对话都存储到数据库中?

2 个答案:

答案 0 :(得分:1)

可以获得并存储/保存 alexa所说的,但是您不能得到用户所说的 > Alexa技能。但是您可以获得的是用户的意图(即所谓的意图)。 解决您的问题的方法是使用一些数据库并创建一个表,并在每种意图下进行类似的操作

const HelpIntentHandler = {
  canHandle(handlerInput) {
    return handlerInput.requestEnvelope.request.type === 'IntentRequest'
      && handlerInput.requestEnvelope.request.intent.name === 'AMAZON.HelpIntent';
  },
  handle(handlerInput) {
  
  
    const speechText = 'You can say hello to me!';
    *//write code to add speechText to a table against the intent name/sample utterence with date and time*
    return handlerInput.responseBuilder
      .speak(speechText)
      .reprompt(speechText)
      .withSimpleCard('Hello World', speechText)
      .getResponse();
  },
};

答案 1 :(得分:1)

您将不会获得技能用户的话语或用户所说的话。但是,利用从Alexa请求中获得的信息,您可以有点重新创建对话流。
使用这些信息:

  1. 用户ID
    如果您的技能没有帐户关联,则必须坚持执行此操作以过滤掉特定用户的对话。请注意,当用户禁用并重新启用您的技能时,此feat-a将会更改。
  2. sessionId
    如果要过滤掉用户的特定会话。您还可以依靠userId检查会话何时结束,但这很干净。
  3. 意图
    您不会得到用户的讲话,但是可以从SessionEndedRequest中识别用户的意图。这将帮助您猜测用户可能说了什么。
  4. 广告位
    如果将intents与映射的slots结合使用,您将获得更多信息。由于广告位值始终会传递给您,因此您可以坚持执行此操作,并知道用户在其对话中说的确切值。
  5. 时间戳
    始终保存时间戳,这将帮助您知道确切的请求何时发出。
  6. Alexa响应
    始终保留您发回的回复。
  7. sessionAttributes
    如果您有一些重要的信息,您认为会有所帮助,请也保存它。

使用这些信息/过滤器(如果您使用intents对其进行排序),您将了解到特定/所有用户与Alexa的对话。