目次
(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
