当前位置: 首页 > 知识库问答 >
问题:

Alexa Skill-如何进行语音pin认证?

郑茂勋
2023-03-14

我是Alexa技能发展新手。我正在尝试创建一个语音pin认证。

这就是我想要实现的目标:

用户:"打开灯"

阿列克谢:“你的安全别针是什么?”

User:"6456"(错误的pin)

阿列克谢:“认证失败!请再试一次。"

用户:"1234"(正确引脚)

Alexa:“开灯!”

如果用户第一次告诉正确的pin没有问题,但如果用户第一次告诉错误的pin Alexa只是说了reprompt消息,没有接受新的pin值,我将如何获得新的pin值,并在相同的意图处理程序中再次检查该pin?

这是我的代码:

const RemoteControlIntentHandler = {
canHandle(handlerInput) {
    return Alexa.getRequestType(handlerInput.requestEnvelope) === 'IntentRequest'
        && Alexa.getIntentName(handlerInput.requestEnvelope) === 'RemoteControlIntent';
},
handle(handlerInput) {
    var speakOutput = '';
    var userPin = handlerInput.requestEnvelope.request.intent.slots.securityPin.value;
    
    if (userPin !== userSecurityPin) {
        speakOutput = 'Authentication Failed! Please retry!';
        
        return handlerInput.responseBuilder
            .speak(speakOutput)
            .reprompt(speakOutput)
            .getResponse();
            
    } else {
        speakOutput = 'Turning ON the light!';
        
        return handlerInput.responseBuilder
            .speak(speakOutput)
            .reprompt('add a reprompt if you want to keep the session open for the user to respond')
            .getResponse();
        
    }
}

共有1个答案

史谦
2023-03-14

问题是你的远程控制意图没有映射与引脚话语.所以,当你尝试与实际引脚第二次alexa不知道它应该与哪个意图映射。

您需要一种方法来再次执行远程控制器与实际的引脚。

这将需要您的意图模式来正确地解决问题,但这里有一个解决方案会起作用

const RemoteControlIntentHandler = {
  canHandle(handlerInput) {
      return Alexa.getRequestType(handlerInput.requestEnvelope) === 'IntentRequest'
      && Alexa.getIntentName(handlerInput.requestEnvelope) === 'RemoteControlIntent';
  },
  handle(handlerInput) {
     var speakOutput = '';
     var userPin =handlerInput.requestEnvelope.request.intent.slots.securityPin.value;
     const request = handlerInput.requestEnvelope.request;
     if (userPin !== userSecurityPin) {
       speakOutput = 'Authentication Failed! Please retry!';
       return handlerInput.responseBuilder
        .speak(speakOutput)
        .addElicitSlotDirective('securityPin') // this line will ask for the pin again against the same intent
        .getResponse();        
     } else {
       speakOutput = 'Turning ON the light!';
       return handlerInput.responseBuilder
             .speak(speakOutput)
             .reprompt('add a reprompt if you want to keep the session open for the 
              user to respond')
             .withShouldEndSession(true)
             .getResponse();
    }
  }
};

记住为RemoteControlIntent启用自动委派,并使用什么是您的安全pin?在securityPin提示符中。

 类似资料:
  • 我正在尝试使用适用于Xamarin Android的Microsoft认知语音从麦克风构建连续语音识别。我认为没有Xamarin的库,所以我稍微修改了“Xamarin。认知。BingSpeech”库(endpoint等)以使其正常工作。我有一些问题 我想通过以下教程连接到microsoft web套接字https://docs.microsoft.com/en-us/azure/cognitive

  • 我正在努力寻找使用谷歌云语音API进行实时连续语音识别的例子。我的要求是使用麦克风,检测语音,并在用户说话时进行转录。 我知道他们的RESTAPI没有这种支持,所以我研究了grpc示例,包括他们提供的示例。但它们似乎都是用户可以上传音频并检测语音的例子。 我在Java,谷歌grpc也支持java。有人遇到一个很好的例子,展示了如何通过麦克风持续进行这种识别吗?

  • 我正在尝试从扬声器转录音频 我正在将声音从扬声器传送到节点。js文件(https://askubuntu.com/a/850174) 这是我的抄本。js公司 但谷歌云语音到文本在1分钟内对流媒体识别有一个限制。所以我有一个错误“超过了允许的最大流持续时间65秒” 如何将流拆分为以静默为拆分器的块,或拆分为持续30秒的块?

  • 我正在开发amazon alexa skill,我想在其中添加语音识别功能,因此当任何用户与alexa通话时,我的技能应该能够识别语音,并从我们的数据库中获取他的信息,或者将他的数据保存为我们数据库中的新帐户,我不知道如何进行语音识别,你知道如何进行语音识别吗?

  • [信息]:#安装纯Python模块 [信息]:需求(SpeechRecognition,pyaudio)没有菜谱,试图用pip安装它们 [信息]:如果失败,这可能意味着模块已经编译了组件,需要一个配方。 工作:pid 3095的线程后台线程异常:n/python2.7-u-c“导入设置...(和509更多) 回溯(最近调用的最后一次): 文件“/usr/lib/python2.7/threadin

  • 之前我们学习了利用 pin 设备控制 led 的亮灭,这一节我们学习利用 pin 设备进行按键的控制。 基础知识 按键控制的实现有很多的方式,在裸机编程的时候最常用的就是延时消抖以及抬手检测了,可以很简单的就实现按键的输入。其实还有更加简单、灵活的按键处理方式,就是每隔一定的时间间隔扫描一次按键的状态,如果连续多次按键的状态都是按下的状态,我们就认为按键是按下的。 在裸机编程的时候,按键处理一般是