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環境を作る

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

blog-page_footer_336




blog-page_footer_336




-BackEnd
-,

執筆者:

免責事項

このブログは、記事上部に記載のある投稿日時点の一般的な情報を提供するものであり、投資等の勧誘・法的・税務上の助言を提供するものではありません。仮想通貨の投資・損益計算は複雑であり、個々の取引状況や法律の変更によって異なる可能性があります。ブログに記載された情報は参考程度のものであり、特定の状況に基づいた行動の決定には専門家の助言を求めることをお勧めします。当ブログの情報に基づいた行動に関連して生じた損失やリスクについて、筆者は責任を負いかねます。最新の法律や税務情報を確認し、必要に応じて専門家に相談することをお勧めします。


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


関連記事

Go言語

Go言語 gocraft/workを使って常駐プロセスでジョブを処理させる

1 はじめに2 workの特徴3 workを使えるようにする3.1 Redisのインストール3.2 Go用のライブラリインストール4 Enqueue〜ジョブ実行まで4.1 Enqueue側4.2 ジョ ...

laravel logo

[Laravel]データベースの暗号化について考えてみる

1 はじめに2 環境3 Laravelでの暗号化4 暗号化されたカラムは、そのままではLIKE検索ができない4.1 問題点4.2 解決案1:全件取得してPHP側でがんばって検索する4.3 解決案2:暗 ...

Go言語

Go言語、ゴルーチン(goroutine)で並列処理を

1 はじめに2 ゴルーチン2.1 go文2.2 ゴルーチンの終了条件2.3 WaitGroup3 チャネル3.1 チャネルの型3.2 チャネルの生成3.3 チャネルの送受信3.4 チャネルとゴルーチン ...

Rust入門してみた (基本構文編)

1 はじめに2 Rustとは?3 Rustの特徴的な基本構文3.1 変数と定数3.2 所有権3.3 所有権の借用3.4 関数3.5 エラーハンドリング3.5.1 回復不能なエラー(panic!)3.5 ...

laravel logo

Laravel Admin でCSVインポートを実装する

1 はじめに2 下準備2.1 Laravel Adminの導入2.2 Laravel Excelの導入3 Laravel Excelの実装3.1 Importクラスの作成3.2 モデルのfillabl ...

フォロー

blog-page_side_responsive

2017年11月
 1234
567891011
12131415161718
19202122232425
2627282930  

アプリ情報

私たちは無料アプリもリリースしています、ぜひご覧ください。 下記のアイコンから無料でダウンロードできます。