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


関連記事

rails

ShrineでS3に画像をアップロードする

1 はじめに1.1 前提条件1.2 関連記事2 AWS側の準備2.1 S3バケットを作成する2.2 CORSを設定する2.3 アクセス用のユーザを作成する3 Rails側の設定3.1 Initiali ...

rails

RailsでSidekiqを使ってみた

1 はじめに1.1 実行環境2 前準備2.1 Redisのインストール3 Railsの準備3.1 プロジェクト作成3.2 新規登録時にAPIを叩く4 Sidekiqの準備4.1 Workerを作る5 ...

rails

私たちのFactoryGirlとRspecの使用ルール その1

1 はじめに2 そもそもなぜ基本ルールなどを作成しようとしたのか?3 Rspec編3.1 describe、context、itの階層で使用する3.2 10個以上のテストレコードを作成したい場合は、ト ...

rails

Rails Developer Meetup に参加してきました【2日目】

1 はじめに2 Rails Developer Meetup3 テストのないレガシーなRailsアプリをリファクタした話3.1 なぜリファクタリングしたのか3.2 コードを3種類に分類する3.3 モデ ...

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

1 はじめに2 Dialogflowの準備2.1 プロジェクトを作る2.2 Intentを作る2.3 試してみる2.4 WELCOME Intentを作る3 Slackボットを作る4 名前を答える5 ...

フォロー

follow us in feedly

AppLink

page_side_300rect

2017年11月
« 10月 12月 »
 1234
567891011
12131415161718
19202122232425
2627282930 

アプリ情報

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

Web版MyCoach

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