DialogflowのUnity SDKはiOSで動かない
はじめに
タイトルの通りです。Assetstoreのレビューにも書いてありますが、iOSでは動きません。Editorだと大丈夫なんですが。スレッド関係のエラーのように見えますが、どうやって直して良いかわかりません。
どうするか
REST APIを自分で叩いた方が良さそうです。自分はBest HTTP(Pro edition)を使ってます。他のアセットも試しましたが、一番ストレスなく使えるのはこれでした。iOSでも安定して動作します。
サンプルコードはこんな感じです。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using BestHTTP;
public class TestBestHTTP : MonoBehaviour {
public void OnClick(){
HTTPRequest request = new HTTPRequest(new System.Uri("https://api.dialogflow.com/v1/query?v=20150910&lang=ja&query=声調の勉強&sessionId=12345&timezone=Asia/Tokyo"), OnRequestFinished);
request.AddHeader("Authorization", "Bearer c***f");
request.Send();
}
void OnRequestFinished(HTTPRequest request, HTTPResponse response)
{
Debug.Log("Request Finished! Text received: " + response.DataAsText);
}
}
Headerに"Authorization"として"Bearer Client access token"が必要です。Client access tokenはDialogflowのエージェントの設定画面から取ってきます。
あと、URLにv=...でバージョンを入れる必要があります。これらについてはここを参照。言語(lang)とsessionIDも指定します。
すると、JSON形式でレスポンスが返ってきます。
{
"id": "4*****8",
"timestamp": "2017-11-15T09:42:31.482Z",
"lang": "ja",
"result": {
"source": "agent",
"resolvedQuery": "声調の勉強",
"action": "",
"actionIncomplete": false,
"parameters": {
"Tones": "声調"
},
"contexts": [],
"metadata": {
"intentId": "6*******e",
"webhookUsed": "false",
"webhookForSlotFillingUsed": "false",
"intentName": "L*****h"
},
"fulfillment": {
"speech": "<speak> <audio src=\"h******** </speak>",
"messages": [
{
"type": 0,
"speech": "<speak>\n<audio src=\"h*****</speak>"
}
]
},
"score": 1.0
},
"status": {
"code": 200,
"errorType": "success",
"webhookTimedOut": false
},
"sessionId": "12345"
}
一つ一つの意味についてはこちらを参照。
終わりに
公式のSDKでiOSにして欲しいですが、デベロッパーさんのアクティビティがだいぶ低いようなので望み薄です。自分でなんとかした方が良さそうです。
Author And Source
この問題について(DialogflowのUnity SDKはiOSで動かない), 我々は、より多くの情報をここで見つけました https://qiita.com/yanosen_jp/items/9a7bf801e600cb5bfa57著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .