AWS IoT 엔터프라이즈 버튼으로 Slack에 근무하기

소개



이쪽의 투고 내용을 해보고 싶었기 때문에 도전했습니다.

회사가 쉬는 버튼을 만들어 보았다 [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을 설정하여 프로젝트를 만듭니다.



새 게재위치 만들기에서 기기를 선택하고 게재위치를 만들면 설정이 완료됩니다.



장치 관리 화면에서 이벤트를 탐색하면 실제 클릭 유형을 확인할 수도 있습니다.



이상입니다.
도움이되면 다행입니다.

좋은 웹페이지 즐겨찾기