BackEnd

Rubyを使ってDialogflowのお勉強

投稿日:2017年11月15日 更新日:

はじめに

Google HomeやAmazon Echoなどが話題になっていますね。
私も欲しいんですが、Amazon Echoは11月現在、招待制でしか買えないようなので、どうしようかなと悩んでいます。

普段はWeb担当ですが、Web APIを利用してスマートデバイスで便利なこともやっていきたいです。
手始めにDialogflowの勉強をしてみました。
元はAPI.AIという名前でしたが、昨年Googleに買収されて名前が変わったようです。

こちらの方の記事を読んで、とりあえず試してみました。
まだDialogflowを使ったことがないという方には非常に分かりやすいかと思います。
自然言語処理を容易に実装できるDialogflow(旧:API.AI) を使ってみる

上記の記事を踏まえた上で、DialogflowのAPIを叩いてレスポンスを取得することを主眼にしていきます。
Rubyに、DialogflowのAPIを叩くGemがあるので、そちらのドキュメントを見ながら進めたいと思います。
https://github.com/dialogflow/dialogflow-ruby-client

環境

Rubyバージョンは2.4.2で、irbを使って確認しました。

とりあえずAPIで叩いてみる

テスト用のIntentを作成

Intents

Intentでは「このワード」だったら「こういうレスポンス」という流れを決めます。
今回はとりあえずのテストとして、「Nice to meet you」と受け取ったら、「Nice to meet you, too」と返すようにします。

色々設定できますが、「User says」と「Text response」を埋めておけばとりあえず大丈夫です。

Gemの設定

まずはアクセストークンを控えます。
Dialogflowのアプリ設定画面から取得します。

次に自分のRuby環境にて、Gemをインストールします。

とりあえず叩いてみましょう。
まずはクライアントの初期化です。

text_requestというメソッドを使用することで、単語を投げることができます。
「Nice to meet you」と投げてみます。

レスポンスの中を見てみると、ちゃんと「Nice to meet you, too」が返ってきていることが分かります。

次はわざと間違えてみます。

Eventについて

WELCOMEイベント

Events

Intentでは Eventを設定することができます。
APIで叩く際に、わざわざクエリ指定しなくてもイベント名で叩くことができます。

デフォルトでは、以下のウェルカムメッセージが用意されています。

  • WELCOME
  • GOOGLE_ASSISTANT_WELCOME
  • FACEBOOK_WELCOME
  • TELEGRAM_WELCOME
  • KIK_WELCOME
  • SLACK_WELCOME
  • SKYPE_WELCOME

それではWELCOMEというイベントを叩いてみます。

「こんにちは」というレスポンスが得られました。
特に何も設定していないので、FACEBOOK_WELCOMEだろうが、SLACK_WELCOMEだろうが、「こんにちは」と返ってきます。

パラメータ付きで叩く

リクエストする際に、user_nameのパラメータを渡し、「こんにちは、〇〇さん」と返してくれるようにしたいと思います。

新しくIntentを作ります。

注釈する項目としては、Actionでリクエストパラメータを設定できます。
PARAMETER NAMEで設定した名前をText responseで使用できます。
user_nameと設定したなら、$user_nameになります。

また、VALUEにはリクエストパラメータの場所を指定します。

叩いてみる

それでは実際に叩いてみます。
第一引数でイベント名、第二引数でパラメータを渡します。

parametersでリクエストパラメータが入っていることが分かります。
また、レスポンスではしっかりリクエストが反映されています。

さいごに

Contextについて

今回はあまり試さなかったのですが、Intentの中でContextと呼ばれるものを設定できます。
初めはよく分からなかったのですが、下記のSlackボットを作った記事を読んで、「一連の会話の流れ」を定義するものだと勝手に理解しています。
API.AIのコンテキストを使ってChatOps環境を作る

この辺は実際に何か作ってまたブログにしたいと思います。

page_footer_300rect




page_footer_300rect




-BackEnd

執筆者:


  1. [Dialogflow + CF] アクア様が罵倒してくれたり天気を教えてくれるSlackボットを作る – RE:ENGINES より:

    […] 過去の記事はこちら。 Rubyを使ってDialogflowのお勉強 […]

comment

メールアドレスが公開されることはありません。

CAPTCHA


関連記事

GoogleAppsScriptを使ってmBaaSの定期実行処理を実装する

1 はじめに1.1 簡単な状況説明1.2 定期実行を行う方法2 実装2.1 実装の流れ2.2 JavaScriptの実装2.3 スクリプトをアップロードする2.4 Google Apps Script ...

rails

Shrineをモデルに関連付けないで使用してハマったこと

1 はじめに2 アップロード時にリサイズする3 アップロード時のバリデーション4 アップロード時に古いファイルを削除する5 さいごに はじめに ShrineはRailsでのアップロードを簡単に行えるよ ...

rails

deviseを使ってユーザ登録フォームを作る

1 はじめに1.1 前提条件2 deviseについて2.1 deviseとは2.2 deviseでできること3 登録処理の実装3.1 Gemのインストール3.2 deviseのインストール3.3 デフ ...

rails

半年ぶりにRails Tutorialをやったメモ

はじめに Railsを触り始めて半年ほどたちました、tonnyです。 復習もかねてRails Tutorialを実施したので、そのメモを残します。 やはり2回目でも気づくことは多いので、非常に勉強にな ...

rails

Capistrano3でRailsアプリケーションをデプロイする

1 はじめに1.1 前提条件2 Cpistranoについて3 導入3.1 Gemのインストール3.2 設定ファイルの準備4 デプロイ設定4.1 Capfileを修正する4.2 各環境で共通のデプロイ設 ...

page_side_300rect

Web版MyCoach

私たちはより広い方にコーチングを知ってもらいたいと考えています。
下記のサイトにて、コーチの方々を紹介しておりますので、よろしければご覧ください。

アプリ情報

私たちは、目標を達成したい方を応援する、TODOアプリもリリースしております。
下記のアイコンから無料でダウンロードできます。

リンク

follow us in feedly
2017年11月
« 10月 12月 »
 1234
567891011
12131415161718
19202122232425
2627282930