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 1.23 でslicesとmapsに追加された関数

1 はじめに2 slicesパッケージに追加された関数2.1 All2.2 Backward2.3 Values2.4 AppendSeq2.5 Collect2.6 SortedFunc2.7 Ch ...

rails

Active Strageを使用してユーザーのアバターを登録、表示する

1 はじめに1.1 環境2 セットアップ2.1 前準備2.2 マイグレーションファイル作成2.3 設定ファイル3 実際に使って見る3.1 モデル3.2 コントローラー3.3 ビュー4 個人的メモ4.1 ...

新時代のPythonプロジェクト・パッケージ管理ツール「Rye」使ってみた

1 はじめに2 Ryeとは?3 Ryeを使ってみる3.1 Ryeのセットアップ3.2 仮想環境に入る3.3 依存パッケージの追加4 VSCodeから使ってみる5 さいごに6 おすすめ書籍 はじめに P ...

rails

Railsで複合主キーのテーブルを扱う

1 はじめに1.1 前提条件2 実装例2.1 config2.2 マイグレーション2.3 モデル3 さいごに はじめに RailsでWebサービスを開発する際のDB設計では基本的にidが主キーになると ...

rails

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

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

フォロー

blog-page_side_responsive

2017年11月
 1234
567891011
12131415161718
19202122232425
2627282930  

アプリ情報

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