2018年9月4日火曜日

LUIS を HTTP 直接呼出しにて利用する

Logic Apps/Flow それぞれに LUIS のコネクタは用意されているのですが、現在 LUIS V2 API へ切替られたということもあり、デザイナー上での挙動に問題があるのと、コネクタがいつまで使えるかが不明だという問題があります。一時しのぎ的な対応方法はあるのですが、根本的にコネクタが V2 API に対応されないと解決にはならない不安もあり、HTTP で直接利用する方法も必要になるかと思うので、まとめてみました。

先に現象と一時しのぎな対応についてです。

まず接続を作成する際ですが、以前は LUIS 側で構築した Application ID を指定して接続作成も行えていたのですが、現在は不可になります。接続作成時に必要なキーは LUIS ポータル側で作成したアプリケーションの PUBLISH から参照できる、Resources and Keys 設定の Key Strings になります。こちらを指定して接続を作成する必要がありますので、注意が必要です。

image

ここをこれまで通り Application ID 指定で接続を作成した場合、デザイナ上では以下のようなエラー表示になります。

image

このように 401 エラーとなっている場合は、接続が誤っている可能性が高いので、Key Strings を指定して作成しているかどうかを確認してください。

そして正しく接続を作成した場合は、以下のようなエラーになります。

image

こちらは 400 エラーとなっています。そして説明として「V1 authoring APIs have been depreccated. Please switch to the V2 authoring APIs instead.」とあるように、V1 API はもう廃止だから V2 API に切り替えて、となっています。

現状の Logic Apps/Flow の LUIS コネクタでは、このように V1 API を呼び出すように作成されていますので、そのままでは利用できないものです。

一時しのぎ的対応案としては、次のようになります。

image

App Id 欄ではエラーが出ますが、気にせずに「カスタム値」を選択。その後実際の Application ID の値を設定します。

image

そうすることでこのように動作することはします。内部的にはどうなのか、というのはコードビューで確認が可能です。

image

path として V2.0 となっているように、LUIS の V2 API に対応しているように感じます。実態としては、Logic Apps コネクタが API Management を通じて提供している呼び出し用 URL だと思われるので、ここだけで断定はできないのですがそれでも可能性は高いです。

これと同様のことを、HTTP コネクタから直接 LUIS V2 API を利用して実施してみます。API を呼び出す、と言われるとハードルが高いように思えますが、管理系の機能を利用しようとしない限り、LUIS V2 API は非常に簡単に利用可能です。

image

呼び出し先は先程の PUBLISH にて確認できる Endpoint となります。この URL は次のような構成です。

https://westus.api.cognitive.microsoft.com/luis/v2.0/apps/[Application ID]?subscription-key=[Key Strings]&verbose=true&timezoneOffset=0&q=[URL エンコードした解析したい文字列]

この URL に対して HTTP GET で呼び出しをかけるだけで、LUIS による解析は利用可能です。以下のような結果を取得できます。ブラウザ上でも実行可能です。

image

Logic Apps 上でも同様に HTTP コネクタを利用して呼び出しを行ってみます。

image

比較用に LUIS コネクタを設置して、結果が同じであるかを確認してみます。

image

これが実行結果です。既存の LUIS コネクタも、HTTP で直接 V2 API を呼び出しても結果が同じになっています。

このような形で、直接 LUIS の V2 API を呼び出すことは可能です。今後同様のケースが別コネクタで発生した場合、API 仕様が公開されているのであれば、一時的に HTTP コネクタによる直接利用へと切り替えて、改修されるのを待つというのも一つの方法として必要だと思います。

0 件のコメント:

コメントを投稿