AWS IoT 엔터프라이즈 버튼으로 Slack에 근무하기
12434 단어 iot-1-click람다awsIoT슬랙AWS
소개
이쪽의 투고 내용을 해보고 싶었기 때문에 도전했습니다.
회사가 쉬는 버튼을 만들어 보았다 [Amazon Dash Button]
htps : // 이 m / ぢ s 곱 / ms / d4에 1fb2d c2fd4c92d8
AWS IoT 엔터프라이즈 버튼을 사용하면 클릭 정보를 얻을 수 있습니다.
클릭의 종류에 따라 Slack에의 투고 내용을 바꾸고 싶습니다.
클릭 이벤트
버튼을 클릭하면 다음과 같은 이벤트가 발행되고 등록된 Lambda 함수가 실행됩니다.
event.json
{
"deviceInfo": {
"deviceId": "G030PMXXXXXXXXXX",
"type": "button",
"remainingLife": 99.3,
"attributes": {
"projectRegion": "ap-northeast-1",
"projectName": "sample-project",
"placementName": "Sample-Placement",
"deviceTemplateName": "SampleRequest"
}
},
"deviceEvent": {
"buttonClicked": {
"clickType": "SINGLE",
"reportedTime": "2018-05-17T16:48:33.804Z"
}
},
"placementInfo": {
"projectName": "Sample-Project",
"placementName": "Sample-Placement",
"attributes": {
"key": "value"
},
"devices": {
"Sample-Request": "G030PMXXXXXXXXXX"
}
}
}
clickType은
1 click 으로 SINGLE
2 click 에서 DOUBLE
길게 누르면 LONG으로 바뀝니다.
Lambda 측에서이 값을 참조하면 버튼을 누르는 방법에 따라 처리를 변경할 수 있습니다.
결과 이미지
1 Click에서 오전 반휴
2 Click에서 오후 반휴
길게 누르면 전휴입니다.
1개의 버튼으로 예상대로 3패턴 대응할 수 있었습니다.
빛나는 앱(APP)의 3문자. . . Webhook이므로 동연입니다만. .
Lambda 함수
병아리 코드이지만 용서하십시오
환경 변수에서 WEBHOOK_URL 및 USER_NAME을 설정합니다.
lambda_function.py
import json
import os
import logging
from urllib.request import Request, urlopen
from urllib.error import URLError, HTTPError
logger = logging.getLogger()
logger.setLevel(logging.INFO)
def lambda_handler(event, context):
webhook_url = os.environ['WEBHOOK_URL']
user_name = os.environ['USER_NAME']
click_type = event['deviceEvent']['buttonClicked']['clickType']
if click_type == "SINGLE":
oyasumi_type = "午前半休"
elif click_type == "DOUBLE":
oyasumi_type = "午後半休"
elif click_type == "LONG":
oyasumi_type = "全休"
slack_message = {
'username': user_name,
'icon_emoji': ':face_with_thermometer:',
'text': '本日' + event['placementInfo']['attributes']['reason'] + 'のため、' + oyasumi_type + 'とさせてください。'
}
req = Request(webhook_url, json.dumps(slack_message).encode('utf-8'))
try:
response = urlopen(req)
response.read()
logger.info("Message posted.")
except HTTPError as e:
logger.error("Request failed: %d %s", e.code, e.reason)
except URLError as e:
logger.error("Server connection failed: %s", e.reason)
event['deviceEvent']['buttonClicked']['clickType'] 에서 클릭 유형
event['placementInfo']['attributes']['reason']에서 게재위치 속성에 설정한 값을 가져옵니다.
게재위치 속성은 AWS IoT 1-Click에서 휴식을 취하는 이유를 설정합니다.
이유를 늘리려면 버튼을 추가로 구입하지 않으면. .
템플릿 및 게재위치 설정
버튼의 등록 등, 사전 준비에 대해서는 이쪽도 참조해 주시면이라고 생각합니다.
AWS IoT 1-Click 및 IoT 엔터프라이즈 버튼 설정 및 동작 확인
htps : // 이 m / 하야오 _k / ms / d36d4b2579d0 21 아 9
새 AWS IoT 1-Click 프로젝트를 생성합니다.
장치 템플릿의 작업에는 위의 Lambda 함수를 지정합니다.
게재 위치 속성에 reason을 설정하여 프로젝트를 만듭니다.
새 게재위치 만들기에서 기기를 선택하고 게재위치를 만들면 설정이 완료됩니다.
장치 관리 화면에서 이벤트를 탐색하면 실제 클릭 유형을 확인할 수도 있습니다.
이상입니다.
도움이되면 다행입니다.
Reference
이 문제에 관하여(AWS IoT 엔터프라이즈 버튼으로 Slack에 근무하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/hayao_k/items/0a8b3197ae7b2595ea10텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)