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

问题描述 投票:1回答:2

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

aws-lambda alexa alexa-skills-kit
2个回答
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
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.