目次
(Usage) API情報
以下のURLにアクセスすると、バージョン情報、使い方、クエリを表示します。
toLine API情報
https://bokunimo.com/toLine/
{"statusCode": 200, "body": {"status": "ok", "version": "V0.03 20201102", "usage": "https://bokunimo.com/toLine/?token=xxx&message=xxx", "queries": ["user", "token", "message", "format"], "output formats": ["json", "text", "zenkaku"]}}
(Python・余談) 半角カナをUTF-8に変換する
IchigoJamからLINEへメッセージを送信するには半角カナをUTF-8に変換する必要があり、bokunimo.comサーバ上で変換を行っています。
半角カナを全角に変換するには、jaconvのh2zというソフトウェアが便利ですが、受信したコードがUTF-8では無かったので、上手く変換できませんでした。
そこで、以下のように、一度、ordで文字ごとに1バイトを取り出してから、UTF-8のコードに変換することで、jaconv.h2zを利用できるようにしました。
#!/usr/bin/env python3 #coding: utf-8 import jaconv mes = b'\xc2\xba\xc3\x9d\xc3\x86\xc3\x81\xc3\x8a' body = b'' print('対策前', mes.decode(), jaconv.h2z(mes.decode())) for c in mes.decode(): a = ord(c) if a >= 0xA1 and a <= 0xBF: body += b'\xef\xbd' + c.encode()[1:] elif a >= 0xC0 and a <= 0xDF: body += b'\xef\xbe' + c.encode()[1:] elif c.isgraph(): body += c.encode() else: body += '_'.encode() print('対策後', body.decode(), jaconv.h2z(body.decode()))
実行結果: 対策前 oYAAE oYAAE 対策後 コンニチハ コンニチハ
他にも、変換表を使う方法があります。
jaconvはPythonで書かれているので、環境に依存しませんが、新たなモジュールをサーバに追加したくないときは便利でしょう。
#!/usr/bin/env python3 #coding: utf-8 kana = ["。", "「", "」", "、", "・", "ヲ", "ァ", "ィ", "ゥ", "ェ", "ォ", "ャ", "ュ", "ョ", "ッ", "ー", "ア", "イ", "ウ", "エ", "オ", "カ", "キ", "ク", "ケ", "コ", "サ", "シ", "ス", "セ", "ソ", "タ", "チ", "ツ", "テ", "ト", "ナ", "ニ", "ヌ", "ネ", "ノ", "ハ", "ヒ", "フ", "ヘ", "ホ", "マ", "ミ", "ム", "メ", "モ", "ヤ", "ユ", "ヨ", "ラ", "リ", "ル", "レ", "ロ", "ワ", "ン", "゛", "゜"] mes = b'\xc2\xba\xc3\x9d\xc3\x86\xc3\x81\xc3\x8a' body = '' print('対策前', mes.decode()) for c in mes.decode(): a = ord(c) if a >= 0xA1 and a <= 0xDF: body += kana[a - 0xA1] elif c.isgraph(): body += c else: body += '_' print('対策後', body)
(CORS)
Cross-origin resource sharing(CORS)は、ウェブ上のリソースを、(最初のアクセス先とは異なる)他のドメインから要求できる方式です(Wikipediaより)。
IchigoJam webから?”MJ GETでbokunimo.comサーバにアクセスすると、サーバからの応答のHTTPヘッダに、以下のようなAccess-Control-Allow-Originヘッダ情報が付与されます。
Access-Control-Allow-Origin: *
(Exception情報)
サーバ側のソフトウェア開発中(Ver 1.0未満)は、内部エラーのException情報をHTTP応答に返却するなど、セキュリティ対策よりも開発効率を優先する場合があります。
なお、LINEのトークンやメッセージについてはWeb APIからアクセス可能なデータベースに保存していないので、他のアクセス者にトークンを返却/流出してしまう心配はありません。
by bokunimo.net