今日もシュクシュクと! Season2

一人前のエンジニアを目指して修行中の日々。何事も誠実にコツコツと。そして粛々と。

Watson Coverasation API、Node.jsでChatbot

Node.jsでConversationAPIを使用したチュートリアルを探していたら以下の記事にたどり着きました。 qiita.com

こちらの記事ではクライアントとサーバーのやりとりに、socket.ioを使用している。socket.ioを使用することで、開発者は接続プロトコルを意識せずに非同期双方向通信を実現できます。

socket.ioの基本的な使用方法として、サーバーとクライアントの通信に、どちら側でもsocket.emit(eventname, data) でイベントを発火(=データの送信)をし、socket.on(eventname, callback) でイベントを検知(=データの受信)を行います。

クライアント→サーバー:

送信側

socket.emit('chat message',$('#m').val());

受信側

 socket.on('chat message', function(msg){
        //受信したメッセージをそのまま、チャット画面に表示
        io.to(socket.id).emit('chat message',msg);
        // 受信したメッセージをAPIに投げる
        conversation.message({
          input: { text: msg },
          context : res[socket.id].context
        }, processResponse);
});

サーバー→クライアント: 送信側

// 何らかの返答があれば、それをbotからの返答として全て返す(ループはjump to の時に必要)
for (var i = 0, len = response.output.text.length; i < len; i++) {
  if(response.output.text[i] !== ''){ 
      io.to(socket.id).emit('bot message', response.output.text[i]);                
   }
}

受信側

socket.on('bot message',function(msg){
  $('#messages').append($('<li>').text('QA botくん:'+msg).addClass('chat-hukidashi').wrap('<div />'));
});

公式サイト:Socket.IO

socket.ioを使用したチャットについては以下のチュートリアルを参考。 Socket.IO — Chat

2018年を迎えて

ここ数年、開発スキルの向上を目標に掲げながら、納得の行くレベルまで至っていない。 ズルズル行くのは好ましくなく、ここいらで本気で取り組む必要がある。

今年身につけたいスキルは、最初の3ヶ月はWebフロント周りの開発スキルのアップデートに注力したい。 その中でNode.js、Angular、Node-REDあたりも一緒に習得したいところ。

また、年間を通してqiitaに12件(毎月)、学習したことを投稿したい。

Google HomeにSlackから喋らせる

以下のサイトを参考に実装してみた際の備忘ログ。

engineer.muragon.co

 

①言語設定

日本語を有効にする為に、言語の設定を以下のように書き換える(2箇所)

var language = 'ja'; // language code
if (req.query.language) {
language;
}

googlehome.ip(ip, language);
googlehome.device(deviceName,language);
 
②発信WebHookの設定
SlackからのTriggerを「引き金となる言葉」として登録するが、メンションするChatBotをSlack上で右クリックして表示される「team/XXXX/」の”XXXX”を指定する
更に、<@XXXX>と”<>”で囲む必要があるので注意する
 
Google Action Scriptでのデプロイ
コードを修正してWebアプリとしてデプロイする際に、Project versionで「New」を指定しないと更新が反映されなかった。

f:id:qamqame:20171218212103p:plain

 

④ラズパイ側でgoogle-home-notifierの実行

以下のようにバックエンドプロセスとして実行する。

# node example.js > /var/log/googleHome.log &

※ラズパイ再起動後に自動起動するために/etc/rc.localに書いておくのが良い

 

役に立つチュートリアル集

Spring Boot + Angular + MongoDBでToDoアプリを開発するチュートリアル

シンプルでわかり易い。

www.callicoder.com

mongodbのインストールからサービス開始

1.homebrewでインストール

$brew install mongodb 

 

2.DBパスを作成する

$sudo mkdir /var/lib/mongodb

 

3.ログの出力先を作成する

 $sudo touch /var/log/mongodb.log

 

4.DBを開始する

$sudo mongod --dbpath /var/lib/mongodb --logpath /var/log/mongodb.log

 

5.動作確認

$ mongo
MongoDB shell version v3.4.10
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.10
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
http://docs.mongodb.org/
Questions? Try the support group
http://groups.google.com/group/mongodb-user
Server has startup warnings:
2017-12-01T16:18:23.070+0900 I CONTROL [initandlisten]
2017-12-01T16:18:23.070+0900 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database.
2017-12-01T16:18:23.070+0900 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted.
2017-12-01T16:18:23.070+0900 I CONTROL [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
2017-12-01T16:18:23.070+0900 I CONTROL [initandlisten]

 

 

※ちなみにサービスを開始せずにmongoコマンドを実行すると以下のエラーが出力される

$ mongo
MongoDB shell version v3.4.10
connecting to: mongodb://127.0.0.1:27017
2017-12-01T11:02:37.936+0900 W NETWORK [thread1] Failed to connect to 127.0.0.1:27017, in(checking socket for error after poll), reason: Connection refused
2017-12-01T11:02:37.936+0900 E QUERY [thread1] Error: couldn't connect to server 127.0.0.1:27017, connection attempt failed :
connect@src/mongo/shell/mongo.js:237:13
@(connect):1:6
exception: connect failed

Visual Studio Code初期設定

ターミナルからcodeでVSCを起動する

qiita.com

 

Vimのインストール。リンク先の「Intall」をクリックするとVSCが起動され、インストールが出来るようになる。

marketplace.visualstudio.com

IBM Cloud Platform Application Development v2 developerWorksでハマったところ その2

Part3 Lab11

Working with the Delivery Pipeline

 

デプロイした際に下記のエラーが発生:
FAILED
Domain simple-toolchain-20170819092328749-nonchronical-underply.mybluemix.net not found

FAILED App simple-toolchain-20170819092328749-OLD-1503194511 not found

Finished: FAILED

原因:
デプロイ時のスクリプトにて、デフォルトのスクリプトに cf map-route xxxxx を追加すると上記のエラーになる。 チュートリアルに則り、デフォルトのスクリプトで不要な処理を削除すると正常完了できる f:id:qamqame:20170820112532p:plain