狠狠撸

狠狠撸Share a Scribd company logo
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 & Android
※この資料で話さないこと
● AoGとDialogflow
○ 後でチュートリアルします。
● 自然言語処理云々
○ ご自身でがんばってください。
● VUIのあれこれ
○ ガイドラインを見よう
● Voice Interactions API
○ 今日は話しません
アジェンダ
● 顿颈补濒辞驳蹿濒辞飞とは?
顿颈补濒辞驳蹿濒辞飞とは?
顿颈补濒辞驳蹿濒辞飞とは?
● 自然言語対話プラットフォーム
りんごが5つ欲しい
5つりんごが欲しい
5つりんごをくれ
りんごを5個買いたい
action: buy
param:
target: りんご
quantity: 5
意味、パラメータは同じ
特徴
● GUIで自然言語処理の定義が可能
● 機械学習を用いた自然言語処理の強化
● 各種サービスとの連携
○ Google Assistant, Line, Slack, Facebook Messanger, etc
● Webhookを利用した外部システム連携
● 定義済み辞書、ユーザ定義辞書を用いたパラメータ抽出
顿颈补濒辞驳蹿濒辞飞とは?
特徴
● GUIで自然言語処理の定義が可能
○ 多言語処理
○ ユーザの発言と、アクションの紐付け
○ 発言内容の履歴
○ 呼び出し数などのAnalyticsデータ
顿颈补濒辞驳蹿濒辞飞とは?
特徴
● 機械学習を用いた自然言語処理の強化
顿颈补濒辞驳蹿濒辞飞とは?
特徴
● 各種サービスとの連携
○ Google Assistant
■ Android (Allo, Assistant app)
■ Google Home
○ LINE
○ Slack
○ Facebook Messanger
○ Skype
○ Twillo
○ Amazon Alexa (Import/Export Only)
顿颈补濒辞驳蹿濒辞飞とは?
大事な用語
● Intent
● Entity
● Fulfillment
顿颈补濒辞驳蹿濒辞飞とは?
Intent
● ユーザの言葉(会話、文章)と
アプリケーションのActionのマッピング
● 以下を持つ
○ User Says (ユーザの言葉)
○ Action (対応するAction名とパラメータ)
○ Event (トリガーとなるEvent)
○ Response (返答内容)
○ Context (事前のの会話情報)
顿颈补濒辞驳蹿濒辞飞とは?
Intent 顿颈补濒辞驳蹿濒辞飞とは?
Entity
● パラメータを取得するための定義
○ イメージ的には辞書
● 3種類ある
○ Enum
○ Map
○ Composite
顿颈补濒辞驳蹿濒辞飞とは?
Entity
● Enum
○ 単純な抽出したい言葉のリスト
■ ラーメンの名前一覧
顿颈补濒辞驳蹿濒辞飞とは?
Entity
● Enum
○ 複数の意味を1つの解釈として束ねる
■ 連絡先→email、住所、sns名
顿颈补濒辞驳蹿濒辞飞とは?
Entity
● Map
○ 辞書Mapping
■ ラーメン:ラーメン、らーめん、拉麺、Ramen
顿颈补濒辞驳蹿濒辞飞とは?
Entity
● Composite
○ 複数のEntityのくみあわせ
■ 1kg → $sys.number $sys.weight-unit
顿颈补濒辞驳蹿濒辞飞とは?
Fulfillment
● Webhook
○ 特定のURLを指定して、Intentが起動した際に呼び出す事が可能
○ 1URLのみ
○ 最大5秒の制限
顿颈补濒辞驳蹿濒辞飞とは?
Fulfillment
● Cloud Functions
○ Dialogflowのコンソール上のエディタから直接Cloud Functionsの
コードを記述し、Webhookとして利用できる
顿颈补濒辞驳蹿濒辞飞とは?
アジェンダ
● 顿颈补濒辞驳蹿濒辞飞とは?
● 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

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