チャットツールをGitとNode.jsとHerokuでDIYする方法〜相手作成編〜

チャットツールをGitとNode.jsとHerokuでDIYする方法〜相手作成編〜

エリカ

エリカ

こんにちは。ディレクターのエリカです。

ふと「誰かとチャットしたい!」って思うこと、定期的にありますよね。でも、手頃なチャットツールが見つからない……。
そんなときは、DIYをしてみるのはいかがでしょうか。

そのための手順について、前回の「画面作成編」に続き、今回は「相手作成編」として解説をしていきます。

相手を作成するために必要なもの

主に使用するものは以下のAPIです。

  • NTT docomo の API

まずはNTT docomoでAPIの利用手続きをします。

APIの利用手続き

下記のサイトへアクセスします。

docomo Developer support

アカウント新規登録

アカウントの新規登録をします。

docomo Developer support – 新規登録

新規登録ができたらログインします。

APIの利用申請

下記からAPIの利用申請を行います。

アプリケーション登録 任意
アプリケーション名 任意
アプリケーション概要 任意
サービス開始予定日 任意
アプリケーションタイプ ウェブアプリケーション
コールバックURL https://dummy
提供者名 任意
サポートメールアドレス 任意

「任意」の箇所については、実際にサービスとして公開する予定であれば、正しい情報をそれぞれ入力してください。

上記を入力したら、次の画面でAPI機能を選択します。
今回は、「雑談対話」を選択してください。

これで、利用申請は完了です。

API keyの確認

「マイページ > アプリ/APIの申請・管理」からアプリケーション情報が確認できます。先ほど申請したアプリケーションのAPI key欄の値が必要になるので、メモしておきます。

APIを利用する

前回までに作成したチャットツールに、APIを利用する機能を追加します。

requestモジュールのインストール

requestをインストールしましょう。

npm install request --save-dev

実装

それでは、画面からメッセージが送信されたら、雑談対話APIに送信するように実装してみましょう。
app.jsと同じ階層に、talk.jsを作成します。

下記ページから仕様書をダウンロードしましょう。

仕様書に記載されているリクエスト仕様のURLと、クエリパラメータのAPIキー、および、先ほどのアプリケーションのAPI keyを組み合わせたURLを準備します。

talk.js

var request = require('request'); // requestモジュールを読み込みます

var talk = function (msg, ctx, mode, fn) {
  var options = {
    uri: '準備したURL',
    body: {utt: msg, context:ctx, mode:mode},
    json: true
  };
  request.post(options, function (error, response, body) {
    if (!error && response.statusCode == 200) {
      console.log(body);
      fn({utt:body.utt, context:body.context, mode:body.mode});
    } else {
      console.log('error: ' + response.statusCode);
    }
  });
}
module.exports = talk;

これは、APIにリクエストを送信し、レスポンスを受け取って処理を行うものです。

次に、前回作成したio.jsを改修します。
ブラウザに入力されたメッセージで、下記の処理を行うようにします。

io.js

var socketio = require('socket.io');
var talk = require('./talk');

function io(server) {
  var io = socketio.listen(server);
  var context, mode;
  io.on('connection', function (socket) {
      socket.on('chat message', function(msg){
      io.emit('chat message', 'あなたたち : ' + msg);
      talk(msg, context, mode, function(res){
        console.log(res);
        context = res.context;
        mode = res.mode;
        io.emit('chat message', 'わたし : ' + res.utt);
      });
    });
  });
}
module.exports = io;

確認

npm start

して、 http://localhost:3000/ にアクセスします。

ページ下部のテキストフィールドに文章を入力し、Sendボタンを押してみてください。入力に応じた内容が表示されます。

まとめ

これで、相手がいなくてもいつでもチャットできるようになりました。
初回にお話した、Herokuにデプロイすればいつでもどこでもお話できますね。

ちなみに、「しりとりしよう」というと、しりとりしてくれます。
私は、完勝しましたよ。

 

【よりよいチャットライフを】

チャットツールをGitとNode.jsとHerokuでDIYする方法〜環境構築編〜

チャットツールをGitとNode.jsとHerokuでDIYする方法〜画面作成編〜

LIGはWebサイト制作を支援しています。ご興味のある方は事業ぺージをぜひご覧ください。

Webサイト制作の実績・料金を見る

この記事のシェア数

ディレクターのエリカです。趣味は美術鑑賞で、絵画や展示などたくさんの作品を眺めるのが好きです。得意料理は「鍋」です。よろしくお願いします。

このメンバーの記事をもっと読む