将额外的自定义设备状态传递给Alexa自定义技能

将额外的自定义设备状态传递给Alexa自定义技能

问题描述:

我有多个设备将音频流式传输到我的服务器。将额外的自定义设备状态传递给Alexa自定义技能

我的服务器发送音频到我的自定义技能

我如何通过额外的状态在房间里的设备是到适配器e.g“房间名”?

我多请求包括:

{ 
    'context': [ 
     { 
      'header': { 
       'namespace': 'AudioPlayer', 
       'name': 'PlaybackState' 
      }, 
      'payload': { 
       'token': '', 
       'offsetInMilliseconds': 0, 
       'playerActivity': 'IDLE' 
      } 
     }, 
     { 
      'header': { 
       'namespace': 'Speaker', 
       'name': 'VolumeState' 
      }, 
      'payload': { 
       'volume': 100, 
       'muted': False, 
      } 
     }, 
     { 
      'header': { 
       'namespace': 'SpeechSynthesizer', 
       'name': 'SpeechState' 
      }, 
      'payload': { 
       'token': '', 
       'offsetInMilliseconds': 0, 
       'playerActivity': 'FINISHED' 
      } 
     } 
    ], 
    'event': { 
     'header': { 
      'namespace': 'SpeechRecognizer', 
      'name': 'Recognize', 
      'messageId': 'my-messageId', 
      'dialogRequestId': 'my-dialogRequestId', 
     }, 
     'payload': { 
      'profile': 'CLOSE_TALK', 
      'format': 'AUDIO_L16_RATE_16000_CHANNELS_1' 
     } 
    } 
} 

我试图通过任意的扩展头的情况下例如,

[ 
    'header': { 
     'namespace': 'MyCustomSkill', 
     'name': 'RoomState' 
    }, 
    'payload': { 
     'name': 'kitchen', 
     'temperature': '40' 
    } 
] 

但适配器没有获得这些额外的头。请求如下所示:

{ 
    "request": { 
     "locale": "en-GB", 
     "type": "IntentRequest", 
     "timestamp": "2017-10-05T22:33:35Z", 
     "requestId": "amzn1.echo-api.request.a415ac1b-7b42-4520-830d-a48912956a45", 
     "intent": { 
     "slots": { 
      "ROOM": { 
       "value": "kitchen", 
       "resolutions": { 
        "resolutionsPerAuthority": [ 
        { 
         "authority": "amzn1.er-authority.echo-sdk.amzn1.ask.skill.c9fd57b8-b243-42ed-a6a9-5745fccb6746.ROOM", 
         "values": [ 
          { 
           "value": { 
           "id": "09228dac155633b13780552bc01dc2e0", 
           "name": "kitchen" 
           } 
          } 
         ], 
         "status": { 
          "code": "ER_SUCCESS_MATCH" 
         } 
        } 
        ] 
       }, 
       "name": "ROOM", 
       "confirmationStatus": "NONE" 
      } 
     }, 
     "name": "ChatIntent", 
     "confirmationStatus": "NONE" 
     } 
    }, 
    "context": { 
     "AudioPlayer": { 
     "playerActivity": "IDLE" 
     }, 
     "System": { 
     "user": { 
      "userId": "my-user-id" 
     }, 
     "apiEndpoint": "https://api.eu.amazonalexa.com", 
     "device": { 
      "deviceId": "my-device-id", 
      "supportedInterfaces": { 
       "AudioPlayer": {} 
      } 
     }, 
     "application": { 
      "applicationId": "my-application-id" 
     } 
     } 
    }, 
    "version": "1.0", 
    "session": { 
     "user": { 
     "userId": "my-user-id" 
     }, 
     "sessionId": "amzn1.echo-api.session.8c3e0d80-69e3-49ad-a981-d1073e0100b2", 
     "new": true, 
     "application": { 
     "applicationId": my-application-id" 
     } 
    } 
} 

这是可以通过上下文来实现吗?

如果你想有上下文

https://github.com/alexa/skill-sample-nodejs-audio-player/blob/mainline/multiple-streams/js/audioEventHandlers.js#L8

,或者你可以简单地使用

this.attributes来存储您所需的信息,您可以创建状态处理程序。