VUI in your App with Dialogflow
App Dojo 2017 12月 - VUI in your app with Dialogflow -
大橋啓介と申します
何やってる?
App Dojo 2017 12月 - VUI in your app with Dialogflow -
App Dojo 2017 12月 - VUI in your app with Dialogflow -
App Dojo 2017 12月 - VUI in your app with Dialogflow -
話す事
VUI in your App with Dialogflow
アジェンダ
● Dialogflowとは?
● Dialogflow & Android
※この資料で話さないこと
● AoGとDialogflow
○ 後でチュートリアルします。
● 自然言語処理云々
○ ご自身でがんばってください。
● VUIのあれこれ
○ ガイドラインを見よう
● Voice Interactions API
○ 今日は話しません
アジェンダ
● Dialogflowとは?
Dialogflowとは?
Dialogflowとは?
● 自然言語対話プラットフォーム
りんごが5つ欲しい
5つりんごが欲しい
5つりんごをくれ
りんごを5個買いたい
action: buy
param:
target: りんご
quantity: 5
意味、パラメータは同じ
特徴
● GUIで自然言語処理の定義が可能
● 機械学習を用いた自然言語処理の強化
● 各種サービスとの連携
○ Google Assistant, Line, Slack, Facebook Messanger, etc
● Webhookを利用した外部システム連携
● 定義済み辞書、ユーザ定義辞書を用いたパラメータ抽出
Dialogflowとは?
特徴
● GUIで自然言語処理の定義が可能
○ 多言語処理
○ ユーザの発言と、アクションの紐付け
○ 発言内容の履歴
○ 呼び出し数などのAnalyticsデータ
Dialogflowとは?
特徴
● 機械学習を用いた自然言語処理の強化
Dialogflowとは?
特徴
● 各種サービスとの連携
○ Google Assistant
■ Android (Allo, Assistant app)
■ Google Home
○ LINE
○ Slack
○ Facebook Messanger
○ Skype
○ Twillo
○ Amazon Alexa (Import/Export Only)
Dialogflowとは?
大事な用語
● Intent
● Entity
● Fulfillment
Dialogflowとは?
Intent
● ユーザの言葉(会話、文章)と
アプリケーションのActionのマッピング
● 以下を持つ
○ User Says (ユーザの言葉)
○ Action (対応するAction名とパラメータ)
○ Event (トリガーとなるEvent)
○ Response (返答内容)
○ Context (事前のの会話情報)
Dialogflowとは?
Intent Dialogflowとは?
Entity
● パラメータを取得するための定義
○ イメージ的には辞書
● 3種類ある
○ Enum
○ Map
○ Composite
Dialogflowとは?
Entity
● Enum
○ 単純な抽出したい言葉のリスト
■ ラーメンの名前一覧
Dialogflowとは?
Entity
● Enum
○ 複数の意味を1つの解釈として束ねる
■ 連絡先→email、住所、sns名
Dialogflowとは?
Entity
● Map
○ 辞書Mapping
■ ラーメン:ラーメン、らーめん、拉麺、Ramen
Dialogflowとは?
Entity
● Composite
○ 複数のEntityのくみあわせ
■ 1kg → $sys.number $sys.weight-unit
Dialogflowとは?
Fulfillment
● Webhook
○ 特定のURLを指定して、Intentが起動した際に呼び出す事が可能
○ 1URLのみ
○ 最大5秒の制限
Dialogflowとは?
Fulfillment
● Cloud Functions
○ Dialogflowのコンソール上のエディタから直接Cloud Functionsの
コードを記述し、Webhookとして利用できる
Dialogflowとは?
アジェンダ
● Dialogflowとは?
● Dialogflow & Android
DialogflowとAndroid
● Android用のSDKがあり簡単にアプリに取り込める
○ https://github.com/dialogflow/dialogflow-android-client
DialogflowとAndroid
● やってくれる事
○ Speech Recognition
■ Android由来のものを利用
■ UI部品から自動呼び出し
DialogflowとAndroid
● やってくれる事
○ Dialogflow APIの呼び出し
■ 自然言語処理
● アクション
● パラメータの抽出
● 設定した返答
● Webhookの呼び出し
DialogflowとAndroid
● やってくれる事
○ その他UIの提供
■ Button
■ Dialog
使い方(準備)
● Dialogflow側で諸々設定
● build.gradleに追加
○ compile 'ai.api:libai:1.6.12'
○ compile 'ai.api:sdk:2.0.7@aar'
● APIアクセスするための設定
DialogflowとAndroid
final AIConfiguration config = new AIConfiguration(Config.ACCESS_TOKEN,
AIConfiguration.SupportedLanguages.Japanese,
AIConfiguration.RecognitionEngine.System);
使い方(AIButton)
● ボタンを利用する場合はlayout.xmlに追加
DialogflowとAndroid
<ai.api.ui.AIButton
android:id="@+id/micButton"
android:layout_height="152dp"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
style="@style/ApiAi.Microphone"
/>
使い方(AIButton)
● Listenerを実装
DialogflowとAndroid
public interface AIButtonListener {
void onResult(final AIResponse result);
void onError(final AIError error);
void onCancelled();
}
使い方(AIButton)
● ボタンにConfig、Listenerを設定
DialogflowとAndroid
aiButton.initialize(config)
aiButton.setResultsListener(this)
使い方(AIButton) DialogflowとAndroid
@Override
public void onResult(final AIResponse response) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Log.i(TAG, "Status code: " + response.getStatus().getCode());
final Result result = response.getResult();
Log.i(TAG, "Action: " + result.getAction());
Log.i(TAG, "Speech: " + result.getFulfillment().getSpeech());
final HashMap<String, JsonElement> params = result.getParameters();
if (params != null && !params.isEmpty()) {
Log.i(TAG, "Parameters: ");
for (final Map.Entry<String, JsonElement> entry : params.entrySet()) {
Log.i(TAG, String.format("%s: %s", entry.getKey(), entry.getValue().toString()));
}
}
}
});
}
使い方(AIButton)
● これでアプリに自然言語処理を組み込めるのようになる
○ 提供されたUI部品を使わなくてもOK
■ Speech Recognition + API呼び出しのみ
● AIService
■ API呼び出しのみ利用することも可能
● テキストの自然言語処理などに利用
● AIDataService
DialogflowとAndroid
● サポートチャット
○ アプリ内の賢いサポートチャットとして利用できる
● Voice Actionの定義
○ 「写真をとって」などのVoice Actionを作れる
○ ただし「OK Google」の様なトリガーを作る必要があり、
これはオンラインでやらない方がいい
● 自分でスマートホーム作る
○ Android Thingsとかと組み合わせて...
使い道 DialogflowとAndroid

More Related Content

PDF
DroidKaigi 2018 - Dialogflow for Android
PDF
Dialogflow tips
PDF
私なりのGo言語のご紹介
PPTX
OmegaTでドキュメント翻訳
PDF
CodeIgniter をモダンに改造してみた
PPTX
Go言語の紹介
PDF
PHPUnitでリファクタリング
PPT
第55回PHP勉強会
DroidKaigi 2018 - Dialogflow for Android
Dialogflow tips
私なりのGo言語のご紹介
OmegaTでドキュメント翻訳
CodeIgniter をモダンに改造してみた
Go言語の紹介
PHPUnitでリファクタリング
第55回PHP勉強会

What's hot (20)

PDF
KotlinJSって正直どうなん
PDF
エンジニア×デザイナー GitHubで変わるコミュニケーション(PHPカンファレンス2014 P4Dセッション)
PPTX
開発チームにKotlinを導入した話
PDF
スタートアップ企業が実践するクラウドネイティブアプリケーションの開発手法
PPTX
CodeIgniterのライセンスについて
PPTX
PHP7がリリースされたいま、 改めてHackについて考える。
PDF
困った時のDev toolsの使い方(初心者向け)
PDF
TechFeedというテクノロジーキュレーションサービスを作った話
PDF
いまさら聞けないHTML5概要
PPTX
自宅で仕事。安くなってきたGPUインスタンスをParsecで活用しよう。
PDF
Easy easy2
PDF
約2ヶ月デザイナーとペアプログラミングを行なった話と僕が伝えたいこと
PPTX
FuelPHP × HHVM サービス開発事例
PDF
What is "Go" Gopher?
PPTX
Hack言語に賭けたチームの話
PDF
GDG Tokyo New Year Seminar 2018 -Dialogflow-
PDF
PHPerがgolangでもがいてる話@第1回 関西Golang勉強会
PPTX
PDF
Pythonを始めよう
PPTX
PHPCON fukuoka 2015 CodeIgniter update
KotlinJSって正直どうなん
エンジニア×デザイナー GitHubで変わるコミュニケーション(PHPカンファレンス2014 P4Dセッション)
開発チームにKotlinを導入した話
スタートアップ企業が実践するクラウドネイティブアプリケーションの開発手法
CodeIgniterのライセンスについて
PHP7がリリースされたいま、 改めてHackについて考える。
困った時のDev toolsの使い方(初心者向け)
TechFeedというテクノロジーキュレーションサービスを作った話
いまさら聞けないHTML5概要
自宅で仕事。安くなってきたGPUインスタンスをParsecで活用しよう。
Easy easy2
約2ヶ月デザイナーとペアプログラミングを行なった話と僕が伝えたいこと
FuelPHP × HHVM サービス開発事例
What is "Go" Gopher?
Hack言語に賭けたチームの話
GDG Tokyo New Year Seminar 2018 -Dialogflow-
PHPerがgolangでもがいてる話@第1回 関西Golang勉強会
Pythonを始めよう
PHPCON fukuoka 2015 CodeIgniter update
Ad

Similar to App Dojo 2017 12月 - VUI in your app with Dialogflow - (18)

PDF
アイデアを塩漬けにしない-世界中の人に手伝ってもらう方法-
PDF
会話型UI事始め
PDF
Weekend Androidのススメ
PPTX
131207 NECTJ Workshop 2
PPTX
openAI_APIでできること
PPTX
モブプログラミングを体験しよう at Agile Japan 2017 愛媛サテライト
PDF
Unityアセットの FairyGUI を使って、一見格好良さそうなGUIを作ろうとしてハマる話
PDF
「Agileごっこ」で終わらせないために(仮)
PPTX
Pmt20151027 seminar
PDF
The History of Groovy #GroovyBase
PDF
第1回クラウドソーシングサミット freelancer.com体験記
PPTX
MobProgrammingを体験してみよう!
PDF
Android2でも動くMaterialデザイン実装
PPTX
Zapier ppap-share
PPTX
MobProgramming at クリエーションライン
PDF
Google Assistant関係のセッションまとめ
PDF
Devsumi2013 15-C-1 実践!スマホアプリのマネタイズ!! ~マーケット把握術と iPhone&Androidプログラミングテクニック~
PDF
!(びっくり)するかもしれないヤフーでのアプリ開発
アイデアを塩漬けにしない-世界中の人に手伝ってもらう方法-
会話型UI事始め
Weekend Androidのススメ
131207 NECTJ Workshop 2
openAI_APIでできること
モブプログラミングを体験しよう at Agile Japan 2017 愛媛サテライト
Unityアセットの FairyGUI を使って、一見格好良さそうなGUIを作ろうとしてハマる話
「Agileごっこ」で終わらせないために(仮)
Pmt20151027 seminar
The History of Groovy #GroovyBase
第1回クラウドソーシングサミット freelancer.com体験記
MobProgrammingを体験してみよう!
Android2でも動くMaterialデザイン実装
Zapier ppap-share
MobProgramming at クリエーションライン
Google Assistant関係のセッションまとめ
Devsumi2013 15-C-1 実践!スマホアプリのマネタイズ!! ~マーケット把握術と iPhone&Androidプログラミングテクニック~
!(びっくり)するかもしれないヤフーでのアプリ開発
Ad

More from 啓介 大橋 (8)

PPTX
GCPUG Shonan GAS & GAE
PPTX
Dockerハンズオン
PPTX
Fusion360 meetup vol2 LT
PPTX
パフォーマンスの良いGASの書き方 Best Practice
PPTX
Google Apps Scriptとは? Add-onとは?
PPTX
gcp ja night #27 Google Cloud Endpoints with Golang
PPTX
Tokyo gas #5_whatsnewinappsscript_公開用
PPTX
Dart flightschool cloudendpoint with dart
GCPUG Shonan GAS & GAE
Dockerハンズオン
Fusion360 meetup vol2 LT
パフォーマンスの良いGASの書き方 Best Practice
Google Apps Scriptとは? Add-onとは?
gcp ja night #27 Google Cloud Endpoints with Golang
Tokyo gas #5_whatsnewinappsscript_公開用
Dart flightschool cloudendpoint with dart

App Dojo 2017 12月 - VUI in your app with Dialogflow -