0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

UE4とFlaskでAPI通信を利用した簡単なチャットボットデモの実装

Last updated at Posted at 2021-12-18

#はじめに

初投稿です。今回UnrealEngine4の「Varest」を使用してブループリントから,postしてAPIサーバーから通信出来る様にしました。API通信はPythonのFlaskというwebアプリケーションを使用しております。サーバーからの応答はAIMLという名前にしています。

スクリーンショット (815).png

##記法
以下では各名称を以下の様に略します。
UnrealEngine4➞UE4
ブループリント➞BP

##内容
API(Application Programming Interface)
ソフトウェア等をつなぐためのインターフェース
今回はUE4とFlaskを繋いでいます。

ルールベースxmlファイルで作成したものをflaskをつかって応答し,UE側からPOST通信します。またPython側で自然言語処理や機械学習のフレームワークを活用し,その結果をUE4に送信することもできます。(今後やっていきたい)

##環境

今回は以下のverで使用しております。
UE4 4.25
Python 3.7

##準備
マーケットプレイスからVarestをインストールします。
スクリーンショット (813).png

またローカルのPython環境でflaskをインストールしていない方はpipしておきます。

$ pip install Flask

##BP(レベル)
以下の様に組みます

スクリーンショット (817).png

部分的にピックアップしていきます。
スクリーンショット (834).png

スクリーンショット (835).png

スクリーンショット (836).png

###変数
以下を(string)用意します。URLはhttp://127.0.0.1:5000/
等、ローカルで立上げるためのURLをデフォルトにしておく。またtextは簡潔に送るためのメッセージです。後ほどのxmlを参照して適宜変えてください。(今回はこんばんはにしています)

スクリーンショット (819).png

##flask
flask部分です。

aiml.py
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.xml
<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部分はいなかったので(多分…)あげました。参考程度に

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?