カテゴリー
IchigoJam

IchigoJamからLINEへメッセージをカンタンに送信する

(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


前のページへ戻る

 - 
Chinese (Simplified)
 - 
zh-CN
Chinese (Traditional)
 - 
zh-TW
English
 - 
en
French
 - 
fr
German
 - 
de
Italian
 - 
it
Japanese
 - 
ja
Korean
 - 
ko
Russian
 - 
ru
Spanish
 - 
es