🔰

NobyAPIであっさりロボットチャット

2021/09/05に公開

NobyAPIであっさりロボットチャット

NobyAPIを使う事で、とても簡単にロボットチャットを実装する事が出来ます。
(サイトも可愛いですね!!)

今回は、"NobyAPI"と、"Axios"を使って簡単なチャットシステムを作ってみます。(とても簡単です!!)
※Axiosの使い方については、Axiosであっさりファイルアクセスをご参照ください。


完成イメージ

アカウントとAPIキーを取得する

NobyAPIを利用するには、アカウントとAPIキーが必要になります。
左メニューにある"アカウントとAPIキー取得"から、CotoGotoコンソール画面に進み、アカウントを取得しましょう。

CotoGotoコンソール画面

アカウントを取得するには、FacebookアカウントかLineアカウントのいずれかが必要になります。

アカウントの取得に成功すると、APIキーが表示されますのでコピーしておきましょう。

プロジェクトを用意する

次の様にプロジェクトを作ります。

MyProject01/
 ├ index.html (プログラムを起動するファイルです)
 ├ main.js (メインのプログラムを記述するファイルです)

HTMLファイルを用意する

では、作っていきましょう。
HTMLファイルを用意して、下記コードを記述します。

index.html
<!DOCTYPE html>
<html lang="ja">
<head>
	<meta charset="UTF-8">
	<script src="https://cdn.jsdelivr.net/npm/axios@0.21.1/dist/axios.min.js"></script>
	<script src="./custom.js"></script>
</head>
<body>
	<input id="myText" type="text" value="こんにちは"/>
	<button id="myBtn">送信</button>
	<ul id="myChat"></ul>
</body>
</html>

"Axios"のロードには、CDN(Contents Deliverly Network)を使っています。
(URLから直接ダウンロードする事で、プロジェクトがコンパクトになりますね)

body部分には、入力フォーム、送信ボタン、チャット表示部分を記述しておきます。

JavaScriptファイルを用意する

次はメインのプログラムです。
ここからは、次の順番で解説をしていきますね。

  1. NobyAPIに送信するデータを用意する
  2. AxiosでNobyAPIにアクセスする
  3. 受け取ったデータを確認する

1, NobyAPIに送信するデータを用意する

NobyAPIには、入力フォームから取り出した文字列と、先ほど取得したAPIキーを送信します。
Axiosを使って送信する場合は、次の様に記述します。

main.js
const params = {params:{"text": 送信するテキスト, "appkey": APIキー}};

2, AxiosでNobyAPIにアクセスする

"Axios"を読み込んだ事で、"axios"オブジェクトを使う事ができる様になっています。
"axios.get関数"を使って、次の様に記述します。

※Axiosの使い方については、Axiosであっさりファイルアクセスをご参照ください。

main.js
axios.get(NobyAPIへのURL, 送信するデータ).then(res=>{
	// 通信が成功した場合はこちらが実行されます
}).catch(err=>{
	// 通信が失敗した場合はこちらが実行されます
});

滞りなく通信が成功すると、"then"にあるコールバックが実行されます。
この引数にある"res.data"に様々なデータが格納されています。(ワクワクしますね!!)

3, 受け取ったデータを確認する

先ほどの、"res.data"にはNobyから返された様々な反応が格納されています。

簡単にまとめると次の様になります。

種類 意味
res.data.text 会話の返事を返します
res.data.mood 会話のムードを返します
res.data.negaposi ネガポジ(ネガティブ -3 <---> 3 ポジティブ)を返します
res.data.negaposiList.word ネガポジの単語を返します
res.data.negaposiList.score アニメーションを停止状態にする(true/false)
res.data.emotion.angerFear 感情のスコア(怖れ -3 <---> 3 怒り)を返します
res.data.emotion.joySad 感情のスコア(悲しい -3 <---> 3 嬉しい)を返します
res.data.emotion.likeDislike 感情のスコア(嫌い -3 <---> 3 好ましい)を返します

他にも様々なレスポンスがありますので、Nobyからのレスポンスをご参照ください。

全体のコード

最後に全体のコードを載せておきますね。

main.js
const NOBY_API = "https://www.cotogoto.ai/webapi/noby.json";
const NOBY_KEY = "あなたのAPIキー";

window.onload = function(){

	// ボタンのクリックイベント
	document.getElementById("myBtn").onclick = ()=>{

		const text = document.getElementById("myText").value;// 入力フォームから文字列
		addToChat("You:" + text);// チャットに追加

		const params = {params:{"text": "Hello", "appkey": NOBY_KEY}};// NobyAPIへ送信するデータ
		axios.get(NOBY_API, params).then(res=>{// NobyAPIへ送信
			addToChat("Noby:" + res.data.text);// チャットに追加
		}).catch(err=>{
			console.log(err);
		});
	};

	// チャットに追加する関数
	function addToChat(str){
		const elem = document.createElement("li");
		elem.innerHTML = str;
		document.getElementById("myChat").appendChild(elem);
	}
}

見事に、NobyAPIと会話をする事ができました。(会話が落ち着くと晩酌を始めるNoby!!)

最後に

今回は、NobyAPIを使って簡単なロボットチャットに挑戦してみました。
コードとしてもとても短いので、JavaScriptに少しだけ慣れてきたら是非挑戦してみてください!!
ここまで読んでいただき有難うございました。

Discussion