Techioz Blog

DialogFlow Ruby ブートの初期化されていない定数

概要

Web サイトでインタラクティブなチャット ボットを作成しようとしていますが、Ruby バックエンドを起動しようとするとエラーが発生し続けます。 Rubyを使うのは初めてなので、おかしな間違いはご容赦ください。 Ruby app.rb を実行すると、次のログが記録されます。

app.rb:7:in `<main>': uninitialized constant Google::Cloud::Dialogflow::CX::SessionsClient (NameError)

dialogflow = Google::Cloud::Dialogflow::CX::SessionsClient.new(credentials: 'resumechatbot-402917-c4515d65b60f.json')

現在、私のバックエンドは次のようになります。

require 'sinatra'
require 'sinatra/base'
require 'sinatra/reloader' if development?
require 'securerandom'
require 'google/cloud/dialogflow/cx'

dialogflow = Google::Cloud::Dialogflow::CX::SessionsClient.new(credentials: 'resumechatbot-402917-c4515d65b60f.json')
VUE_FRONTEND_DIR = File.expand_path(File.join(File.dirname(__FILE__), '..', 'vue-frontend', 'dist'))

class App < Sinatra::Base
  get '/' do
    File.read(File.join(VUE_FRONTEND_DIR, 'index.html'))
  end

  get '/js/*' do |path|
    send_file File.join(VUE_FRONTEND_DIR, 'js', path)
  end

  get '/css/*' do |path|
    send_file File.join(VUE_FRONTEND_DIR, 'css', path)
  end

  post '/dialogflow' do
    request_body = JSON.parse(request.body.read)
    user_message = request_body['message']

    session_id = SecureRandom.uuid

    begin
      response = dialogflow.detect_intent(
        session: "hardwiredRNsoIremoved",
        query_input: {
          text: {
            text: user_message,
            language_code: 'en-US',
          },
        },
      )

  
      bot_message = response.query_result.fulfillment_text
      { message: bot_message }.to_json
    rescue StandardError => e

      { error: e.message }.to_json
    end
  end
  
  run App.run!
end

次のすべての Gem がインストールされています。

*** LOCAL GEMS ***

abbrev (default: 0.1.1)
addressable (2.8.5)
ast (2.4.2)
backport (1.2.0)
base64 (default: 0.1.1)
benchmark (default: 0.2.1)
bigdecimal (default: 3.1.3)
bundler (default: 2.4.10)
cgi (default: 0.3.6)
csv (default: 3.2.6)
date (default: 3.3.3)
debug (1.7.1)
delegate (default: 0.3.0)
did_you_mean (default: 1.6.3)
diff-lcs (1.5.0)
digest (default: 3.1.1)
drb (default: 2.1.1)
e2mmap (0.1.0)
english (default: 0.7.2)
erb (default: 4.0.2)
error_highlight (default: 0.5.1)
etc (default: 1.4.2)
faraday (2.7.11)
faraday-net_http (3.0.2)
faraday-retry (2.2.0)
fcntl (default: 1.0.2)
fiddle (default: 1.1.1)
fileutils (default: 1.7.0)
find (default: 0.1.1)
forwardable (default: 1.3.3)
gapic-common (0.20.0)
getoptlong (default: 0.2.0)
google-cloud-core (1.6.0)
google-cloud-dialogflow-cx (1.0.0)
google-cloud-dialogflow-cx-v3 (0.22.0)
google-cloud-env (1.6.0)
google-cloud-errors (1.3.1)
google-cloud-location (0.6.0)
google-protobuf (3.24.4 x64-mingw-ucrt)
googleapis-common-protos (1.4.0)
googleapis-common-protos-types (1.9.0)
googleauth (1.8.1)
grpc (1.59.0 x64-mingw-ucrt)
io-console (default: 0.6.0)
io-nonblock (default: 0.2.0)
io-wait (default: 0.3.0)
ipaddr (default: 1.2.5)
irb (default: 1.6.2)
jaro_winkler (1.5.6)
json (default: 2.6.3)
jwt (2.7.1)
kramdown (2.4.0)
kramdown-parser-gfm (1.1.0)
language_server-protocol (3.17.0.3)
logger (default: 1.5.3)
matrix (0.4.2)
minitest (5.16.3)
multi_json (1.15.0)
mustermann (3.0.0)
mutex_m (default: 0.1.2)
net-ftp (0.2.0)
net-http (default: 0.3.2)
net-imap (0.3.4)
net-pop (0.1.2)
net-protocol (default: 0.2.1)
net-smtp (0.3.3)
nkf (default: 0.1.2)
nokogiri (1.15.4 x64-mingw-ucrt)
observer (default: 0.1.1)
open-uri (default: 0.3.0)
open3 (default: 0.1.2)
openssl (default: 3.1.0)
optparse (default: 0.3.1)
os (1.1.4)
ostruct (default: 0.5.5)
parallel (1.23.0)
parser (3.2.2.4)
pathname (default: 0.2.1)
power_assert (2.0.3)
pp (default: 0.4.0)
prettyprint (default: 0.1.1)
prime (0.1.2)
pstore (default: 0.1.2)
psych (default: 5.0.1)
public_suffix (5.0.3)
racc (1.7.1, default: 1.6.2)
rack (2.2.8)
rack-protection (3.1.0)
rainbow (3.1.1)
rake (13.0.6)
rbs (2.8.2)
rdoc (default: 6.5.0)
readline (default: 0.0.3)
regexp_parser (2.8.2)
reline (default: 0.3.2)
resolv (default: 0.2.2)
resolv-replace (default: 0.1.1)
reverse_markdown (2.1.1)
rexml (3.2.5)
rinda (default: 0.1.1)
rss (0.2.9)
rubocop (1.57.1)
rubocop-ast (1.29.0)
ruby-progressbar (1.13.0)
ruby2_keywords (default: 0.0.5)
securerandom (default: 0.2.2)
set (default: 1.0.3)
shellwords (default: 0.1.0)
signet (0.18.0)
sinatra (3.1.0)
sinatra-contrib (3.1.0)
singleton (default: 0.1.1)
solargraph (0.49.0)
stringio (default: 3.0.4)
strscan (default: 3.0.5)
syntax_suggest (default: 1.0.2)
tempfile (default: 0.1.3)
test-unit (3.5.7)
thor (1.3.0)
tilt (2.3.0)
time (default: 0.2.2)
tmpdir (default: 0.1.3)
tsort (default: 0.1.1)
typeprof (0.21.3)
un (default: 0.2.1)
unicode-display_width (2.5.0)
uri (default: 0.12.1)
weakref (default: 0.1.2)
webrick (1.8.1)
win32ole (default: 1.8.9)
yaml (default: 0.2.1)
yard (0.9.34)
zlib (default: 3.0.0)

なぜこれが起こり続けるのかわかる人はいますか?情報が不足している場合は、お気軽にご連絡ください。できるだけ早くお答えします。ありがとう!!

解決策

GOOGLE_APPLICATION_CREDENTIALS 環境変数に認証情報のパスを設定してみますか?

ドキュメントは次のとおりです。 https://translate.google.com/translate?hl=ja&sl=en&tl=ja&u=https://cloud.google.com/docs/authentication/application-default-credentials