gpt4 book ai didi

python - 如何在多轮对话中实现相关帮助?亚马逊 Alexa Python 3.6

转载 作者:行者123 更新时间:2023-11-28 19:04:58 30 4
gpt4 key购买 nike

我正在尝试为我的 Alexa 技能实现 AMAZON.HelpIntent。

这是预期的行为:

用户:Alexa,告诉体积计算器计算一个盒子的体积。

Alexa:盒子的长度是多少?

用户:帮助

Alexa:盒子的长度就是盒子的长度。尝试说长度是两米或长度是两米。

提示用户响应

用户:长度是两米。

Alexa:盒子的宽度是多少?

对话一直持续到 intent 的位置被填满。

要实现此行为,我需要知道用户的 intent 。这行代码允许我这样做。

session.attributes['last_intent'] = 'BoxVolumeIntent'

我可以检查我的 AMAZON.HelpIntent if 'last_intent' == 'BoxVolumeIntent'

if session.attributes.get('last_intent') == 'BoxVolumeIntent':
# Determine which part of the multi-turn dialog I am in and return
# relevant help to the user here. Then pass the value back to the
# correct intent to be processed. This is what I don't know how to
# do.

session.attributes 由 John Wheeler 在 flask-ask 中定义。

可以通过以下行在 Python 中访问它:

from flask_ask import session

今天早些时候,我在一封电子邮件中问约翰,他是否知道如何解决我的问题,他的回答是他已经有一段时间没有研究 flask-ask 了,他不知道什么是 multi-turn对话是。

如何为我的技能正确实现 AMAZON.HelpIntent?

BoxVolumeIntent

@ask.intent("BoxVolumeIntent", convert={'length': int, 'width': int, 'height': int, 'unit': str},
default={'unit': 'meters'})
def calculate_box_volume(length, width, height, unit):
"""
Description:
A function to calculate the volume of a box.
Args:
:param1 (int) length: The length of the box.
:param2 (int) width: The width of the box.
:param3 (int) height: The height of the box.
:param4 (str) unit: The unit of measurement. If unit is undefined its value defaults to 'meters'.
:return: A statement to be spoken by the Alexa device and a card sent to the Amazon Alexa phone app.
"""
# Determine which intent was the last one called.
session.attributes['last_intent'] = 'BoxVolumeIntent'

# Taken from Issue 72. Solves the problem of returning a Dialog.Directive
dialog_state = get_dialog_state()
if dialog_state != "COMPLETED":
return delegate(speech=None)

box_volume = length * width * height
msg = "The volume of the box is {} cubic {}".format(box_volume, unit)
return statement(msg).simple_card("Volume Calculator", msg)

我已经包含了来 self 的 Python 3 后端的 BoxVolumeIntent。请注意,我没有让 Alexa 询问用户长度、宽度和高度的字符串。所有这些都在 Skill Builder BETA 中处理,可以在 Amazon Developer Console 上找到。我无法判断我的用户处于 intent 的哪一步。

因为正如我在下面的评论中提到的,用户可以从任何步骤开始。例如:盒子的宽度是五。这通常是多步骤 intent 的第 2 步而不是第 1 步。

最佳答案

我发现这个问题有点类似于 this one .

你可以吗session.attributes出于任何不同的原因,您会保留自己的值(value)观。

在您的情况下,您可以介绍 session.attributes['current_step'] = <number>并使用它来定义该多步 intent 的当前步骤。

if session.attributes.get('last_intent') == 'BoxVolumeIntent':
if session.attributes.get('current_step') == 1:
# Do stuff for the first step
# Optional: increase the current step value

关于python - 如何在多轮对话中实现相关帮助?亚马逊 Alexa Python 3.6,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48104535/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com