goo blog サービス終了のお知らせ 

Linkstationで自宅サーバ

Buffalo Linkstation Miniで自宅サーバに挑戦します。

IIJmioのクーポンスイッチAPIをLINEで叩けるようにする(GAS)

2022-10-01 12:23:16 | 雑談
試してみました。
やってみると、LINEでメッセージを送るとデータ使用量の照会や、クーポンスイッチのON/OFFができたりしてなかなか面白いです。
今回はGoogle Apps Scriptを使ってLINE messaging APIを叩く方式で作成しました。
LINE messaging APIを叩く部分は分かりやすい解説がたくさんあると思いますので省略します。
IIJmioクーポンスイッチAPIを叩くところはググればすぐ見つかる・・という状況ではないように思いました。今後記事にしたいと思います。

今回は、1点はまったところがありましたのでその点についてポストします。
クーポンスイッチのON/OFFは coupon API (URL末尾/coupon/なので勝手にこう呼びます)ですが、eSIMだけを操作しようとしてもうまくいきませんでした。
(Your data structure or data type is invalid エラーになる)
試行錯誤のあげく、物理SIMのスイッチもあわせて操作することで通るようになりました。

うまくいったときのリクエストヘッダ設定を記載します。

前提となる変数は下記のとおりです。事前に、coupon APIの照会リクエストで値を取得しておく必要があります。
hdx_service_code(変更したいeSIMのhdxServiceCode)
coupon_switch(変更したいeSIMのスイッチ設定、ON:1 OFF:0)
hdo_service_code(ダミーで設定する物理SIMのhdoServiceCode)
coupon_switch0(ダミーで設定するスイッチ設定、ON:1 OFF:0)

コード:
let iijurl = "https://api.iijmio.jp/mobile/d/v2/coupon/";
var data = {
'url': iijurl
};
var headers = {
"X-IIJmio-Developer" : "...",
"X-IIJmio-Authorization" : "...",
"Content-Type" : "application/json"
};
var body = {
"couponInfo" : [
{
"hdoInfo" : [
{ "hdoServiceCode" : hdo_service_code, "couponUse" : Boolean(coupon_switch0) } // ダミーで入れるデータ(これを入れないとエラーになる)
],
"hdxInfo" : [
{ "hdxServiceCode" : hdx_service_code, "couponUse" : Boolean(coupon_switch) } // こちらが変更したいeSIMのデータ
]
}
]
};
var options = {
"method" : 'PUT',
"headers" : headers,
"payload" : JSON.stringify(body),
"muteHttpExceptions": true
};

let response = UrlFetchApp.fetch(iijurl, options);

「物理SIMとeSIMが混在して複数契約がある場合、eSIM単独では操作することができない」という制約なのかもしれません。eSIM単独契約の場合はどうなるんだろうか、など疑問は残ります。

Heroku+PHP+RedisでLINE BOT

2017-08-11 11:49:06 | 雑談
ドコモの雑談対話APIを使ったLINE BOTを作ってみたいと思い立ち、作ってみました。

作ってみたところ、なかなかうまくいかない点もあったのでメモ。

しかし作ってみての感想は、サーバなし、課金なしでここまでできることに感動。
ブログのタイトルにもあるLinkstationを利用した自作サーバとか、もはや隔世の感といったところです。

まず、LINE BUSINESS CENTERでMessaging APIを使えるようにします。手順は省きますが、特に法人登録の必要はなく、フリープランでReply APIが使えればOKです。
アカウントリスト > LINE developers > Basic Informationの"Web hook URL"と"Channel Access Token"がこの後かかわってきます。

次に、ドコモのDeveloper Supportでユーザー登録し、「雑談対話」APIの利用申請をします。こちらも特に法人登録の必要はないと思います。

さらに、Herokuもユーザ登録します。記録がなくなってしまいましたが、クレジットカード情報の登録が必要なものの、基本フリーのプランでOKだったはず。

外部的な準備は以上。続きます。

SSHサーバへの鍵認証

2012-07-12 00:34:42 | 雑談
仕事でSSHサーバに秘密鍵認証でログインする必要があって、Fedoraから試していたのですが、どうもうまくいかない。

Webを探したのですが、どうも的を得なかったのでメモ。

【現象】
$ ssh -i ./.ssh/id_rsa <宛先SSHサーバ>
で、秘密鍵のパスフレーズをきかれた後、
Permission denied (publickey)
というメッセージが出てログインできない。

【解決策】
宛先サーバでログインしたいユーザ名をl(エル)オプションで付加する。
$ ssh -i ./.ssh/id_rsa -l <ユーザ名> <宛先SSHサーバ>

宛先サーバの方のログを見てみると、クライアント側のユーザ名が出ていて「そんなユーザは知らん」というエラーになっていたので気付きました。
お互いrootだったりすると偶然の一致でこのエラーにならなかったりするかも知れませんが、rootでSSHサーバに直接ログインできるのもどうかという話もありますので。


ASUSのeeePC 1005HRのリカバリ

2012-05-24 23:28:54 | 雑談
ASUSのeeePC 1005HRのお話。
このPCにはリカバリDVDがついていて、DVDブートできればこのDVDから購入時の状態に戻すことができますが、DVDドライブがなくてもリカバリできるかというお話です。

結論は、USBメモリブートによるリカバリが可能でした。
目的は違いますが、ほとんどこの記事と同じ手順です。

リカバリDVDは2層のようで、容量が7GBくらいあります。なのでUSBメモリは8GB以上が必要です。
(実際は、不要なフォルダもあると思うので、省いていくことも可能かもしれませんが、未検証です。)

まずdiskpartツールでUSBメモリをフォーマット。diskpartは母艦PCのWindows7に既に含まれていました。

DISKPART> list disk
DISKPART> select disk 1
DISKPART> clean
DISKPART> create partition primary
DISKPART> select partition 1
DISKPART> active
DISKPART> format fs=fat32
DISKPART> assign
DISKPART> exit

DVD(Eドライブ)のファイルをUSBメモリ(Gドライブ)に転送。
bootsectツールを使ってUSBメモリのブートセクタを作成。bootsectツールは32bitと64bitで違うらしいので注意が必要です。1005HRのWindows7は32bitですのでbootsectも32bit版を使う必要があると思います(64bit版を使って試した訳ではないので、定かではありません)。私はWindows Vistaのインストールメディアから引っ張ってきました。

C:\> xcopy E:\*.* /s/e/f G:\
C:\> bootsect /nt60 G:

これでUSBメモリから起動すればリカバリプログラムが起動します。