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に追加する
1. Cisco Webex Botを作成し、Spaceに追加する
こちらの記事を参考にBotを作成、アクセストークンを取得します。その後、Botを勤怠連絡するSpaceに追加します。
2. 追加したSpaceのIDを調べる
API ReferenceのList RoomsでBotが所属するSpaceのIDを取得します。この時、HeaderのAuthorizationには1で取得したアクセストークンを入力します。
Responseセクションのtitleから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で取得したSpaceの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-clickでインフラは準備完了、AWSサービスとの連携が思ったよりシンプルなのが気に入りました。LTE-Mがつながる場所であればどこでもセキュアにサービス提供可能ですので、様々なシーンでの応用が考えられそうです。他のサービスも考えてみたいと思います。
Author And Source
この問題について(SORACOM LTE-M ButtonからCisco Webex Teamsへ勤怠連絡する), 我々は、より多くの情報をここで見つけました https://qiita.com/shocnt/items/0e966f11b60adc4a4e7f著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .