Python - 如何使用 ask_sdk_core.handler_input 在 Alexa Skill 中获取 UserID
Python - How to obtain UserID in Alexa Skill using ask_sdk_core.handler_input
我正在研究一种玩具 Alexa 技能,我正在学习猜数字游戏 (code here) 中的示例。在示例中,他们
from ask_sdk_core.handler_input import HandlerInput
@sb.request_handler(can_handle_func=is_request_type("LaunchRequest"))
def launch_request_handler(handler_input):
"""Handler for Skill Launch.
Get the persistence attributes, to figure out the game state.
"""
# type: (HandlerInput) -> Response
attr = handler_input.attributes_manager.persistent_attributes
这个 attr
对象允许我在整个会话中保留信息。在 Alexa Developer 控制台中,我在 'session':'attributes' 下的 JSON 中看到此数据 - 我还看到 'session':'user':'userId'
如何使用此函数中的 handler_input 访问 userId
数据?
所以当你将handler_input中的数据转换为'dict'
时,可以将其提取出来
step1 = handler_input.__dict__
step2 = step1['request_envelope'].__dict__
step3 = step2['session'].__dict__
step4 = step3['user'].__dict__
userid = step4['user_id']
也许可以用更少的步骤完成,但这就是它对我有用的原因。
你实际上可以从两个地方得到它:
user_id = handler_input.request_envelope.session.user.user_id
或
user_id = handler_input.request_envelope.context.system.user.user_id
不需要将对象转换为字典
如果您正在寻找 Alexa 设备 ID 以获取。
device_id = handler_input.request_envelope.context.system.device.device_id
这些答案都有效,但我更喜欢使用以下辅助函数:
from ask_sdk_core.utils import get_user_id
user_id = get_user_id(handler_input)
我正在研究一种玩具 Alexa 技能,我正在学习猜数字游戏 (code here) 中的示例。在示例中,他们
from ask_sdk_core.handler_input import HandlerInput
@sb.request_handler(can_handle_func=is_request_type("LaunchRequest"))
def launch_request_handler(handler_input):
"""Handler for Skill Launch.
Get the persistence attributes, to figure out the game state.
"""
# type: (HandlerInput) -> Response
attr = handler_input.attributes_manager.persistent_attributes
这个 attr
对象允许我在整个会话中保留信息。在 Alexa Developer 控制台中,我在 'session':'attributes' 下的 JSON 中看到此数据 - 我还看到 'session':'user':'userId'
如何使用此函数中的 handler_input 访问 userId
数据?
所以当你将handler_input中的数据转换为'dict'
时,可以将其提取出来step1 = handler_input.__dict__
step2 = step1['request_envelope'].__dict__
step3 = step2['session'].__dict__
step4 = step3['user'].__dict__
userid = step4['user_id']
也许可以用更少的步骤完成,但这就是它对我有用的原因。
你实际上可以从两个地方得到它:
user_id = handler_input.request_envelope.session.user.user_id
或
user_id = handler_input.request_envelope.context.system.user.user_id
不需要将对象转换为字典
如果您正在寻找 Alexa 设备 ID 以获取。
device_id = handler_input.request_envelope.context.system.device.device_id
这些答案都有效,但我更喜欢使用以下辅助函数:
from ask_sdk_core.utils import get_user_id
user_id = get_user_id(handler_input)