SORACOM LTE-M Button에서 Cisco Webex Teams로 근무하기

소개



이전 업무로 LTE-M, NB-IoT 안건에 종사하고 있었던 적이 있고, 실제 디바이스를 만지고 싶어지고 SORACOM LTE-M Button powered by AWS를 구입해 보았습니다. 이번은 송년회에서 너무 많이 마신 다음 날이나, 아이가 열을 낸 날, 또 자신의 컨디션이 뛰어난 날 등, 재택 근무나 휴가를 이용하는 경우에 1클릭으로 연락하는 수단을 실장합니다.
Slack이나 LINE에서는 이미 메시지 전송을 구현하고 있는 분이 있습니다만, 제 근무처는 커뮤니케이션 툴로서 Cisco Webex를 사용하고 있기 때문에, Cisco Webex Teams에서의 구현을 소개합니다.

Cisco Webex Teams란 무엇입니까?



Cisco Webex Teams는 화상 회의, 채팅, 자료 공유와 같은 비즈니스 커뮤니케이션 기능을 갖춘 클라우드 서비스입니다. 다른 메시징 서비스와 마찬가지로 RESTful API를 갖추고 있으며 프로그램에서 사용자 검색 및 메시지 전송이 가능합니다. 자세한 내용은 아래 링크에서.

Getting Started with the Webex API

전제


  • Cisco Webex 계정이 있음
  • SORACOM LTE-M Button powered by AWS 1-click 설정됨

  • 구현



    1. Cisco Webex Bot을 만들고 Space에 추가



    이 기사 참조하여 Bot을 만들고 액세스 토큰을 가져옵니다. 그런 다음 Bot를 근무하는 Space에 추가합니다.

    2. 추가한 스페이스의 ID를 조사한다



    API Reference List Rooms에서 Bot이 속한 Space의 ID를 가져옵니다. 이때 Header의 Authorization에는 1에서 취득한 액세스 토큰을 입력합니다.



    Response 섹션의 제목에서 Bot을 추가한 Space를 찾아 해당 Space의 id를 가져옵니다.



    3. Lambda 함수 준비



    이번에는 Python3.6에서 다음 코드를 구현했습니다. Space에 메시지를 보내려면 API Reference Create a Message를 사용하십시오. 망설임으로써 lambda 함수가 실행되는 환경에서 requests 패키지가 구현되지 않았기 때문에 로컬 환경에서 패키지를 준비하고 Upload .zip file을 선택했습니다.
    import os
    import json
    import requests
    import logging
    
    logger = logging.getLogger()
    logger.setLevel(logging.INFO)
    
    def compose_message(clicktype):
        if clicktype == 'SINGLE':
            return u'本日在宅勤務です。'
        elif clicktype == 'DOUBLE':
            return u'本日午前休です。'
        elif clicktype == 'LONG':
            return u'本日お休みです。'
        else:
            return u''
    
    def send_message(msg):
        url = "https://api.ciscospark.com/v1/messages"
        headers = {"Accept": "application/json", "Content-Type": "application/json; charset=utf-8", "Authorization": "Bearer "+ os.environ['ACCESS_TOKEN']}
        payload = {"roomId": os.environ['ROOM_ID'], "text": msg}
        r = requests.post(url, headers=headers, data=json.dumps(payload))
        logger.info('status code: ' + str(r.status_code) + ', body: ' + r.text)
    
    def lambda_handler(event, context):
        logger.info('Received event: ' + json.dumps(event))
        message = compose_message(event['deviceEvent']['buttonClicked']['clickType'])
        send_message(message)
        return
    

    ACCESS_TOKEN과 ROOM_ID는 1에서 얻은 액세스 토큰과 2에서 얻은 스페이스의 ID를 lambda의 Environment variables 섹션에서 제공합니다.


    4. AWS IoT 1-Click에서 Lambda 함수와 device template 연결



    Device templates 메뉴의 Lambda function에 3으로 작성한 lambda 함수를 입력, 이것으로 완성입니다.

    감상



    Cisco Webex API는 이전에 언급했기 때문에 SORACOM LTE-M Button powered by AWS가 도착한 그날 밤, 장치 개봉 후 30분 정도로 1-click 설정이 완료되어 총 2시간 정도로 구현할 수 있습니다. 네. 1-클릭으로 인프라는 준비 완료, AWS 서비스와의 연계가 생각한 것보다 단순한 것이 마음에 들었습니다. LTE-M이 연결되는 장소라면 어디서나 안전하게 서비스 제공 가능하므로 다양한 장면에서의 응용을 생각할 수 있을 것 같습니다. 다른 서비스도 생각하고 싶습니다.

    좋은 웹페이지 즐겨찾기