Alexa对接-Python版本

本文详细介绍了如何开发Alexa技能,包括创建Intent、设置Slots、搭建交互模型、处理用户输入和响应,以及如何创建自定义SlotType以实现更丰富的交互。通过实例展示了Python代码实现,指导读者一步步构建自己的Alexa技能。
摘要由CSDN通过智能技术生成

Alexa对接

Alexa原理

  1. 客户打开AlexaAPP并登录账号
  2. 客户搜索我们得技能, 然后登录认证
    1. 通过登录接口, 我们返回一个 code给到Aelxa
    2. Alexa通过code, 请求我们的Oauth授权接口
    3. Oauth授权接口, 校验code, 并生成refresh_token 和 access_token给到Alexa
    4. 后续调用接口, 本地接口使用access_token+code一起调用
  3. Alexa获取到用户得设备列表
  4. 用户通过APP/通过语音设备输入命令
  5. Alexa识别并发送信息到对应技能上

概念解析

Intents

Intent代表用户的语音输入的请求, 相当于Request

如何创建Intent

各种不同的Intent

Slots

Slot相当于请求参数

官方提供Slots Types

如何创建Slot

自定义Slot Type

创建最简单流程

  1. 进入Amazon开发者中心, 选择Alexa
  2. 右上角, 三个点, 进入开发者后台(Alexa Developer Console)
  3. 点击 Create Skill
  4. 输入技能名称
  5. 翻到最下面, 选择Python
  6. 翻到最上, 广告点击 Create skill
  7. 这里是选择代码模板, 使用第一个(后面是各种特殊场景, 会有一些实现好的逻辑。 第一个是基础版, 里面包含了技能可以实现的最基本内容)
  8. 进入 Invocations -> Skill Invocation Name, 设置名称, 这个是呼叫 Alexa打开技能时的名字
  9. 进入 Interation Model -> Intents
  10. 点击 Add Intent
  11. 填入你的Intent名称, 最好以驼峰式,Intent为结尾, 如: MyTestIntent
  12. 点击Create custom intent
  13. 设置你的Sample Utterances, 这里的意思你的Intent触发条件
    当Alexa识别用户语音, 和你的触发条件匹配时, Alexa会处理对应的逻辑
  14. 点击Build Model
  15. Build完成后, 点击Code
  16. 创建你的Handler, 可以参照HelloWorldIntentHandler
class MyTestIntentHandler(AbstractRequestHandler):
    """Handler for Hello World Intent."""
    def can_handle(self, handler_input):
        # type: (HandlerInput) -> bool
        return ask_utils.is_intent_name("MyTestIntent")(handler_input)

    def handle(self, handler_input):
        # type: (HandlerInput) -> Response
        speak_output = "Hi, my Friend!"

        return (
            handler_input.response_builder
                .speak(speak_output)
                .ask("Who are you?")
                .response
        )

  1. 在代码最下面, 注册一下你的Handler
sb.add_request_handler(MyTestIntentHandler())
  1. 点击 Deploy, 进行代码部署
  2. 点击 Test, 进行测试
  3. 点击 Off, 选择 Development
  4. 输入你的 inmvocation Name
  5. 输入你的触发条件, 进行测试
  6. 使用场景:
    1. Alexa, 告诉我今天热搜是什么
    2. Alexa, 告诉我今天的计划有什么
    3. Alexa, 告诉我我有多少钱

创建可以进行交互的流程

该流程跟最简流程基本一致, 但是在代码设置上, 可以以关键字的方式, 获取明确的信息

  1. 进入 Build -> Custom -> Assets -> Slot Types
  2. 点击Add Slot Type
  3. 输入你的Slot Type 名称
  4. 点击 Next
  5. 添加你的Slot Type的值列表
  6. 点击Build Model
  7. 按照最简流程创建你的Intent
  8. 输入 Sample Utterances: open the door for {myFamily}
  9. 根据提示, 添加你的 Slot
  10. 在下方找到你的Slot, 并为他选择你刚刚创建的Slot Type
  11. 点击 Build Model
  12. 新增如下代码:

class OpenMyDoorIntentHandler(AbstractRequestHandler):
    """Handler for Hello World Intent."""
    def can_handle(self, handler_input):
        # type: (HandlerInput) -> bool
        return ask_utils.is_intent_name("OpenMyDoorIntent")(handler_input)

    def handle(self, handler_input):
        # type: (HandlerInput) -> Response
        slots = handler_input.request_envelope.request.intent.slots
        play_slot = slots.get("myFamily")  # 这里是根据你的 Slot名称, 获取到对应的值
        speak_output = 'What are you?'
        if play_slot:
            if play_slot.value.lower() in ['tom', 'luncy', 'tony']:
                speak_output = "Welcome, " + play_slot.value
            else:
                speak_output += play_slot.value
        
        return (
            handler_input.response_builder
                .speak(speak_output)
                .ask("What are you?")
                .response
        )
  1. 注册你的Handler
sb.add_request_handler(OpenMyDoorIntentHandler())
  1. 部署并进行测试

代码Demo

GitHub地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

落笔成名

客官,辛苦则个

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值