#はじめに
初投稿です。今回UnrealEngine4の「Varest」を使用してブループリントから,postしてAPIサーバーから通信出来る様にしました。API通信はPythonのFlaskというwebアプリケーションを使用しております。サーバーからの応答はAIMLという名前にしています。
##記法
以下では各名称を以下の様に略します。
UnrealEngine4➞UE4
ブループリント➞BP
##内容
API(Application Programming Interface)
ソフトウェア等をつなぐためのインターフェース
今回はUE4とFlaskを繋いでいます。
ルールベースxmlファイルで作成したものをflaskをつかって応答し,UE側からPOST通信します。またPython側で自然言語処理や機械学習のフレームワークを活用し,その結果をUE4に送信することもできます。(今後やっていきたい)
##環境
今回は以下のverで使用しております。
UE4 4.25
Python 3.7
##準備
マーケットプレイスからVarestをインストールします。
またローカルのPython環境でflaskをインストールしていない方はpipしておきます。
$ pip install Flask
##BP(レベル)
以下の様に組みます
###変数
以下を(string)用意します。URLはhttp://127.0.0.1:5000/
等、ローカルで立上げるためのURLをデフォルトにしておく。またtextは簡潔に送るためのメッセージです。後ほどのxmlを参照して適宜変えてください。(今回はこんばんはにしています)
##flask
flask部分です。
from flask import Flask, request, jsonify
import aiml
import time
kernel = aiml.Kernel()
kernel.learn("aiml.xml")
app = Flask(__name__)
#デフォルト
@app.route("/")
def hello():
#return jsonify({"message":"AIML"})
return "AIMLです。"
#レスポンス
@app.route("/post", methods=['POST'])
def post():
text = request.form['text']
print(text)
response = kernel.respond(text)#xmlファイルの取得
print(response)
return jsonify({"message":response})
#ここは任意の番号
app.run(host="127.0.0.1", port=5300)
xmlファイルも下記に示します。
ルールベースになるので,汎用性があまりないです。今回は3番目の応答になります。
<aiml version="1.0.1" encoding="UTF-8">
<category>
<pattern>こんにちは</pattern>
<template>ユーザさん,こんにちは,調子はどうですか。</template>
</category>
<category>
<pattern>おはよう</pattern>
<template>おはようございます。いい天気ですね</template>
</category>
<category>
<pattern>こんばんは</pattern>
<template>ユーザさん,こんばんは,夕飯は食べましたか。</template>
</category>
</aiml>
また,pyファイルとxmlは同ディレクトリ内に置いておいてください。
##最後に
pyファイルを実行後,UE4を起動し,jを押すと反応してくれます。get部分は何人かweb上にあげていた方はいたのですが,post部分はいなかったので(多分…)あげました。参考程度に