2018年9月7日金曜日

Python スクリプトから IIJmio クーポンスイッチを操作する (2)

前回からの続きです。IIJmio のクーポンスイッチのウェブAPIを利用して高速通信クーポンのON/OFFを行うスクリプトを作成していきます。APIの仕様は下記のページに記載されています。

「IIJmioクーポンスイッチAPI」について
https://www.iijmio.jp/hdd/coupon/mioponapi.jsp

早速 API を見ながら作ってみたのが下記のコードです。hdoServiceCode は SIM に割り当てられているコードで、IIJmio の契約内容の確認の SIM カード情報の欄にあります。SIM はそんなに頻繁に入れ替えるものではないのでハードコーディングしてしまいます。A タイプの SIM を使っている場合は hdu で始まる SIM カード情報が入ってくるようです。その場合は HduServiceCode 側に SIM情報を入れる必要があります。また A タイプを使ってなくても空の HduServiceCode がないと API はエラーを返すようです。couponUse に True または False を入れるとスイッチの ON/OFF が切り替わります。
#coding: utf-8
import urllib.request
import urllib.parse
import json

coupon_url = "https://api.iijmio.jp/mobile/d/v2/coupon/"
token = 'ここにトークン'
devid = 'ここにデベロッパID'

headers = {
    'X-IIJmio-Developer': devid,
    'X-IIJmio-Authorization': token,
    'Content-Type': 'application/json'
}

params = {
    "couponInfo": [
        {
            "hdoInfo": [
                {"hdoServiceCode": "hdoxxxxxxxx","couponUse": False},
            ],
            "hduInfo": []
        }
    ]
}

req = urllib.request.Request(coupon_url)
req.data = json.dumps(params).encode("utf-8")
req.headers = headers
req.method = 'put'
res = urllib.request.urlopen(req)
body = res.read()
print(body)
実行してみると {"returnCode": "OK"} が返ってきました。みおぽんアプリで実際にサービススイッチが切り替わっていることが確認できれば API は成功したと言ってよいと思います。

ここまで出来たら、次はクーポンスイッチを切り替えたことを Slack に通知を出したくなりました。次は Slack の chat.postMessage API を使って General チャンネルにクーポンスイッチを切り替えたことを知らせるメッセージの投稿部分を作りたいと思います。