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

IchigoJam web(またはIchigoJam+MixJuice)から、メッセージをLINEに送信する方法について説明します。
LINE Notifyとbokunimo.com上の半角カナ変換機能を使うことで、IchigoJamのダイレクト・モード(1行コマンド)でカンタンに直接実行することが出来ます。

コンニチハLINE Notify

IchigoJamからLINEにメッセージを転送します。
(下図は開発中の画面・差し替え予定)

IchigoJam web

IchigoJam webであれば、ハードウェアなしで、BASIC + HTTPを試すことが出来ます。詳しくは、下記のブログ記事をご覧ください。

IchigoJamで送信する方法

以下のIchigoJam BASICコマンドで、LINEへメッセージを送ることが出来ます(MixJuice)。クエリTOKENのxxxには、LINE Notify用のトークン(後述)を、MESにはメッセージを入力してください。

?”MJ GETS //BOKUNIMO.COM/15/TOLINE/?TOKEN=xxx&MES=コンニチハ

LINE Notify 用のトークンの取得方法

この実験にはLINE アカウントと LINE Notify 用のトークン(TOKEN)が必要です。
トークンの取得方法は、以下の通りです。

トークン取得方法:
1. https://notify-bot.line.me/ へアクセス
2. 右上のアカウントメニューから「マイページ」を選択
3. アクセストークンの発行で「トークンを発行する」を選択
4. トークン名「boku」(任意)を入力
5. 送信先のトークルームを選択する(「1:1でLINE Notifyから通知を受け取る」など)
6. [発行する]ボタンでトークンが発行される
7. TOKEN=xxxの「xxx」の部分にトークンを記入


なお、本ブログ記事はFacebook IchigoJam-FANの投稿(IchigoJamでLINEしてみました・中村さん)を参考にしました。元の記事では、IchigoJamで文字変換していたものを、サーバ側で行うようにしたので、1行コマンドで実行できるようになりました。
半角カナから全角の変換には後述のjaconvを使用しました。とはいえ、半角のままでも送れることが分かったので、今後、オプションなどで切り替えれるようにする予定です。


参考文献

本ブログ記事の作成にあたり、下記のドキュメント、ブログを参考にしました。

LINE Notify API Document:
https://notify-bot.line.me/doc/ja/

IchigoJamでLINEを送信する方法(Hana道場【師範】のブログ)
https://hanadojo-sihan.hatenablog.com/entry/2020/10/13/001805

BASICでもっと手軽にIoTプログラミング!IchigoJam webにバーチャルMixJuiceを実装、コロナ対策データ計算サンプルプログラム(福野泰介の一日一創)
https://fukuno.jig.jp/3013

by bokunimo.net


以下はIchigoJamと、直接、関係のない余談です。


(Python・余談) 半角カナをUTF-8に変換する

IchigoJamからLINEへメッセージを送信するには半角カナをUTF-8に変換する必要があり、bokunimo.comサーバ上で変換を行っています。
カナを全角に変換するには、jaconvというモジュールが便利ですが、ボクの使い方が良くないのか、あるいはサーバ環境のせいなのか、jaconvのh2zでは上手く変換できませんでした。
そこで、以下のように、一度、UTF-8のコードに変換することで、jaconv.h2zを利用できるようにしました。

mes = b'\xc2\xba\xc3\x9d\xc3\x86\xc3\x81\xc3\x9c'
for c in mes.decode():
  a = ord(c)
  if a >= 0xA1 and a <= 0xBF: 
    body += b'\xef\xbd' + c.encode('utf-8')[1:] 
  elif a >= 0xC0 and a <= 0xDF:
    body += b'\xef\xbe' + c.encode('utf-8')[1:]
  elif c.isalnum():
    body += c.encode('utf-8')
  else:
    body += '_'.encode('utf-8')
print(body.decode('utf-8'), jaconv.h2z(body.decode('utf-8')))
# 結果:  コンニチワ コンニチワ

(CORS)

Cross-origin resource sharing(CORS)は、ウェブ上のリソースを、(最初のアクセス先とは異なる)他のドメインから要求できる方式です(Wikipediaより)。
IchigoJam webからの?”MJ GETによるbokunimo.comサーバからの応答のHTTPヘッダには、以下のようなAccess-Control-Allow-Originヘッダが必要です。

Access-Control-Allow-Origin: *