Xamarin
Xamarin.Forms
Watson
conversation
chatbot

IBM Watson ConversationのChatBotクライアントをXamarinで作ってみた

本記事は、初心者さん・学生さん大歓迎! Xamarin その1 Advent Calendar 2017 の19日目の記事です。

先日、IBM Cloud ライトプランが、発表されました。
無料、無期限、クレジットカード登録なしで42種類ものプラットフォームサービスやAPIを使うことができ、もちろんWatson APIも無料で使うことができます。

その中でも、Watson APIの一つであるConversationを使うと、自然言語を意図分類しながら回答するAIチャットボットが、わりと簡単に作成できます。

そんなConversationですが、IBM CloudのWeb管理コンソールから、作ったBotのデモンストレーションを行うことができます。

スクリーンショット 2017-12-19 13.46.58.png

でもお客さんに見せる時、管理コンソールは、、、っとかありますよね。
LINEやSlack連携なども可能ですが、Developer Accountの取得、設定など、多少手間がかかります。(それでも簡単ですが)
そんな時に簡易的にデモを行えるツール(アプリ)が欲しいなーと思い、作ることにしました。

IBMCloudの管理画面からサービス資格情報
  -> 一覧からConversationサービスを選択
    -> 資格情報の表示を押下すると表示される、UserName,Password
をアプリで入力することで、接続できます。
LINEや他のChatサービス連携とは違い、Developer Accountの取得や、管理ポータルでの設定は不要です。

本当はXamarinについての質問を返すAIチャットボットを作って、Xamarin.Formsクライアントからデモを行う、というのをやりたかったのですが、間に合わなかったので、それは別の機会に。

作ったもの

まずは動画をご覧ください。

conversationclient.gif

Conversationのチュートリアルとして用意されている、車のAIチャットボットに繋いでみました。

「play music」 と入力すると、音楽のジャンルはなんだ?と聞き返されます。
「Jazz」と入力すると、Jazzの音楽を起動してくれます。
「Thanks」と入力すると、言われ慣れていないのか「何言ってるかわかんない」と言われますw(覚えさせていないだけ)
こんな感じで、ボットのデモを行うことができるアプリです。

フレームワーク、ライブラリ

作り方

Watson Developer Cloudが .NET Standard 1.6〜に対応しているため、
Xamarin.Forms でPCLを .NET Standardに変更しました。せっかくなので、2.0対応しました。

あとは WatsonDeveloerCloud Conversation API をラップしたModelクラスを作成し、ViewModelを介して画面を更新しています。

ソースも公開しています。

まだUIも味気なく、ログイン機能もないですが、資格情報をご自身のUserName,Passwordに変更することで、実際にお試しいただけます。

近々、ログイン機能やUIの刷新を行ったのち、ストアにリリースできればいいなと思っております。
技術的内容が薄めですみませんが、以上となります!
なお、所属する会社のアドベンドカレンダーにXamarin Profierでメモリリーク解析を書きましたので、よろしければご覧ください。

明日はJXUG主催 田淵さんの「何がNativeで何がEmbeddingなの?って初心者向けの話を書きます。」です。
引き続き初心者さん・学生さん大歓迎! Xamarin その1 Advent Calendar 2017をお楽しみください。