最終更新: byteball_dev 2018年01月02日(火) 16:07:49履歴
node.jsもしくはbyteballの開発の初心者にはコードを見ただけではどのように動くのかや、どうやって実装すれば良いかがわかりにくいため、
代表的なコードのheadless-byteballのstart.jsについて調査した記録をこのページに残します。
独自で調査した記録のため、記載内容に間違いがある場合がありますので気をつけてご覧ください。
一目では理解しにくい内容かと思いますが、開発の参考資料としてお使いいただければと思います。
ソースコード
https://github.com/byteball/headless-byteball/blob...
代表的なコードのheadless-byteballのstart.jsについて調査した記録をこのページに残します。
独自で調査した記録のため、記載内容に間違いがある場合がありますので気をつけてご覧ください。
一目では理解しにくい内容かと思いますが、開発の参考資料としてお使いいただければと思います。
ソースコード
https://github.com/byteball/headless-byteball/blob...
コンフィグに値が設定されている場合、DBのペアリング用シークレットキーの箇所にその値がINSERTされます。
そのあとsetTimeout(228行目)が動作します。
setTimeoutでは、まずreadKeys(36行)の中でkeys.jsonが読み込めるかどうか(=ウォレットが作成されているかどうか)を確認し
エラーでファイルを読み込めない場合は、ターミナル上でデバイス名とパスワードを入力させた上でプラーベートキーを生成。
writeKeys(108行)内でkeys.jsonに書き込んだ後、createWallet(122行)でウォレットの作成を行います。
次にsetTimeoutに戻って、readSingleWalletで今作成したウォレットの読み込みを行います。
最後に266行で1000ミリ秒後にreplaceConsoleLogを呼び出してターミナル上にログが流れ続けないように処理します。
以降、eventBus.onで設定されたイベントを待ち続けます。
具体的には他のデバイスとのペアリング完了イベントや、ペアリング済みのデバイスからテキストが送られてきた時に発生するイベントなどがあります。
そのあとsetTimeout(228行目)が動作します。
setTimeoutでは、まずreadKeys(36行)の中でkeys.jsonが読み込めるかどうか(=ウォレットが作成されているかどうか)を確認し
エラーでファイルを読み込めない場合は、ターミナル上でデバイス名とパスワードを入力させた上でプラーベートキーを生成。
writeKeys(108行)内でkeys.jsonに書き込んだ後、createWallet(122行)でウォレットの作成を行います。
次にsetTimeoutに戻って、readSingleWalletで今作成したウォレットの読み込みを行います。
最後に266行で1000ミリ秒後にreplaceConsoleLogを呼び出してターミナル上にログが流れ続けないように処理します。
以降、eventBus.onで設定されたイベントを待ち続けます。
具体的には他のデバイスとのペアリング完了イベントや、ペアリング済みのデバイスからテキストが送られてきた時に発生するイベントなどがあります。
setTimeout(228行目)が動作しreadkeysに移動しますが、2回目以降はkeys.jsonが読み込まれるため、84行に移動してまずパスワードを聞かれます。
パスワードが正しければkeys.jsonからキーの情報を取り出して、ウォレットの読み込みを行います。
以降は初回の起動と同じ流れで、イベントを待ち続けます。
パスワードが正しければkeys.jsonからキーの情報を取り出して、ウォレットの読み込みを行います。
以降は初回の起動と同じ流れで、イベントを待ち続けます。
・(533行)eventBus.on('text', function(from_address, text)→チャットからのコマンドを受け取るイベント
・上記関数内で呼び出されるhandleText(430行)→受け取ったコマンドをコマンド別に処理する関数。独自のコマンドを実装する場合はここに追記。
です。
つまりコマンド毎に決まった動作をさせるだけの単純なチャットボットを作るならheadless-byteballを改造するだけで実装できてしまうということです。
・上記関数内で呼び出されるhandleText(430行)→受け取ったコマンドをコマンド別に処理する関数。独自のコマンドを実装する場合はここに追記。
です。
つまりコマンド毎に決まった動作をさせるだけの単純なチャットボットを作るならheadless-byteballを改造するだけで実装できてしまうということです。
コメントをかく