視訊裝置通過rtsp接入amazon alexa echo show
阿新 • • 發佈:2019-01-05
文章目錄
官方資料
視訊裝置接入amazon的智慧家居系統, 有兩種方式
- 通過rtsp接入, 方式簡單, 但不能對講
https://developer.amazon.com/zh/docs/smarthome/connect-a-camera-to-alexa.html - 通過webrtc接入, 支援雙向對講, 但是太複雜
https://developer.amazon.com/zh/docs/device-apis/alexa-rtcsessioncontroller.html
基本框架圖
總體框架
廠商雲的內部框架
建立lambda服務
地區要選擇美國東部 (弗吉尼亞北部)
, 其它區不行. (至少, 我接入的時候, 是這麼要求的)
lambda服務, 其實就是把程式碼託管給亞馬遜執行.
https://console.aws.amazon.com/lambda/home?region=us-east-1#/home
- 選擇一個藍圖, 搜尋alexa, 隨便選一個, 下一步
- 輸入函式名稱
- 角色 選擇"從一個或多個模板建立角色"
- 策略模板 選擇"簡單微服務許可權"
- 先不管js內容, 直接建立, 然後進入配置介面
- 觸發器 選擇"Alexa Smart Home"
還沒有配置完, 因為缺少應用程式 ID
, 需要再去建立Alexa Skill
記錄lambda的ID, 類似這樣格式的arn:aws:lambda:us-east-1:3000000000:function:myTestFunc
建立SKILL
https://developer.amazon.com/alexa/console/ask/create-new-skill
- 建立, skill model選擇
Smart Home
- payload version預設選擇
v3
- lambda引數中的Default endpoint, 輸入建立lambda服務步驟中生成的lambda ID
此時還沒有配置完成, 因為lambda也沒有配置完成.
此時可以看到skill ID, 類似這樣子的,amzn1.ask.skill.6b3461e9-9bd8-4d55-b14e-000000000000
繼續配置lambda服務
觸發器的應用程式 ID
, 填入剛才生成的SKILL ID, 選擇新增, 然後儲存
繼續配置skill
這時可以儲存了, 先儲存一下, 點選Setup Account Linking
, 配置賬號關聯
剩下的都是OAuth2.0的東西, 讀者自己去配置吧.
再次配置lambda服務
上面建立的lambda, js還沒有編輯. 使用python或java的, 自己去琢磨吧.
開發者需要先了解一下nodejs, http://nodejs.cn/api/
編輯index.js
將https://github.com/wzjwhut/alexa-camara-skill中的alexa_camera_skill.js的內容拷貝進去
儲存
測試lambda
配置測試事件, 模擬請求.
https://github.com/wzjwhut/alexa-camara-skill 的test.js 有這些模擬請求.
找到配置測試事件
選單,
建立新測試事件
, 名稱Discovery
{
"directive": {
"header": {
"namespace": "Alexa.Discovery",
"name": "Discover",
"payloadVersion": "3",
"messageId": "38A28869-DD5E-48CE-BBE5-00000000"
},
"payload": {
"scope": {
"type": "BearerToken",
"token": "123456"
}
}
}
}
建立新測試事件
, 名稱uri
{
"directive": {
"header": {
"namespace": "Alexa.CameraStreamController",
"name": "InitializeCameraStreams",
"payloadVersion": "3",
"messageId": "38A28869-DD5E-48CE-BBE5-00000001",
"correlationToken": "123456"
},
"endpoint": {
"endpointId": "98029b8000ef4f7524d80450bf4e9a15",
"scope": {
"type": "BearerToken",
"token": "123456"
},
"cookie": {}
},
"payload": {
"cameraStreams": [
{
"protocol": "RTSP",
"resolution": {
"width": 1920,
"height": 1080
},
"authorizationType": "BASIC",
"videoCodec": "H264",
"audioCodec": "AAC"
},
{
"protocol": "RTSP",
"resolution": {
"width": 1280,
"height": 720
},
"authorizationType": "NONE",
"videoCodec": "MPEG2",
"audioCodec": "G711"
}
]
}
}
}
分別執行這兩個測試事件, 檢視執行結果