gradleの設定
android studioの場合
gradel(App.module)へ下記を追加
implementation 'com.ibm.watson.developer_cloud:android-sdk:0.5.0'
implementation 'com.ibm.watson.developer_cloud:java-sdk:6.14.0'
0.5.0の方は無くても動くようです。
通信がありますので、AndroidManifest.xml へ下記を追記してください。
<uses-permission android:name="android.permission.INTERNET" />
簡単のため、同期通信でやりますので通信処理の前にNetworkOnMainThreadExceptionを
回避するため、以下の記述を追加。
if (android.os.Build.VERSION.SDK_INT > 9) {
StrictMode.ThreadPolicy policy =
new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
}
Watson Assistant にはv1とv2があります。
それぞれ使用するAPIが違います。まずどちらのバージョンを使用するか設定画面で確認してください。
以下v1で運用する場合の説明となります。
[API Key]
認証が少しややこしいです。
以前はusername, passwordで認証していたようですが、現在はIAMに仕様が変わりAPIキーにて認証を行います。
watsonの設定はIBM Cloudのダッシュボードから行え、対象サービス(Assistant)の設定ページでIAMキーを確認できます。
このキーを使って認証しますので、他人に使われると、あなたのアカウントに課金される可能性があります。
[EndPoint]
IAMキーとセットで使われるのが、EndPointです。
アクセスするURIなのですがAssitantの場合は複数 候補があります。
分からなくなったら、設定ページで確認できます。
サーバーがワシントンDCの場合
https://gateway-wdc.watsonplatform.net/assistant/api
となります。
[WorkSpace]
これがどこをどう探しても見つからず苦労しました。
IBMのハンズオンでは設定ページに記載があることになっていますが、現在のページにはその欄は無くなっており、確認できません。
Create a skill -> 対象のインスタンス と進むと、Assistantの会話を構成するツールが起動します。
その時のブラウザ上のURIの中にWorkSpaceIDが潜んでいます。
~workspaces/ ここ /build~ にあります。
追記: 作ったskillを選ぶ画面の各スキルの枠の右上 3点ドット -> View API Detail で確認できました。
簡単なサンプル
private static final String WORKSPACE_ID = "";
private static final String IAM_Key = "";
private static final String URI = "";
~中略~
String sendMessage = "こんにちわ"; //ワトソンへ送信する文字列
IamOptions iamOptions = new IamOptions.Builder().apiKey(IAM_Key).build();
Assistant service = new Assistant("2018-09-20", iamOptions);
service.setEndPoint(URI);
InputData input = new InputData.Builder(sendMessage).build();
MessageOptions options = new MessageOptions.Builder(WORKSPACE_ID)
.input(input)
.build();
MessageResponse response = service.message(options).execute();
System.out.println(response);
このままでは、常にダイアログ ルートノードでの反応となります。
セッションを継続するためには、いくつか方法があるようですが、watson からの返信で受け取った context を次のリクエストに渡すやり方が、一番簡単だと思われます。
Context watsonContext = response.getContext(); //と受け取っておき
MessageOptions options;
if(watsonContext != null) {
options = new MessageOptions.Builder(WORKSPACE_ID)
.input(input)
.context(watsonContext) //次のリクエストに渡す
.build();
}else{
options = new MessageOptions.Builder(WORKSPACE_ID)
.input(input)
.build();
}
MessageResponse response = watsonAssistant.message(options).execute();
watsonContext = response.getContext();
IBMのwatsonで提供される各機能は各種言語向けのサンプルコードを伴った解説(英語)が用意されています。
APIリファレンスV1
https://console.bluemix.net/apidocs/assistant
APIリファレンスV2
https://cloud.ibm.com/apidocs/assistant-v2
https://www.ibm.com/cloud/watson-assistant/
IBMのチュートリアル(日本語)
https://cloud.ibm.com/docs/services/assistant?topic=assistant-getting-started#getting-started
watsonはクレジットカードの登録無しでも、一定範囲内の利用は無料です。
AIサービス利用の感じをつかむため、ちょっと触ってみてはどうでしょう。
特に、Assistantは概念的にもわかりやすく、様々なサイトへ応用可能ですのでお勧めです。
Wordpress用のモジュールもあるようですよ。